如何在Debian 9上安装带LEMP的WordPress

介绍

WordPress是互联网上最受欢迎的CMS(内容管理系统)。它允许您使用PHP处理在MySQL后端之上轻松设置灵活的博客和网站。WordPress已经看到了令人难以置信的采用,是一个快速启动和运行网站的绝佳选择。设置完成后,几乎所有管理都可以通过Web前端完成。

在本指南中,我们将专注于在Debian 9服务器上的LEMP堆栈(Linux,Nginx,MySQL和PHP)上设置WordPress实例。

准备

为了完成本教程,您需要访问Debian 9服务器。没有服务器的同学可以在这里购买,不过我个人更推荐您使用免费的腾讯云开发者实验室进行试验,学会安装后再购买服务器

在开始本指南之前,您需要执行以下任务:

  • sudo在服务器上创建用户:我们将使用具有sudo权限的非root用户完成本指南中的步骤。
  • 安装LEMP堆栈:WordPress需要一个Web服务器,一个数据库和PHP才能正常运行。设置LEMP堆栈(Linux,Nginx,MySQL和PHP)可满足所有这些要求。
  • 使用SSL保护您的网站:WordPress提供动态内容并处理用户身份验证和授权。TLS / SSL是一项技术,允许您加密来自站点的流量,以确保您的连接安全。本教程假设您拥有博客的域名。您可以使用Let's Encrypt为您的域获取免费的SSL证书。按照我们的让Nginx的加密指南进行设置。

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

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

我们将采取的第一步是准备工作。WordPress使用MySQL来管理和存储站点和用户信息。我们已经安装了MySQL,但是我们需要为WordPress创建一个数据库和用户。

要开始,请登录MySQL根(管理)帐户。如果MySQL配置为使用auth_socket身份验证插件(默认),您可以使用sudo命令登录MySQL管理帐户:

sudo mysql

如果您更改了身份验证方法以使用MySQL root帐户的密码,请使用以下格式:

mysql -u root -p

系统将提示您输入为MySQL root帐户设置的密码。

首先,我们可以创建一个WordPress可以控制的独立数据库。你可以随意调用它,但我们将在本指南中使用wordpress来保持简单。您可以通过键入以下命令为WordPress创建数据库:

CREATE DATABASE your_domain DEFAULT CHARACTER SET utf8 COLLATE utf8_unicode_ci;

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

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

我们将创建此帐户,设置密码并授予对我们创建的数据库的访问权限。我们可以通过输入以下命令来完成此操作。请记住为您的数据库用户选择一个强密码:

GRANT ALL ON your_domain.* TO 'wordpressuser'@'localhost' IDENTIFIED BY 'password';

您现在拥有一个数据库和用户帐户,每个帐户都是专门为WordPress设计的。我们需要刷新权限,以便MySQL的当前实例知道我们最近做出的更改:

FLUSH PRIVILEGES;

输入以下内容退出MySQL:

EXIT;

MySQL会话将退出,返回常规Linux shell。

第2步 - 安装其他PHP扩展

在设置LEMP堆栈时,我们只需要一组非常小的扩展,以便让PHP与MySQL通信。WordPress及其许多插件利用了额外的PHP扩展。

我们可以通过输入以下命令下载并安装一些最流行的PHP扩展以与WordPress一起使用:

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

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

完成扩展安装后,重新启动PHP-FPM进程,以便正在运行的PHP处理器可以利用新安装的功能:

sudo systemctl restart php7.0-fpm

我们现在已经在服务器上安装了所有必需的PHP扩展。

第3步 - 配置Nginx

接下来,我们将对我们的Nginx服务器块文件进行一些小的调整。根据必备教程,您应该在配置为响应服务器域名并受TLS / SSL证书保护的/etc/nginx/sites-available/目录中为您的站点配置一个配置文件。我们将在此处使用/etc/nginx/sites-available/your_domain作为例子,但您应该在适当的位置将路径替换为配置文件。

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

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

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

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

