如何在 Debian 10 上使用 LEMP(Nginx、MariaDB 和 PHP)安装 WordPress

介绍

WordPress 是互联网上最受欢迎的 CMS(内容管理系统)。它允许您轻松地在 PHP 处理的 MySQL 后端上设置灵活的博客和网站。WordPress 经历了令人难以置信的采用,是快速启动和运行网站的绝佳选择。

在本指南中,我们将专注于在 Debian 10 服务器上建立 LEMP 堆栈(Linux, Nginx, MariaDB 和 PHP)上的 WordPress 实例。

前提条件

要完成本教程,您需要访问 Debian 10 服务器。

您需要完成以下任务,才能开始本指南:

  • **在您的服务器上创建一个sudo用户:我们将使用sudo特权的非根用户完成本指南中的步骤:您可以根据我们的 Debian 10初始服务器设置指南创建一个具有sudo特权的用户:
  • Install a LEMP stack :WordPress将需要一个Web服务器,一个数据库和PHP才能正常运作。设置一个LEMP堆(Linux, Nginx, MariaDB,和PHP)满足所有这些要求。 按照 此指南安装和配置此软件。
  • 安全您的网站与SSL :WordPress提供动态内容,并处理用户身份验证和授权。 TLS/SSL

当您完成设置步骤时,请登录您的服务器作为您的sudo用户并继续下方。

步骤 1 — 为 WordPress 创建数据库和用户

WordPress 需要一个基于 MySQL 的数据库来存储和管理网站和用户信息. 我们的设置使用 MariaDB,这是 Oracle 的原始 MySQL 项目的社区叉子。

如果 MariaDB 已配置使用auth_socket身份验证插件,这是默认的,您可以使用sudo登录 MariaDB 管理帐户:

1sudo mariadb

如果您更改了身份验证方法,以便为 MariaDB 根帐户使用密码,则使用以下格式:

1mariadb -u root -p

您将被提示为 MariaDB 根帐户设置的密码。

首先,我们可以创建一个单独的数据库,WordPress可以控制它,你可以随心所欲地命名它,但我们将在本指南中使用WordPress来保持简单。

1CREATE DATABASE wordpress DEFAULT CHARACTER SET utf8 COLLATE utf8_unicode_ci;

接下来,我们将创建一个单独的MariaDB用户帐户,我们将专门用于在我们的新数据库上运行。创建一个功能的数据库和帐户从管理和安全的角度来说是一个好主意。

下列命令将创建此帐户,设置密码,并授予访问我们创建的数据库. 请记住为您的数据库用户选择一个强大的密码:

1GRANT ALL ON wordpress.* TO 'wordpress_user'@'localhost' IDENTIFIED BY 'password';

你现在有一个数据库和一个用户帐户,每一个都是专门为WordPress创建的,我们需要清除权限,以便数据库服务器的当前实例知道我们最近做过的更改:

1FLUSH PRIVILEGES;

退出 MariaDB 通过键入:

1EXIT;

MariaDB 会话将结束,您将返回正常的 Linux 壳。

第2步:安装额外的PHP扩展

当我们设置LEMP堆栈时,我们只需要一组非常小的扩展来让PHP与MariaDB进行通信。

我们可以通过键入下载并安装一些最流行的PHP扩展来使用WordPress:

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

<$>[注] 注: 每个WordPress插件都有自己的要求。 有些可能需要安装额外的PHP包。 检查您的插件文档以了解其PHP要求。

当您完成安装新扩展时,您需要重新启动 PHP-FPM 流程,以便运行的 PHP 处理器能够利用新安装的功能:

1sudo systemctl restart php7.3-fpm.service

您可能需要将命令的突出部分调整到您的特定版本的 PHP-FPM,因为这可能会有所不同. 要验证您需要在systemctl命令中使用的确切服务名称,您可以使用:

1sudo systemctl status php* | grep fpm.service

你会看到这样的输出:

1[secondary_label Output]
2 php7.3-fpm.service - The PHP 7.3 FastCGI Process Manager
3   Loaded: loaded (/lib/systemd/system/php7.3-fpm.service; enabled; vendor preset: enabled)
4   CGroup: /system.slice/php7.3-fpm.service

突出的字符串是您在使用systemctl命令来管理 PHP-FPM 服务时需要使用的名称。

在下一部分,我们将配置 Nginx 以使用 PHP-FPM 来处理 PHP 页面。

步骤 3 – 配置 Nginx

