介绍
WordPress是互联网上最流行的CMS(内容管理系统)。 它允许您轻松地在PHP处理的MySQL后端设置灵活的博客和网站。 WordPress已经看到令人难以置信的采用,是一个伟大的选择,使网站快速运行。 安装后,几乎所有的管理都可以通过web前端完成。
在本指南中,我们将重点介绍在Ubuntu 16.04服务器上的LEMP(Linux,Nginx,MySQL和PHP)上设置WordPress实例。
先决条件
为了完成本教程,您将需要访问Ubuntu 16.04服务器。
在开始本指南之前,您需要执行以下任务:
- 创建一个
sudo
服务器上的用户 :我们将用非root用户来完成本指南中的步骤sudo
特权。 您可以创建一个用户sudo
按照我们的权限的Ubuntu 16.04服务器初始设置指南 。 - 安装LEMP :WordPress会需要一个Web服务器,数据库和PHP才能正常工作。 设置LEMP(Linux,Nginx,MySQL和PHP)满足所有这些要求。 按照本指南安装和配置这个软件。
- 与SSL安全网站 :WordPress的提供动态内容和处理用户身份验证和授权。 TLS / SSL是一种允许您加密来自您网站的流量以使您的连接安全的技术。 设置SSL的方式取决于您是否拥有网站的域名。
- 如果你有一个域名......,以确保您的网站的最简单的方法是让我们的加密,它提供免费的,受信任的证书。 按照我们让我们的加密指南Nginx的设置此。
- 如果你没有一个域...你只是使用测试或个人使用此配置,您可以使用自签名证书来代替。 这提供了相同类型的加密,但没有域验证。 按照我们的自签名的SSL指南的Nginx才能完成设置。
当您完成安装步骤,登录到你的服务器作为你的sudo
用户,并在下面继续。
第1步:为WordPress创建MySQL数据库和用户
我们将采取的第一步是准备。 WordPress使用MySQL来管理和存储网站和用户信息。 我们已经安装了MySQL,但是我们需要为WordPress创建一个数据库和一个用户。
要开始,请通过发出以下命令登录MySQL根(管理)帐户:
mysql -u root -p
在安装软件时,将提示您输入为MySQL root帐户设置的密码。
首先,我们可以创建一个单独的数据库,WordPress可以控制。 您可以拨打这个不管你想,但我们将使用wordpress
本指南中保持简单。 您可以通过键入以下内容为WordPress创建数据库:
CREATE DATABASE wordpress DEFAULT CHARACTER SET utf8 COLLATE utf8_unicode_ci;
接下来,我们将创建一个单独的MySQL用户帐户,我们将专门使用它来操作我们的新数据库。 从管理和安全的角度来看,创建单功能数据库和帐户是一个好主意。 我们将使用名称wordpressuser
本指南的 如果你愿意,随时改变这个。
我们将创建此帐户,设置密码,并授予对我们创建的数据库的访问权限。 我们可以通过键入以下命令来执行此操作。 记住在这里为您的数据库用户选择一个强密码:
GRANT ALL ON wordpress.* TO 'wordpressuser'@'localhost' IDENTIFIED BY 'password';
您现在有一个数据库和用户帐户,每个专门为WordPress。 我们需要刷新权限,以便MySQL的当前实例了解我们最近所做的更改:
FLUSH PRIVILEGES;
通过键入以下命令退出MySQL:
EXIT;
第2步:调整Nginx的配置以正确处理WordPress
接下来,我们将对Nginx服务器块文件进行一些细微的调整。
打开默认的服务器块文件sudo
特权开始:
sudo nano /etc/nginx/sites-available/default
在主server
块,我们需要增加一些location
街区。
通过为请求创建精确匹配的位置开始块/favicon.ico
和/robots.txt
,这两者我们不希望记录的请求。
我们将使用正则表达式位置来匹配对静态文件的任何请求。 我们将再次关闭这些请求的日志记录,并将它们标记为高度可缓存,因为这些通常是昂贵的服务资源。 您可以调整此静态文件列表,以包含您网站可能使用的任何其他文件扩展名:
server {
. . .
location = /favicon.ico { log_not_found off; access_log off; }
location = /robots.txt { log_not_found off; access_log off; allow all; }
location ~* \.(css|gif|ico|jpeg|jpg|js|png)$ {
expires max;
log_not_found off;
}
. . .
}
里面的现有location /
块,我们需要调整try_files
这样,而不是返回404错误作为默认选项,控制被传递到列表中index.php
与请求的参数文件。
这应该看起来像这样:
server {
. . .
location / {
#try_files $uri $uri/ =404;
try_files $uri $uri/ /index.php$is_args$args;
}
. . .
}
完成后,保存并关闭文件。
现在,我们可以通过键入以检查我们的配置是否有语法错误:
sudo nginx -t
如果没有报告错误,请通过键入以下命令重新加载Nginx:
sudo systemctl reload nginx
第3步:安装其他PHP扩展
当设置我们的LEMP,我们只需要一个非常小的扩展集,以使PHP与MySQL通信。 WordPress和其许多插件使用额外的PHP扩展。
我们可以下载并安装一些最流行的PHP扩展,使用WordPress通过键入:
sudo apt-get update
sudo apt-get install php-curl php-gd php-mbstring php-mcrypt php-xml php-xmlrpc
apt-get
正如上面展示。
完成安装扩展后,重新启动PHP-FPM进程,以便运行的PHP处理器可以利用新安装的功能:
sudo systemctl restart php7.0-fpm
第4步:下载WordPress
现在我们的服务器软件已配置,我们可以下载并设置WordPress。 出于安全原因,总是建议从他们的网站获取最新版本的WordPress。
切换到可写目录,然后键入以下内容下载压缩版本:
cd /tmp
curl -O https://wordpress.org/latest.tar.gz
解压缩压缩文件以创建WordPress目录结构:
tar xzvf latest.tar.gz
我们将会立即将这些文件移动到我们的文档根。 在我们这样做之前,我们可以将示例配置文件复制到WordPress实际读取的文件名:
cp /tmp/wordpress/wp-config-sample.php /tmp/wordpress/wp-config.php
我们也可以创建upgrade
的目录,让试图做到这一点对自己的更新其软件时之后WordPress会不会碰到权限问题:
mkdir /tmp/wordpress/upgrade
现在,我们可以将目录的全部内容复制到我们的文档根目录中。 我们使用-a
标志,以确保我们的权限得以维持。 我们在源目录的末尾使用一个点来表示目录中的所有内容都应该被复制,包括任何隐藏的文件:
sudo cp -a /tmp/wordpress/. /var/www/html
第5步:配置WordPress目录
在我们进行基于Web的WordPress安装之前,我们需要调整WordPress目录中的一些项目。
调整所有权和权限
我们需要完成的一件大事是设置合理的文件权限和所有权。 我们需要能够以普通用户身份写入这些文件,并且我们需要Web服务器也能够访问和调整某些文件和目录,以便正常运行。
我们首先将文档根目录中的所有文件的所有权分配给我们的用户名。 我们将使用sammy
作为我们本指南中的用户名,但你应该改变这种以匹配无论你的sudo
用户被调用。 我们将指派组所有权的www-data
组:
sudo chown -R sammy:www-data /var/www/html
接下来,我们将设置setgid
每个文档根目录中的目录位。 这将导致这些目录中创建继承该组的父目录(我们刚刚成立的新文件www-data
代替)的创建用户的主组。 这只是确保每当我们在命令行上的目录中创建一个文件时,Web服务器仍然具有组所有权。
我们可以设置setgid
对打字在我们的WordPress安装的每个目录位:
sudo find /var/www/html -type d -exec chmod g+s {} \;
还有一些其他细粒度的权限,我们会调整。 首先,我们给组写访问wp-content
目录,以便Web界面可以使主题和插件的变化:
sudo chmod g+w /var/www/html/wp-content
作为此过程的一部分,我们将给Web服务器写入这两个目录中的所有内容的访问权限:
sudo chmod -R g+w /var/www/html/themes
sudo chmod -R g+w /var/www/html/plugins
这应该是一个合理的权限设置开始。 某些插件和过程可能需要进行额外的调整。
设置WordPress配置文件
现在,我们需要对主要的WordPress配置文件进行一些更改。
当我们打开文件时,我们的第一个业务订单将是调整一些密钥,为我们的安装提供一些安全性。 WordPress为这些值提供了一个安全的生成器,所以你不必试图提出自己的好的值。 这些仅在内部使用,因此它不会伤害在这里有复杂,安全的值的可用性。
要从WordPress秘密密钥生成器获取安全值,请键入:
curl -s https://api.wordpress.org/secret-key/1.1/salt/
你会得到看起来像这样的唯一值:
Outputdefine('AUTH_KEY', '1jl/vqfs<XhdXoAPz9 DO NOT COPY THESE VALUES c_j{iwqD^<+c9.k<J@4H');
define('SECURE_AUTH_KEY', 'E2N-h2]Dcvp+aS/p7X DO NOT COPY THESE VALUES {Ka(f;rv?Pxf})CgLi-3');
define('LOGGED_IN_KEY', 'W(50,{W^,OPB%PB<JF DO NOT COPY THESE VALUES 2;y&,2m%3]R6DUth[;88');
define('NONCE_KEY', 'll,4UC)7ua+8<!4VM+ DO NOT COPY THESE VALUES #`DXF+[$atzM7 o^-C7g');
define('AUTH_SALT', 'koMrurzOA+|L_lG}kf DO NOT COPY THESE VALUES 07VC*Lj*lD&?3w!BT#-');
define('SECURE_AUTH_SALT', 'p32*p,]z%LZ+pAu:VY DO NOT COPY THESE VALUES C-?y+K0DK_+F|0h{!_xY');
define('LOGGED_IN_SALT', 'i^/G2W7!-1H2OQ+t$3 DO NOT COPY THESE VALUES t6**bRVFSD[Hi])-qS`|');
define('NONCE_SALT', 'Q6]U:K?j4L%Z]}h^q7 DO NOT COPY THESE VALUES 1% ^qUswWgn+6&xqHN&%');
这些是配置行,我们可以直接在我们的配置文件中粘贴以设置安全密钥。 复制您现在接收的输出。
现在,打开WordPress配置文件:
nano /var/www/html/wp-config.php
找到包含这些设置的虚拟值的部分。 它看起来像这样:
. . .
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');
. . .
删除这些行并粘贴从命令行复制的值:
. . .
define('AUTH_KEY', 'VALUES COPIED FROM THE COMMAND LINE');
define('SECURE_AUTH_KEY', 'VALUES COPIED FROM THE COMMAND LINE');
define('LOGGED_IN_KEY', 'VALUES COPIED FROM THE COMMAND LINE');
define('NONCE_KEY', 'VALUES COPIED FROM THE COMMAND LINE');
define('AUTH_SALT', 'VALUES COPIED FROM THE COMMAND LINE');
define('SECURE_AUTH_SALT', 'VALUES COPIED FROM THE COMMAND LINE');
define('LOGGED_IN_SALT', 'VALUES COPIED FROM THE COMMAND LINE');
define('NONCE_SALT', 'VALUES COPIED FROM THE COMMAND LINE');
. . .
接下来,我们需要在文件开头修改一些数据库连接设置。 您需要调整数据库名称,数据库用户和我们在MySQL中配置的关联密码。
我们需要做的另一个更改是设置WordPress应该用来写入文件系统的方法。 由于我们已经赋予web服务器在需要的地方写入权限,我们可以显式地将文件系统方法设置为“direct”。 未能使用我们当前的设置设置这将导致WordPress提示FTP凭据时,我们执行一些操作。
此设置可以添加到数据库连接设置下面或文件中的任何其他位置:
. . .
define('DB_NAME', 'wordpress');
/** MySQL database username */
define('DB_USER', 'wordpressuser');
/** MySQL database password */
define('DB_PASSWORD', 'password');
. . .
define('FS_METHOD', 'direct');
保存并在完成后关闭文件。
第6步:通过Web界面完成安装
现在服务器配置完成后,我们可以通过Web界面完成安装。
在Web浏览器中,导航到您的服务器的域名或公共IP地址:
http://server_domain_or_IP
选择您要使用的语言:
接下来,您将进入主设置页面。
选择您的WordPress网站的名称,并选择一个用户名(为安全起见,建议不要选择类似“admin”的东西)。 将自动生成强密码。 保存此密码或选择其他强密码。
输入您的电子邮件地址,并选择是否要阻止搜索引擎将您的网站编入索引:
当您点击提前,您将被带到一个页面,提示您登录:
一旦登录,您将被带到WordPress管理仪表板:
升级WordPress
由于WordPress升级可用,您将无法通过当前权限通过界面安装他们。
我们在这里选择的权限旨在提供在升级之间的99%的时间的安全性和可用性之间的良好平衡。 但是,它们对软件自动应用更新有点过于限制。
当更新可用时,重新登录到您的服务器作为sudo
用户。 临时授予Web服务器进程对整个文档根目录的访问权限:
sudo chown -R www-data /var/www/html
现在,返回WordPress管理面板并应用更新。
完成后,请再次锁定权限以确保安全:
sudo chown -R sammy /var/www/html
这应该只有在应用升级到WordPress本身时是必要的。
结论
WordPress应该安装并准备使用! 一些常见的下一步是选择固定链接设置您的文章(中可以找到Settings > Permalinks
或选择一个新的主题(在) Appearance > Themes
)。 如果这是你第一次使用WordPress,探索接口一点,以熟悉你的新CMS。