我们需要在主server块中添加一些location指令。添加SSL证书后,您的配置可能有两个 server块。如果是这样,找到包含root /var/www/your_domain的那个和您的其他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

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

第4步 - 下载WordPress

现在我们的服务器软件已经配置好了,我们可以下载并设置WordPress。出于安全原因,我们始终建议从其站点获取最新版本的WordPress。

转换为可写目录,然后键入以下命令下载压缩版本:

cd /tmp
curl -LO 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

现在,我们可以将目录的全部内容复制到我们的文档根目录中。我们使用该-a标志来确保维护我们的权限。我们在源目录的末尾使用一个点来表示应该复制目录中的所有内容,包括任何隐藏文件:

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

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

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

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

第5步 - 设置WordPress配置文件

接下来,我们需要对主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

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

. . .
​
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', 'your_domain');
​
/** 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并准备使用!一些常见的后续步骤是为您的帖子选择永久链接设置(可以在Settings > Permalinks中找到)或选择新主题(在Appearance > Themes中)。如果这是您第一次使用WordPress,请稍微探索一下界面以熟悉您的新CMS。

想要了解更多关于安装带LEMP的WordPress的相关教程,请前往腾讯云+社区学习更多知识。


参考文献:《How To Install WordPress with LEMP on Debian 9》

原创声明,本文系作者授权云+社区发表,未经许可,不得转载。

如有侵权,请联系 yunjia_community@tencent.com 删除。

编辑于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏13blog.site

Intellij IDEA查看所有断点

项目中打的断点太多,有时自己也想不到打在哪里了,也不知道哪些方法、哪些代码行上打了断点,在IDEA中如何查看所有断点呢? 方法如下: step 1 IDE...

38490
来自专栏GIS讲堂

Openlayers4中地图的导出

本文讲述Openlayers4中地图的导出,包括调用天地图切片跨域、Geoserver11 WMS跨域等。

40620
来自专栏美奔科技

web站点应用之路_wdcp面板部署篇(一)

熟悉的人都知道,搭建web几乎是最简单的了,一般有两种方式来搭建web站点.一种是自己先安装各类环境,比如php+apache+mysql ,或者是asp.ne...

26750
来自专栏互联网开发者交流社区

SpringBoot配置文件的加载位置

20020
来自专栏黑泽君的专栏

通过数据库中的表,使用 MyEclipse2017的反向生成工具-->hibernate反转引擎引擎(MyEclipse2017自带的插件) 来反转生成实体类和对应的映射文件

1、在MyEclipse中,Java视图下,新建一个普通的java project,新建该项目的目的是:用来接收反转引擎生成的实体类和对应的映射文件。

17420
来自专栏张善友的专栏

使用密码记录工具keepass来保存密码

在第一章,曾经给过您建议,密码不要保存在文档中,那样不安全,如果密码很多而且又很复杂,人的大脑是不可能很容易记住的,只能记录下来,如果不能记在文档中那记在哪里呢...

44990
来自专栏小程序之家

如何快速搭建微信小程序

微信小程序是腾讯于2017年1月9日推出的一种不需要下载安装即可在微信平台上使用的应用,主要提供给企业、政府、媒体、其他组织或个人的开发者在微信平台上提供服务。...

15.9K120
来自专栏电光石火

eclipse汉化

以前一直没发出来,今天整理时发现就发出来了!

23550
来自专栏云计算教程系列

如何在Ubuntu 18.04上安装带有LEMP的WordPress

WordPress是互联网上最受欢迎的CMS(内容管理系统)。它允许您使用PHP处理在MySQL后端之上轻松设置博客和网站。WordPress已经看到了令人难以...

29020
来自专栏Golang语言社区

Golang 通用连接池

资源链接 https://github.com/silenceper/pool pool GoDoc Golang 实现的连接池 功能: 连接池中连接...

43380

扫码关注云+社区

领取腾讯云代金券