如何在Ubuntu 18.04上使用托管数据库安装WordPress

WordPress是互联网上最受欢迎的CMS(内容管理系统)。它允许您使用PHP处理在MySQL后端之上轻松设置灵活的博客和网站。在本指南中,我们将专注于在Ubuntu 18.04服务器上的托管MySQL数据库上设置WordPress实例。

本教程的先前版本由Justin Ellingwood编写

介绍

WordPress是互联网上最受欢迎的CMS(内容管理系统)。 这是使网站快速启动和运行的绝佳选择,在初始设置之后,几乎所有管理都可以通过网络前端完成。

WordPress旨在从数据库后端提取内容 - 包括帖子,评论,用户配置文件和其他数据。 随着网站的发展和必须满足越来越多的流量,它最终可能会超过其初始数据库。 要解决此问题,可以通过将数据迁移到具有更多RAM或CPU的计算机来扩展其数据库,但这是一个繁琐的过程,存在数据丢失或损坏的风险。 这就是为什么一些WordPress开发人员选择在托管数据库上构建他们的网站,这使得用户可以自动扩展他们的数据库,同时降低数据丢失的风险。

在本指南中,我们将专注于使用托管MySQL数据库和Ubuntu 18.04服务器设置WordPress实例。 这将要求您安装PHPApache以通过Web提供内容。

先决条件

要完成本教程,您需要:

  • 访问Ubuntu 18.04服务器 :此服务器应具有非root sudo-enabled用户和防火墙配置。 您可以按照我们的Ubuntu 18.04初始服务器设置指南进行设置
  • 托管MySQL数据库 :要从DigitalOcean配置托管MySQL数据库,请参阅我们的托管数据库产品文档 请注意,本指南将在示例中引用DigitalOcean托管数据库,但此处提供的说明通常也适用于来自其他云提供商的托管MySQL数据库。
  • 服务器上安装了LAMP :除数据库外,WordPress还需要Web服务器和PHP才能正常运行。 设置完整的LAMP(Linux,Apache,MySQL和PHP)可满足所有这些要求。 请按照本指南安装和配置此软件。 在按照本指南操作时,请确保将虚拟主机设置为指向您拥有的域名。 此外,请务必跳过第2步 ,因为在您的计算机上安装mysql-server会使您的托管数据库实例变得多余。
  • 为您的网站实施TLS / SSL安全性 :如果您拥有域名,保护您网站的最简单方法是使用Let's Encrypt,它提供免费的可信证书。 按照Apache的Let's Encrypt指南进行设置。 请注意,这还需要您获取域名并在服务器上设置DNS记录。 请按照DigitalOcean DNS的介绍了解有关如何配置此功能的详细信息。 另外,如果您没有域名,则可以为您的站点使用自签名证书

完成设置步骤后,以非root用户身份登录服务器并继续执行下面的操作。

第1步 - 添加MySQL软件存储库并安装mysql-client

为了配置托管MySQL实例,您需要安装一个允许您从服务器访问数据库的客户端。 此步骤将引导您完成安装mysql-client软件包的过程。

在许多情况下,您可以使用apt命令安装mysql-client ,但如果您使用的是默认的Ubuntu存储库,则会安装该程序的5.7版本。 要访问DigitalOcean Managed MySQL数据库,您需要安装8.0或更高版本。 为此,您必须先安装MySQL软件存储库,然后再安装软件包。

首先导航到Web浏览器中MySQL APT Repository页面 找到右下角的“ 下载”按钮,然后单击下一页。 此页面将提示您登录或注册Oracle Web帐户。 您可以跳过它,而是查找说“ 不,谢谢”的链接,只需开始下载即可 右键单击该链接,然后选择“ 复制链接地址” (此选项的措辞可能会有所不同,具体取决于您的浏览器)。

现在您已准备好下载该文件。 在您的服务器上,移动到您可以写入的目录:

cd /tmp

使用curl下载文件,记住粘贴刚刚复制的地址代替以下命令的突出显示部分。 您还需要将两个命令行标志传递给curl -O指示curl输出到文件而不是标准输出。 L标志使curl遵循HTTP重定向,这在这种情况下是必要的,因为您复制的地址实际上在文件下载之前重定向到另一个位置:

curl -OL https://dev.mysql.com/get/mysql-apt-config_0.8.13-1_all.deb

现在应该将文件下载到当前目录中。 列出文件以确保:

ls

您将看到输出中列出的文件名:

mysql-apt-config_0.8.13-1_all.deb
. . .

现在,您可以将MySQL APT存储库添加到系统的存储库列表中。 dpkg命令用于安装,删除和检查.deb软件包。 以下命令包含-i标志,表示您要从指定文件进行安装:

sudo dpkg -i mysql-apt-config*

