You are currently viewing 手动部署LNMP+WordPress

手动部署LNMP+WordPress

  • Post author:
  • Post category:其他

本文记录了本博客的搭建过程

1.背景信息

操作系统使用了Debian 11,使用的软件版本如下:

  • Nginx:1.18.0
  • MariaDB:10.5.15
  • PHP:7.4
  • WordPress:6.0.3
  • Certbot:1.12.0

如使用非root用户操作,执行以下命令需要在前面加上sudo

2.设置防火墙

安装ufw,并配置防火墙规则

# 更新源
apt update
# 安装ufw用于管理防火墙
apt install ufw
# 放行指定端口
ufw allow ssh && ufw allow 80 && ufw allow 443
# 启用防火墙
ufw enable

3.安装MariaDB

# -y参数表示安装过程中的提示选择全部为"yes"
apt -y install mariadb-server
# 安装完成后初始化,根据提示进行配置即可
mysql_secure_installation

创建数据库wordpress及用户wordpress

为了安全没有开放数据库默认端口3306,可通过数据库图形化工具(如DBeaver)使用ssh隧道远程连接数据库操作

4.安装PHP

# 安装php及所需插件
apt install php && apt install php-fpm && apt install php-mysql

5.安装WordPress

本次部署wordpress的根目录放在了/var/www/html/wordpress

# 以下目录没有就创建一下
cd /var/www/html
# 下载安装包并解压
wget http://wordpress.org/latest.tar.gz
tar -xzvf latest.tar.gz
cd wordpress
# 重命名示例配置为正式配置文件名
mv wp-config-sample.php wp-config.php
# 编辑配置文件
nano wp-config.php

打开配置文件后,需要修改的内容如下

/** 第3步中创建的数据库名称 */
define( 'DB_NAME', 'wordpress' );
/** 第3步中创建的数据库用户名称 */
define( 'DB_USER', 'wordpress' );

/** wordpress数据库用户的密码 */
define( 'DB_PASSWORD', 'password_here' );

/** 数据库地址,在同一台机器上用localhost即可 */
define( 'DB_HOST', 'localhost' );

/** 数据库字符集,此处修改为了utf8mb4支持emoji* /
define( 'DB_CHARSET', 'utf8mb4' );

/** 数据库排序规则,不需要修改 */
define( 'DB_COLLATE', '' );

/**#@+
 * 以下内容通过访问https://api.wordpress.org/secret-key/1.1/salt/ 生成后,复制过来即可
 */

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

6.安装Nginx

apt install nginx

编辑默认配置文件

nano /etc/nginx/nginx.conf

删除或注释掉如下配置

# include /etc/nginx/sites-enabled/*;

生成新的配置文件

nano /etc/nginx/conf.d/custom.conf
# 配置文件内容如下
server{
    listen 80;
    listen [::]:80;
    server_name example.com;
    # 此处重定向到https://blog.example.com,需要配置证书后才能访问
    # 没有证书改为http,下同
    return 301 https://blog.example.com$request_uri;
}
server{
    listen 80;
    listen [::]:80;
    server_name www.example.com;
    return 301 https://blog.example.com$request_uri;
}
server {
    listen 80;
    # wordpress所在目录
    root /var/www/html/wordpress;
    server_name blog.example.com;
    location / {
        # wordpress所在目录
        root   /var/www/html/wordpress;
        index  index.php index.html index.htm;    
    }
    # php请求处理
    location ~ \.php$ {
        # wordpress所在目录
        root           /var/www/html/wordpress;
        #Nginx通过unix套接字与PHP-FPM建立联系,该配置应与/etc/php/7.4/fpm/pool.d/www.conf文件内的listen配置一致。
        fastcgi_pass   unix:/run/php/php7.4-fpm.sock;
        fastcgi_index  index.php;
        fastcgi_param  SCRIPT_FILENAME $document_root$fastcgi_script_name;
        #Nginx调用fastcgi接口处理PHP请求。
        include        fastcgi_params;
    }
}

说明 Nginx与PHP-FPM进程间通信方式有两种。
TCP Socket:该方式能够通过网络,可用于跨服务器通信的场景。
UNIX Domain Socket:该方式不能通过网络,只能用于同一服务器中通信的场景。

重新加载Nginx配置

nginx -s reload

7.安装Certbot,设置https

# 安装Certbot和插件
apt install certbot && apt install python3-certbot-nginx 
# 执行命令获取证书并自动配置nginx,根据提示选择一些选项即可
certbot --nginx

8.初始化WordPress

访问一下地址,进行简单的设置,即可使用

http://example.com/wp-admin/install.php

Max

Run Forrest,run!