我们现在将对我们的 Nginx 服务器封锁文件做一些小调整,基于先决条件的教程,您应该在 /etc/nginx/sites-available/ 目录中为您的网站配置文件,以响应您的服务器的域名,并通过 TLS/SSL 证书保护。

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

<$>[注] 注: 您可能正在使用 /etc/nginx/sites-available/default 默认配置(具有 /var/www/html 作为您的 Web 根)。 如果您只想在这个服务器上托管一个网站,这很好。

打开您的网站的 Nginx 配置文件,使用sudo权限开始:

1sudo nano /etc/nginx/sites-available/your_domain

我们需要在我们的主要服务器区块中添加一些位置指令。添加SSL证书后,您的配置可能包含 two服务器区块。如果是这样,请找到包含root /var/www/your_domain和您的其他位置指令的指令,并在那里实施您的更改。

首先,为/favicon.ico/robots.txt的请求创建准确匹配的位置块,我们不希望登录请求。

我们将使用一个常规的表达位置来匹配任何对静态文件的请求,我们将再次关闭这些请求的日志,并将其标记为高度可缓存,因为这些通常是昂贵的资源。

 1[label /etc/nginx/sites-available/your_domain]
 2server {
 3    . . .
 4
 5    location = /favicon.ico { log_not_found off; access_log off; }
 6    location = /robots.txt { log_not_found off; access_log off; allow all; }
 7    location ~* \.(css|gif|ico|jpeg|jpg|js|png)$ {
 8        expires max;
 9        log_not_found off;
10    }
11    . . .
12}

在现有的位置 / 块中,我们需要调整try_files列表,这样而不是作为默认选项返回 404 错误,控制将转移到请求参数的index.php文件中。

这应该看起来像这样的东西:

1[label /etc/nginx/sites-available/wordpress]
2server {
3    . . .
4    location / {
5        #try_files $uri $uri/ =404;
6        try_files $uri $uri/ /index.php$is_args$args;
7    }
8    . . .
9}

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

现在,我们可以通过键入检查我们的配置语法错误:

1sudo nginx -t

如果没有报告错误,请通过键入重新加载 Nginx:

1sudo systemctl reload nginx

接下来,我们将下载并设置WordPress本身。

第4步:下载WordPress

现在我们的服务器软件已配置,我们可以下载并设置WordPress,特别是出于安全原因,我们建议从他们的网站上获取最新的WordPress版本。

转换为可编写的目录,然后通过键入下载压缩版本:

1cd /tmp
2curl -LO https://wordpress.org/latest.tar.gz

提取压缩文件来创建WordPress目录结构:

1tar xzvf latest.tar.gz

在我们这样做之前,我们可以将样本配置文件复制到WordPress实际阅读的文件名:

1cp /tmp/wordpress/wp-config-sample.php /tmp/wordpress/wp-config.php

现在,我们可以将整个目录内容复制到我们的文档根中。我们正在使用-a旗帜来确保我们的权限得到维持。我们正在使用源目录末尾的点头来表示目录内的一切都应该被复制,包括任何隐藏的文件:

1sudo cp -a /tmp/wordpress/. /var/www/your_domain

现在我们的文件已经存在,我们将将所有权分配给www-data用户和组,这是 Nginx 运行的用户和组, Nginx 将需要能够阅读和写 WordPress 文件,以便为网站提供服务并执行自动更新。

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

我们的文件现在位于我们的服务器的文档根中,并且拥有正确的所有权,但我们仍然需要完成一些更多的配置。

第5步:设置WordPress配置文件

接下来,我们需要对主 WordPress 配置文件做一些更改。

当我们打开文件时,我们的第一个业务命令将是调整秘密密钥,为我们的安装提供一些安全性。WordPress为这些值提供一个安全的生成器,因此您不必试图自行提出良好的价值。

要从 WordPress 秘密密密钥生成器中获取安全值,键入:

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

您将获得像这样的独特值:

<$>[警告] 警告: 重要的是每次请求独特值。