在安装过程中,您将看到一个配置屏幕,您可以在其中指定您喜欢的MySQL版本,以及为其他MySQL相关工具安装存储库的选项。 默认值将添加最新稳定版MySQL的存储库信息,而不是其他任何内容。 这就是我们想要的,所以使用向下箭头导航到Ok菜单选项ENTER

选择mysql-apt-config配置选项

之后,包将完成添加存储库。 刷新apt包缓存以使新软件包可用:

sudo apt update

接下来,您可以稍微清理系统并删除下载的文件,因为将来不需要它:

rm mysql-apt-config*

注意:如果您需要更新这些存储库的配置,只需运行以下命令以选择新选项:

sudo dpkg-reconfigure mysql-apt-config

选择新选项后,运行以下命令以刷新包缓存:

sudo apt update

现在您已经添加了MySQL存储库,您已准备好安装实际的MySQL客户端软件。 使用以下apt命令执行此操作:

sudo apt install mysql-client

该命令完成后,请检查软件版本号以确保您拥有最新版本:

mysql --version
mysql  Ver 8.0.17-cluster for Linux on x86_64 (MySQL Community Server - GPL)

您现在可以连接到托管数据库并开始准备它与WordPress一起运行。

第2步 - 为WordPress创建MySQL数据库和用户

WordPress使用MySQL来管理和存储站点和用户信息。 假设您已完成所有必备教程 ,那么您已经配置了托管MySQL实例。 在这里,我们将采取创建数据库和WordPress用户的准备步骤。

大多数托管数据库提供程序提供用于连接到数据库实例的统一资源标识符 (URI)。 如果您使用的是DigitalOcean托管数据库,则可以在Cloud Control Panel中找到相关的连接信息。

首先,单击左侧边栏菜单中的Databases ,然后选择要用于WordPress安装的MySQL数据库。 向下滚动到“ 连接详细信息”部分,然后复制主机字段中的链接。 然后将此链接粘贴到以下命令中,将host_uri替换为刚刚复制的信息。 同样,复制端口字段中的端口号 - 在DigitalOcean托管数据库上为25060 - 并用该号码替换port 此外,如果这是您第一次连接到托管数据库并且您尚未创建自己的管理MySQL用户,请复制username字段中的值并将其粘贴到命令中,替换user

mysql -u user -p -h host_uri -P port

此命令包含-p标志,它将提示您输入指定的MySQL用户的密码。 对于DigitalOcean托管数据库的默认doadmin用户,您可以通过单击“ 连接详细信息”部分中的显示链接来显示密码。 出现提示时,将其复制并粘贴到终端中。

注意:如果您未使用DigitalOcean托管数据库,则您的连接选项可能会有所不同。 如果是这种情况,您应该查阅提供商的文档,以获取有关将第三方应用程序连接到数据库的说明。

在MySQL提示符下,创建一个WordPress将控制的新数据库。 你可以随意调用它,但我们将在本指南中使用wordpress这个名称来保持简单。 键入以下命令为WordPress创建数据库:

CREATE DATABASE wordpress DEFAULT CHARACTER SET utf8 COLLATE utf8_unicode_ci;

注意:每个MySQL语句必须以分号( ; )结尾。 如果您遇到任何问题,请检查以确保它存在。

接下来,创建一个新的MySQL用户帐户,您将专门用于在新数据库上操作。 从管理和安全的角度来看,创建单一用途的数据库和帐户是一个好主意。 我们将在本指南中使用名称wordpressuser ,但如果您愿意,可以随意更改此名称。

运行以下命令,但将your_server_ip替换为您的Ubuntu服务器的IP地址。 但请注意,这将限制wordpressuser只能从您的LAMP服务器连接; 如果您计划从本地计算机管理WordPress,则应该输入该计算机的IP地址。 此外,为数据库用户选择一个强密码:

CREATE USER 'wordpressuser'@your_server_ip IDENTIFIED WITH mysql_native_password BY 'password';

注意 :如果您不知道服务器的公共IP地址是什么,可以通过多种方式找到它。 通常,这是您用于通过SSH连接到服务器的地址。

一种方法是使用curl实用程序联系外部方以告诉您如何看到您的服务器。 例如,您可以使用curl联系ICanHazIP等IP检查工具:

curl http://icanhazip.com

此命令将在输出中返回服务器的公共IP地址。

然后授予此用户访问刚刚创建的数据库的权限。 通过运行以下命令来执行此操作:

GRANT ALL ON wordpress.* TO 'wordpressuser'@your_server_ip;

您现在拥有一个数据库和用户帐户,每个帐户都专门为WordPress设计。 接下来,您需要刷新权限,以便当前的MySQL会话识别您所做的更改:

FLUSH PRIVILEGES;

然后,键入以下命令退出MySQL:

exit

这需要配置您的托管MySQL数据库以使用WordPress。 在下一步中,您将安装一些PHP扩展,以便从CMS中获得更多功能。

