介绍
WordPress 是一种非常流行的开源技术,用于在当今互联网上制作网站和博客。63% 的使用内容管理系统 (CMS) 的网站使用 WordPress 网站,占当前所有在线网站的 36%。
有许多不同的方法可以访问 WordPress,并且某些设置过程比其他过程更复杂。本教程适用于希望通过命令行在非托管云服务器上安装和管理 WordPress 实例的人员。尽管这种方法需要比现成的 WordPress 安装更多的步骤,但它为管理员提供了对其 WordPress 环境的更大控制。
如果您想访问现成的 WordPress 安装,DigitalOcean Marketplace 提供一键式应用程序,让您在启动服务器时通过安装开始使用 WordPress。
根据您的需求和目标,您可能会找到其他更合适的选项。作为开源软件,WordPress 可以免费下载和安装,但要在网络上使用,您可能需要购买云基础设施和域名。如果您有兴趣完成服务器端安装和 WordPress 站点的设置,请继续遵循本指南。
本教程将使用 LAMP(L inux、A pache、M ySQL 和P HP)堆栈,这是通过提供 Linux 操作系统、Apache Web 服务器、MySQL 数据库和 PHP 来支持 WordPress 的服务器架构的一种选择编程语言。我们将在 Linux Ubuntu 20.04 服务器上通过 LAMP 安装和设置 WordPress。
先决条件
为了完成本教程,您需要访问 Ubuntu 20.04 服务器,并且需要在开始本指南之前完成以下步骤:
- 按照我们的Ubuntu 20.04 初始服务器设置指南设置您的服务器,并确保您拥有非 root
sudo
用户。 - 按照我们的LAMP 指南安装和配置此软件,安装LAMP 堆栈。
- 保护您的网站:WordPress 接收用户输入并存储用户数据,因此拥有一层安全保护非常重要。TLS/SSL 是一种技术,可让您对来自您站点的流量进行加密,从而确保您和您的用户的连接安全。您可以使用以下两种选择来满足此要求:
- 如果您有域名……您可以使用 Let’s Encrypt 来保护您的站点,它提供免费、可信的证书。按照我们的 Apache 加密指南进行设置。
- 如果您没有域……而您只是将此配置用于测试或个人用途,则可以改用自签名证书。这提供了相同类型的加密,但没有域验证。按照我们针对 Apache 的自签名 SSL 指南进行设置。
完成设置步骤后,以您的sudo
用户身份登录服务器并继续下面的操作。
步骤 1 — 为 WordPress 创建 MySQL 数据库和用户
我们将采取的第一步是准备工作。WordPress 使用 MySQL 来管理和存储站点和用户信息。我们已经安装了 MySQL,但是我们需要为 WordPress 制作一个数据库和一个用户。
首先,通过发出以下命令登录 MySQL root(管理)帐户(请注意,这不是您服务器的 root 用户):
- mysql -u root -p
安装软件时,系统将提示您输入为 MySQL root 帐户设置的密码。
注意:如果您无法通过 root 访问 MySQL 数据库,作为sudo
用户,您可以通过登录数据库来更新您的 root 用户的密码,如下所示:
- sudo mysql -u root
收到 MySQL 提示后,您可以更新 root 用户的密码。在这里,替换new_password
为您选择的强密码。
- ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'new_password';
您现在可以输入EXIT;
并使用以下命令通过密码重新登录数据库:
- mysql -u root -p
在数据库中,我们可以创建一个专属的数据库供 WordPress 控制。您可以随意称呼它,但我们将在本指南中使用名称wordpress。通过键入以下内容为 WordPress 创建数据库:
- CREATE DATABASE wordpress DEFAULT CHARACTER SET utf8 COLLATE utf8_unicode_ci;
注意:每个 MySQL 语句都必须以分号 ( ;
)结尾。如果您遇到任何问题,请检查以确保它存在。
接下来,我们将创建一个单独的 MySQL 用户帐户,专门用于操作我们的新数据库。创建特定的数据库和帐户可以从管理和安全的角度支持我们。我们将在本指南中使用名称wordpressuser,但您可以随意使用与您相关的任何名称。
我们将创建此帐户,设置密码,并授予对我们创建的数据库的访问权限。我们可以通过键入以下命令来做到这一点。请记住在此处为您的数据库用户选择一个强密码,我们拥有password
:
- CREATE USER 'wordpressuser'@'%' IDENTIFIED WITH mysql_native_password BY 'password';
接下来,让数据库知道我们的wordpressuser应该可以完全访问我们设置的数据库:
- GRANT ALL ON wordpress.* TO 'wordpressuser'@'%';
您现在拥有一个数据库和用户帐户,每个帐户都是专门为 WordPress 制作的。我们需要刷新权限,以便 MySQL 的当前实例知道我们最近所做的更改:
- FLUSH PRIVILEGES;
键入以下命令退出 MySQL:
- EXIT;
在下一步中,我们将通过为我们的服务器下载 PHP 扩展来为 WordPress 插件奠定一些基础。
步骤 2 — 安装额外的 PHP 扩展
在设置 LAMP 堆栈时,我们只需要一组非常少的扩展即可让 PHP 与 MySQL 通信。WordPress 及其许多插件利用了额外的 PHP 扩展。
我们可以通过键入以下内容来下载并安装一些最流行的 PHP 扩展以用于 WordPress:
- sudo apt update
- sudo apt install php-curl php-gd php-mbstring php-xml php-xmlrpc php-soap php-intl php-zip
这将为在我们的 WordPress 网站中安装其他插件奠定基础。
注意:每个 WordPress 插件都有自己的一套要求。有些可能需要安装额外的 PHP 包。检查您的插件文档以发现其 PHP 要求。如果它们可用,则可以按apt
上述方式安装它们。
我们需要重启 Apache 来加载这些新的扩展,下一节我们会在 Apache 上做更多的配置,所以你可以等到那时,或者现在重启来完成 PHP 扩展过程。
- sudo systemctl restart apache2
步骤 3 — 调整 Apache 的配置以允许 .htaccess 覆盖和重写
接下来,我们将对我们的 Apache 配置进行一些小的调整。根据必备教程,您应该在/etc/apache2/sites-available/
目录中拥有站点的配置文件。
在本指南中,我们将在此处用作示例,但您应该在适当的情况下替换配置文件的路径。此外,我们将用作 WordPress 安装的根目录。您应该使用在您自己的配置中指定的 Web 根。如果您遵循了我们的LAMP 教程,那么在这两种情况下,它可能都是您的域名。/etc/apache2/sites-available/wordpress.conf
/var/www/wordpress
wordpress
注意:您可能正在使用000-default.conf
默认配置(/var/www/html
作为您的 Web 根)。如果您只想在此服务器上托管一个网站,则可以使用此方法。如果没有,最好将必要的配置拆分为逻辑块,每个站点一个文件。
确定我们的路径后,我们可以继续使用,.htaccess
以便 Apache 可以在每个目录的基础上处理配置更改。
启用 .htaccess 覆盖
目前,.htaccess
禁用文件的使用。WordPress 和许多 WordPress 插件广泛使用这些文件来对 Web 服务器的行为进行目录内调整。
使用文本编辑器(如 nano)打开您网站的 Apache 配置文件。
- sudo nano /etc/apache2/sites-available/wordpress.conf
为了允许.htaccess
文件,我们需要AllowOverride
在Directory
指向我们文档根目录的块中设置指令。VirtualHost
在配置文件的块中添加以下文本块,确保使用正确的 Web 根目录:
<Directory /var/www/wordpress/>
AllowOverride All
</Directory>
完成后,保存并关闭文件。在 nano 中,您可以通过同时按下CTRL
和X
,然后Y
,然后来完成此操作ENTER
。
启用重写模块
接下来,我们可以启用mod_rewrite
以便我们可以利用 WordPress 永久链接功能:
- sudo a2enmod rewrite
这使您可以为您的帖子提供更多人类可读的永久链接,例如以下两个示例:
http://example.com/2012/post-name/
http://example.com/2012/12/30/post-name
该a2enmod
命令调用一个脚本来启用 Apache 配置中的指定模块。
启用更改
在我们实施我们所做的更改之前,请通过运行以下测试来检查以确保我们没有犯任何语法错误。
- sudo apache2ctl configtest
您可能会收到如下输出:
OutputAH00558: apache2: Could not reliably determine the server's fully qualified domain name, using 127.0.1.1. Set the 'ServerName' directive globally to suppress this message
Syntax OK
如果您希望取消顶行,只需ServerName
在您的主(全局)Apache 配置文件中添加一个指令/etc/apache2/apache2.conf
。本ServerName
可以成为你的服务器的域名或IP地址。然而,这只是一条消息,不会影响您网站的功能。只要输出包含Syntax OK
,您就可以继续。
重新启动 Apache 以实施更改。即使您已经在本教程的前面重新启动,也请确保现在重新启动。
- sudo systemctl restart apache2
接下来,我们将下载并设置 WordPress 本身。
第 4 步 — 下载 WordPress
现在我们的服务器软件已经配置好了,我们可以下载和设置 WordPress。特别是出于安全原因,始终建议从他们的站点获取最新版本的 WordPress。
切换到一个可写的目录(我们推荐一个像 的临时目录/tmp
)并下载压缩版本。
- cd /tmp
- curl -O https://wordpress.org/latest.tar.gz
解压压缩文件以创建 WordPress 目录结构:
- tar xzvf latest.tar.gz
我们将暂时将这些文件移动到我们的文档根目录中。在此之前,我们可以添加一个虚拟.htaccess
文件,以便 WordPress 稍后使用。
通过键入以下内容创建文件:
- touch /tmp/wordpress/.htaccess
我们还将示例配置文件复制到 WordPress 读取的文件名:
- cp /tmp/wordpress/wp-config-sample.php /tmp/wordpress/wp-config.php
我们还可以创建upgrade
目录,以便 WordPress 在更新其软件后尝试自行执行此操作时不会遇到权限问题:
- mkdir /tmp/wordpress/wp-content/upgrade
现在,我们可以将目录的全部内容复制到我们的文档根目录中。我们在源目录末尾使用一个点来表示目录中的所有内容都应该被复制,包括隐藏文件(如.htaccess
我们创建的文件):
- sudo cp -a /tmp/wordpress/. /var/www/wordpress
确保将目录替换为您在服务器上设置的目录。/var/www/wordpress
第 5 步 – 配置 WordPress 目录
在我们进行基于 Web 的 WordPress 设置之前,我们需要调整 WordPress 目录中的一些项目。
调整所有权和权限
我们需要完成的一个重要步骤是设置合理的文件权限和所有权。
我们首先将所有文件的所有权授予www-data用户和组。这是运行 Apache Web 服务器的用户,Apache 需要能够读写 WordPress 文件才能为网站提供服务并执行自动更新。
使用chown
允许您修改文件所有权的命令更新所有权。请务必指向您的服务器的相关目录。
- sudo chown -R www-data:www-data /var/www/wordpress
接下来,我们将运行两个find
命令来为 WordPress 目录和文件设置正确的权限:
- sudo find /var/www/wordpress/ -type d -exec chmod 750 {} \;
- sudo find /var/www/wordpress/ -type f -exec chmod 640 {} \;
这些权限应该可以让您有效地使用 WordPress,但请注意,某些插件和程序可能需要额外的调整。
设置 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配置文件:
- sudo nano /var/www/wordpress/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 凭据。
此设置可以添加到数据库连接设置下方或文件中的任何其他位置:
. . .
// ** MySQL settings - You can get this info from your web host ** //
/** The name of the database for WordPress */
define( 'DB_NAME', 'wordpress' );
/** MySQL database username */
define( 'DB_USER', 'wordpressuser' );
/** MySQL database password */
define( 'DB_PASSWORD', 'password' );
/** MySQL hostname */
define( 'DB_HOST', 'localhost' );
/** Database Charset to use in creating database tables. */
define( 'DB_CHARSET', 'utf8' );
/** The Database Collate type. Don't change this if in doubt. */
define( 'DB_COLLATE', '' );
. . .
define('FS_METHOD', 'direct');
完成后保存并关闭文件。
步骤 6 — 通过 Web 界面完成安装
至此服务器配置完成,我们就可以通过web界面完成安装了。
在您的 Web 浏览器中,导航到您服务器的域名或公共 IP 地址:
https://server_domain_or_IP
选择您要使用的语言:
接下来,您将进入主设置页面。
为您的 WordPress 网站选择一个名称并选择一个用户名。出于安全目的,建议选择独特的名称并避免使用常见的用户名,例如“admin”。强密码是自动生成的。保存此密码或选择其他强密码。
输入您的电子邮件地址并选择是否要阻止搜索引擎将您的网站编入索引:
当您点击前进时,您将被带到一个提示您登录的页面:
登录后,您将被带到 WordPress 管理仪表板:
此时,您可以开始设计您的 WordPress 网站了!如果这是您第一次使用 WordPress,请稍微探索一下界面以熟悉您的新 CMS。
结论
恭喜,WordPress 现已安装完毕,可以使用了!
此时,您可能想要开始执行以下操作:
- 为 WordPress 帖子选择永久链接设置,可在
Settings > Permalinks
. - 在 中选择一个新主题
Appearance > Themes
。 - 安装新插件以在
Plugins > Add New
. - 如果您要与他人协作,此时您可能还希望在 下添加其他用户
Users > Add New
。
通过查看我们的WordPress 社区标签,您可以找到有关安装 WordPress 的替代方法的其他资源,了解如何在不同的服务器发行版上安装 WordPress,自动化您的 WordPress 安装,以及扩展您的 WordPress 站点。