安装 wordpress(LAMP)

under apache mysql wordpress

in tech

Published: 2019-06-09

安装 wordpress(LAMP)

在 Debian 9 amd64 上测试成功。

安装和配置 LAMP

MySQL

输入以下命令安装 mysql-server:

sudo apt-get install mysql-server

安装完成后,运行以下命令进行安全设置:

sudo mysql_secure_installation

以 root 身份启动 mysql 命令行:

sudo mysql -u root -p

创建和设置 wordpress 数据库和及其用户(替换 <> 中的内容):

CREATE DATABASE <DB_NAME> DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;

GRANT ALL PRIVILEGES ON <DB_NAME>.* TO "<DB_USER>"@"localhost" IDENTIFIED BY "<DB_PASSWORD>";

FLUSH PRIVILEGES;

根据这篇讨论,应该使用 utf8mb4 字符集和 utf8mb4_unicode_ci。

php

安装 php 以及基本模块:

sudo apt-get install php libapache2-mod-php php-mcrypt php-mysql

安装常用的 php 扩展:

sudo apt-get install php-curl php-gd php-mbstring php-xml php-xmlrpc

apache

输入以下命令安装 apache2:

sudo apt-get install apache2

设置 wordpress

下载最新的 wordpress(目前是5.1.1)。将 wordpress 解压到 /path/to/wordpress,确保顶级 index.php 脚本位于该目录下。

wget -O - https://wordpress.org/latest.tar.gz | tar zxf -

配置 wordpress

进入 /path/to/wordpress 目录,将 wp-config-sample.php 重命名为 wp-config.php,将 DB_NAMEDB_USERDB_PASSWORDDB_HOSTDB_CHARSETDB_COLLATE 修改为 MySQL 数据库中设置的值。

然后访问 https://api.wordpress.org/secret-key/1.1/salt,用这个网页生成的随机代码替换配置文件中的相应内容:

define( 'AUTH_KEY',         'put your unique phrase here' );
define( 'SECURE_AUTH_KEY',  'put your unique phrase here' );
define( 'LOGGED_IN_KEY',    'put your unique phrase here' );
define( 'NONCE_KEY',        'put your unique phrase here' );
define( 'AUTH_SALT',        'put your unique phrase here' );
define( 'SECURE_AUTH_SALT', 'put your unique phrase here' );
define( 'LOGGED_IN_SALT',   'put your unique phrase here' );
define( 'NONCE_SALT',       'put your unique phrase here' );

允许 wordpress 修改站点目录的内容

将 wordpress 目录下的所有目录和文件的用户组设置为 www-data:

sudo chown -R <USER>:www-data /path/to/wordpress

确保 wordpress 目录下新创建的文件和目录的用户组是 www-data:

sudo find /path/to/wordpress/wp-{admin,content,includes} -type d -exec chmod g+s {} \;

允许 www-data 组的用户在 wp-content 下创建和删除文件或目录:

sudo find /path/to/wordpress/wp-content -type d -exec chmod g+w {} \;

设置 wordpress 直接读写文件系统,在 wp-config.php 末尾加上:

define('FS_METHOD', 'direct');

但是根据 wordpress 文档,此为默认设置。

启用 .htaccess 配置

wordpress 用 .htaccess 来实现子目录级别的配置,例如实现更加友好的 Permalink。在网站的管理员不能直接修改 apache 配置的情况下,可以用这种方式来设置其网站。但这种方式也带来性能开支,所以 nginx 没有采用wordpress 文档列出了使用 nginx 作为 web 服务器带来的限制。

在 wordpress 目录下添加 .htaccess 文件:

touch /path/to/wordpress/.htaccess
sudo chown <USER>:www-data /path/to/wordpress/.htaccess
chmod 660 $HT_PATH

修改 wordpress 目录的安全设置,在 /etc/apache2/apache2.conf 文件中添加以下语句:

<Directory /path/to/wordpress/>
    Options Indexes FollowSymLinks
    AllowOverride All
    Require all granted
</Directory>

确保 apache2 的 rewrite 模块已经启用:

sudo a2enmod rewrite

重启 apache2 服务来应用修改:

sudo systemctl restart apache2

启用 wordpress 站点

修改 apache2 站点配置指向 /path/to/wordpress 目录:

<VirtualHost *:80>
    DocumentRoot /path/to/wordpress
</VirtualHost>

重启 apache2 服务来应用修改:

sudo systemctl restart apache2

升级 wordpress

创建 wordpress 升级目录 /path/to/wordpress/wp-content/upgrade:

mkdir /path/to/wordpress/wp-content/upgrade
chmod g+w /path/to/wordpress/wp-content/upgrade
sudo chown <USER>:www-data /path/to/wordpress/wp-content/upgrade

当有可用更新时,将 wordpress 目录及其所有内容的用户设置为 www-data:

sudo chown -R www-data /path/to/wordpress

更新完成后再将改回原来的用户名:

sudo chown -R <USER> /path/to/wordpress

参考资料