1[secondary_label Output]
2define('AUTH_KEY',         '1jl/vqfs<XhdXoAPz9 DO NOT COPY THESE VALUES c_j{iwqD^<+c9.k<J@4H');
3define('SECURE_AUTH_KEY',  'E2N-h2]Dcvp+aS/p7X DO NOT COPY THESE VALUES {Ka(f;rv?Pxf})CgLi-3');
4define('LOGGED_IN_KEY',    'W(50,{W^,OPB%PB<JF DO NOT COPY THESE VALUES 2;y&,2m%3]R6DUth[;88');
5define('NONCE_KEY',        'll,4UC)7ua+8<!4VM+ DO NOT COPY THESE VALUES #`DXF+[$atzM7 o^-C7g');
6define('AUTH_SALT',        'koMrurzOA+|L_lG}kf DO NOT COPY THESE VALUES 07VC*Lj*lD&?3w!BT#-');
7define('SECURE_AUTH_SALT', 'p32*p,]z%LZ+pAu:VY DO NOT COPY THESE VALUES C-?y+K0DK_+F|0h{!_xY');
8define('LOGGED_IN_SALT',   'i^/G2W7!-1H2OQ+t$3 DO NOT COPY THESE VALUES t6**bRVFSD[Hi])-qS`|');
9define('NONCE_SALT',       'Q6]U:K?j4L%Z]}h^q7 DO NOT COPY THESE VALUES 1% ^qUswWgn+6&xqHN&%');

这些是配置行,我们可以直接粘贴到我们的配置文件中,以设置安全密钥。

现在,打开WordPress配置文件:

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

查找包含这些设置的 dummy 值的部分,它将看起来像这样:

 1[label /var/www/wordpress/wp-config.php]
 2. . .
 3
 4define('AUTH_KEY',         'put your unique phrase here');
 5define('SECURE_AUTH_KEY',  'put your unique phrase here');
 6define('LOGGED_IN_KEY',    'put your unique phrase here');
 7define('NONCE_KEY',        'put your unique phrase here');
 8define('AUTH_SALT',        'put your unique phrase here');
 9define('SECURE_AUTH_SALT', 'put your unique phrase here');
10define('LOGGED_IN_SALT',   'put your unique phrase here');
11define('NONCE_SALT',       'put your unique phrase here');
12
13. . .

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

 1[label /var/www/wordpress/wp-config.php]
 2. . .
 3
 4define('AUTH_KEY',         'VALUES COPIED FROM THE COMMAND LINE');
 5define('SECURE_AUTH_KEY',  'VALUES COPIED FROM THE COMMAND LINE');
 6define('LOGGED_IN_KEY',    'VALUES COPIED FROM THE COMMAND LINE');
 7define('NONCE_KEY',        'VALUES COPIED FROM THE COMMAND LINE');
 8define('AUTH_SALT',        'VALUES COPIED FROM THE COMMAND LINE');
 9define('SECURE_AUTH_SALT', 'VALUES COPIED FROM THE COMMAND LINE');
10define('LOGGED_IN_SALT',   'VALUES COPIED FROM THE COMMAND LINE');
11define('NONCE_SALT',       'VALUES COPIED FROM THE COMMAND LINE');
12
13. . .

接下来,我们需要在文件开始时修改某些数据库连接设置,您需要调整我们在 MariaDB 中配置的数据库名称、数据库用户和相关密码。

我们需要做的另一个变化是设置WordPress应该用来写到文件系统的方法. 由于我们已经给了Web服务器允许写到它需要的地方,我们可以明确地将文件系统的方法设置为直接。 未能在我们当前的设置中设置此设置会导致WordPress在我们执行某些操作时提示FTP凭据。

 1[label /var/www/wordpress/wp-config.php]
 2. . .
 3
 4define('DB_NAME', 'wordpress');
 5
 6/** MySQL database username */
 7define('DB_USER', 'wordpress_user');
 8
 9/** MySQL database password */
10define('DB_PASSWORD', 'password');
11
12. . .
13
14define('FS_METHOD', 'direct');

保存并关闭文件,当你完成。

步骤 6 – 通过 Web 界面完成安装

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

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

1http://server_domain_or_IP

选择您想要使用的语言:

WordPress language selection

接下来,您将进入主设置页面。

选择您的WordPress网站的名称,并选择一个用户名(不建议为安全目的选择admin)。

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

WordPress setup installation

当您点击前进时,您将被带到一个提示您登录的页面:

WordPress login prompt

一旦您登录,您将被带到WordPress管理仪表板:

WordPress admin panel

从仪表板中,您可以开始对网站的主题和发布内容进行更改。

结论

WordPress 应该安装并准备好使用! 一些常见的下一步步骤是为您的帖子选择 permalinks 设置(可以在设置 > Permalinks中找到)或选择一个新主题(在外观 > 主题中)。

Published At
Categories with 技术
comments powered by Disqus