Debian12 上部署 LNMP 环境并安装 WordPress

发布于: 2024-09-06 19:33:45icon-views浏览量: 74次
服务器:阿里云ECS 2H2G 3M
操作系统:Debian 12.6 64位
Nginx:1.22.1
MySQL:8.4.2
PHP:8.2
WordPress:6.5.5
管理工具:Xshell, Xftp, Navicat

记录一下使用 LNMP + WordPress 建站的过程,镜像源和一些常用工具阿里云的系统镜像已经配置好了,这里就不作详细说明了。

  • 安装 MySQL

  • 首先,我们先从 MySQL 官网下载安装包

    cd /home
    wget https://repo.mysql.com/mysql-apt-config_0.8.32-1_all.deb
    dpkg -i mysql-apt-config_0.8.32-1_all.deb
    


    在弹出的选项中直接选择 OK

    MySQL

    再更新一下软件包列表

    apt clean && apt update
    


    开始安装 MySQL

    apt install -y mysql-server
    


    设置 root 用户的密码

    MySQL2

    MySQL 安装完成后,执行安全初始化脚本

    sudo mysql_secure_installation
    
    // 输入 root 用户的密码
    Enter password for user root: ********
    
    // 是否安装验证密码组件?
    Would you like to setup VALIDATE PASSWORD component? No
    
    // 是否更改 root 用户的密码
    Change the password for root? No
    
    // 是否删除 MySQL 自带的匿名用户
    Remove anonymous users? Yes
    
    // 是否禁止 root 用户远程登录
    Disallow root login remotely? Yes
    
    // 是否移除测试数据库
    Remove test database and access to it? Yes
    
    // 是否重新加载权限表
    Reload privilege tables now? Yes
    


    如果想要用 root 用户远程登录 MySQL 数据库,需要执行以下命令:

    // 使用 root 用户登录 MySQL 数据库
    mysql -u root -p
    
    // 允许 root 用户远程登录
    update mysql.user t set t.host = '%' where t.user = 'root';
    
    // 刷新权限表
    FLUSH PRIVILEGES;
    
    // 退出
    exit;
    


    然后确保服务器的安全组策略允许 80, 443, 3306 端口的访问,接下来在本地测试一下能否连接数据库,我这里用的是 Navicat

    Navicat

    现在需要手动新建一个数据库

    数据库名称:wordpress
    字符集:utf8mb4
    排序规则:utf8mb4_0900_ai_ci
    
    // MySQL 命令
    ALTER DATABASE 'wordpress' CHARACTER SET 'utf8mb4' COLLATE 'utf8mb4_0900_ai_ci';
    


  • SSL 配置

  • 我这里把证书(cert.pem)和私钥(cert.key)放在了 /home/l4kkS41/ssl 目录下(需要自己手动创建目录)

  • 上传 WordPress

  • 我这里用 Xftp 把 WordPress 放在了 /home/l4kkS41/WordPress 目录下(需要自己手动创建目录)

  • Nginx 安装和配置

  • // 安装 Nginx
    apt install -y nginx
    
    // 删除默认配置
    rm /etc/nginx/sites-available/default /etc/nginx/sites-enabled/default
    


    根据自己的情况修改 server_namerootssl_certificatessl_certificate_key,最后把修改好的文件放在 /etc/nginx/conf.d 目录下

    // wordpress.conf
    server {
        listen          80;
        listen          [::]:80;
        server_name     example.com;
        return 301 https://$host$request_uri;
    }
    
    server {
        listen          80;
        listen          [::]:80;
        server_name     example.com;
        return 301 https://$host$request_uri;
    }
    
    server {
        listen          443 ssl default_server;
        listen          [::]:443 ssl default_server;
        root            /home/l4kkS41/WordPress;
        server_name     example.com;
        index           index.php index.html index.htm;
        
        ssl_certificate     /home/l4kkS41/ssl/cert.pem;
        ssl_certificate_key /home/l4kkS41/ssl/cert.key;
        ssl_protocols TLSv1.2 TLSv1.3;
        ssl_prefer_server_ciphers on;
        ssl_ciphers ssl_ciphers "ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305";
        
        add_header X-Content-Type-Options "nosniff";
        add_header X-Frame-Options "SAMEORIGIN";
        add_header X-XSS-Protection "1; mode=block";
        add_header Referrer-Policy "no-referrer-when-downgrade";
        add_header Strict-Transport-Security "max-age=31536000; includeSubDomains; preload" always;
    
        location / {
            try_files $uri $uri/ /index.php?$args;
        }
        
        rewrite /wp-admin$ $scheme://$host$uri/ permanent;
        
        location ~ \.php$ {
            fastcgi_pass 127.0.0.1:9000;
            fastcgi_index index.php;
            fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
            include fastcgi_params;
        }
        
        location = /robots.txt { allow all; }
        
        location ~* \.(7z|zip|rar|tar|gz|bak|conf|log|txt|sql)$ {
        deny all;
        }
        
        autoindex off;
    }
    


  • PHP 安装和配置

  • // 安装 PHP
    apt install -y php-fpm php-curl php-imagick php-intl php-mbstring php-mysql php-xml php-zip
    
    // 修改配置
    vim /etc/php/8.2/fpm/pool.d/www.conf
    
    // 把对应的配置修改为
    listen = 127.0.0.1:9000
    listen.allowed_clients = 127.0.0.1
    


  • 目录权限

  • chown -R www-data:www-data /home/WordPress
    chmod -R 755 /home
    


  • 服务重启

  • // 重启 PHP 服务
    systemctl restart php8.2-fpm
    // 重载 nginx 配置
    nginx -s reload
    


  • 安装 WordPress

  • 数据库名:wordpress
    用户名:root
    密码:********
    数据库主机:localhost
    表前缀:wp_
    

    然后根据提示填写基本信息,最后点击「安装WordPress」,等待安装完成即可。