第3步 - 安装其他PHP扩展

假设您遵循先决条件LAMP教程 ,您将安装一些扩展,旨在让PHP与MySQL正确通信。 WordPress及其许多插件利用额外的PHP扩展来添加其他功能。

要下载并安装一些用于WordPress的更流行的PHP扩展,请运行以下命令:

sudo apt install php-curl php-gd php-mbstring php-xml php-xmlrpc php-soap php-intl php-zip

注意:每个WordPress插件都有自己的一组要求。 有些可能会要求您安装其他PHP包。 检查您的插件文档以查看它需要哪些扩展。 如果它们可用,则可以使用apt进行安装,如上所示。

您将在下一部分重新启动Apache以加载这些新扩展。 但是,如果您要返回此处以安装其他插件,则可以通过键入以下命令重新启动Apache:

sudo systemctl restart apache2

否则,继续执行第4步。

第4步 - 调整Apache的配置以允许.htaccess覆盖和重写

为了使Apache能够正确地为您的WordPress安装提供服务,您必须对Apache配置进行一些小的调整。

如果您遵循先决条件教程,则您应该已在/etc/apache2/sites-available/目录中拥有站点的配置文件。 我们将在此处使用/etc/apache2/sites-available/ your_domain .conf作为示例, 但您应该在适当的位置将路径替换为配置文件

此外,我们将使用/var/www/ your_domain作为此示例WordPress安装中的根目录。 您应该使用自己配置中指定的Web根目录

注意:您可能正在使用000-default.conf默认配置(使用/var/www/html作为您的Web根目录)。 如果您只想在此服务器上托管一个网站,这可以使用。 如果没有,最好将必要的配置拆分为逻辑块,每个站点一个文件。

目前,禁用.htaccess文件的使用。 WordPress和许多WordPress插件广泛使用这些文件,以便对Web服务器的行为进行目录内调整。

打开您网站的Apache配置文件:

sudo nano /etc/apache2/sites-available/your_domain.conf

要允许.htaccess文件,您需要在指向文档根Directory块中设置AllowOverride指令。 在配置文件的VirtualHost块中添加以下文本块,确保使用正确的Web根目录:

/etc/apache2/sites-available/your_domain.conf
<Directory /var/www/your_domain>
    AllowOverride All
</Directory>

完成后,保存并关闭文件。

接下来,启用mod_rewrite以便您可以使用WordPress永久链接功能:

sudo a2enmod rewrite

在实现您刚刚进行的更改之前,请检查以确保配置文件中没有任何语法错误:

sudo apache2ctl configtest

输出可能有一条如下所示的消息:

AH00558: 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

如果您希望取消顶行,只需在/etc/apache2/apache2.conf向主(全局)Apache配置文件添加ServerName指令。 ServerName可以是您的服​​务器的域或IP地址。 但是,这只是一个信息; 它不会影响您网站的功能,只要输出包含Syntax OK ,您就可以继续了。

重启Apache以实现更改:

sudo systemctl restart apache2

有了它,您就可以下载并设置WordPress了。

第5步 - 下载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/your_domain

这需要将WordPress下载到您的服务器上。 但是,此时,您仍然无法在浏览器中访问WordPress设置界面。 要解决此问题,您需要对服务器的WordPress配置进行一些更改。

第6步 - 配置WordPress目录

在进行基于Web的WordPress设置之前,您需要调整WordPress目录中的一些项目。 一个重要的配置更改涉及设置合理的文件权限和所有权。

首先将所有文件的所有权授予www-data用户和组。 这是Apache Web服务器在Debian和Ubuntu系统上运行的用户,Apache需要能够读取和写入WordPress文件才能为网站提供服务并执行自动更新。

使用chown更新Web根目录的所有权:

sudo chown -R www-data:www-data /var/www/your_domain

接下来运行以下两个find命令来设置WordPress目录和文件的正确权限:

sudo find /var/www/your_domain/ -type d -exec chmod 750 {} \;
sudo find /var/www/your_domain/ -type f -exec chmod 640 {} \;

这些应该是一个合理的权限设置开始。 但请注意,某些插件和过程可能需要其他更新。

现在,您需要对主WordPress配置文件进行一些更改。

当您打开文件时,第一个业务顺序将是替换一些密钥以为您的安装提供安全性。 WordPress为这些值提供了一个安全的生成器,因此您不必尝试自己提供好的值。 这些仅在内部使用,因此在这里使用复杂,安全的值不会影响可用性。

要从WordPress密钥生成器中获取安全值,请运行以下命令:

curl -s https://api.wordpress.org/secret-key/1.1/salt/

您将获得看起来像这样的唯一值:

警告! 每次请求唯一值非常重要。 请勿复制此处显示的值!

define('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/your_domain/wp-config.php

找到包含这些设置的虚拟值的部分。 它看起来像这样:

/var/www/your_domain/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');

. . .

删除这些行并粘贴从命令行复制的值:

/var/www/your_domain/wp-config.php
. . .

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');

. . .

接下来,您需要修改文件开头的一些数据库连接设置。 首先,更新'DB_NAME''DB_USER''DB_PASSWORD'字段以指向您在MySQL中配置的数据库名称,数据库用户和相关密码:

/var/www/your_domain/wp-config.php
. . .
/** 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');

. . .

您还需要将'DB_HOST'字段中的localhost替换为托管数据库的主机。 另外,将冒号(:)和数据库的端口号附加到主机:

/var/www/wordpress/wp-config.php
. . .

/** MySQL hostname */
define( 'DB_HOST', 'managed_database_host:managed_database_port' );

. . .

您需要做的最后一个更改是设置WordPress将用于写入文件系统的方法。 由于您已经授予Web服务器写入所需位置的权限,因此您可以将文件系统方法显式设置为direct端口。 如果未能使用当前设置进行此设置,则会导致WordPress在执行某些操作时提示输入FTP凭据。

可以在数据库连接设置下方或文件中的任何其他位置添加此设置:

/var/www/your_domain/wp-config.php
. . .

define('FS_METHOD', 'direct');
. . .

完成后保存并关闭文件。

完成这些更改后,您将完成在Web浏览器中安装WordPress的过程。 但是,我们建议您完成另外一个步骤,为您的配置添加额外的安全层。

此时,您的WordPress安装正在与托管MySQL数据库进行通信。 但是,无法保证两台计算机之间的数据传输是安全的。 在此步骤中,我们将配置WordPress通过TLS / SSL连接与您的MySQL实例进行通信,以确保两台计算机之间的安全通信。

为此,您需要托管数据库的CA证书。 对于DigitalOcean托管数据库,您可以再次导航到“ 控制面板”中的“ 数据库”选项卡。 单击您的数据库,然后找到“ 连接详细信息”部分。 那里会有一个按钮,上面写着下载CA证书 单击此按钮可将证书下载到本地计算机。

然后将此文件传输到您的WordPress服务器。 如果您的本地计算机运行的是Linux或macOS,则可以使用scp类的工具:

scp /path/to/file/ca-certificate.crt sammy@your_server_ip:/tmp

如果您的本地计算机正在运行Windows,则可以使用WinSCP之类的替代工具。

一旦CA证书在您的服务器上,将其移动到/user/local/share/ca-certificates/目录,Ubuntu的可信证书存储:

sudo mv /tmp/ca-certificate.crt /usr/local/share/ca-certificates/

在此之后,运行update-ca-certificates命令。 此程序在/usr/local/share/ca-certificates查找/usr/local/share/ca-certificates ,将任何新/usr/local/share/ca-certificates添加到/etc/ssl/certs/目录,并根据其内容生成可信SSL证书列表:

sudo update-ca-certificates

然后,重新打开你的wp-config.php文件:

nano /var/www/your_domain/wp-config.php

在文件的某处,添加以下行:

/var/www/your_domain/wp-config.php
. . .
define('MYSQL_CLIENT_FLAGS', MYSQLI_CLIENT_SSL);
. . .

保存并关闭文件。

之后,WordPress将与您的托管MySQL数据库安全地通信。

第8步 - 通过Web界面完成安装

现在服务器配置已完成,您可以通过WordPress Web界面完成安装。

在Web浏览器中,导航到服务器的域名或公共IP地址:

https://server_domain_or_IP

假设您的WordPress或Apache配置中没有任何错误,您将看到WordPress语言选择启动页面。 选择您要使用的语言:

WordPress语言选择

选择语言后,您将看到主设置页面。

选择WordPress网站的名称并选择用户名(出于安全考虑,建议不要选择类似“admin”的内容)。 自动生成强密码。 保存此密码或输入备用强密码。

输入您的电子邮件地址,然后选择是否要阻止搜索引擎为您的网站编制索引:

WordPress安装程序安装

当您单击向前时,您将进入提示您登录的页面:

WordPress登录提示

登录后,您将进入WordPress管理仪表板:

WordPress登录提示

从这里开始,您可以开始自定义新的WordPress网站并开始发布内容。 如果这是您第一次使用WordPress,我们建议您稍微探索一下界面,以熟悉新的CMS。

结论

完成本指南后,您将安装WordPress并准备在您的服务器上使用。 此外,您的WordPress安装可以动态地从托管MySQL数据库中提取帖子,页面和其他内容。

一些常见的后续步骤是为您的帖子选择永久链接设置。 此设置可在“设置” >“ 永久链接”下找到。 您还可以在外观 > 主题中选择新主题 一旦开始将某些内容加载到您的网站,您还可以配置CDN以加快网站的资产交付速度