Debian12 上部署 LNMP 环境并安装 WordPress

记录一下使用 LNMP + WordPress 搭建的过程

服务器 阿里云 ECS 2H2G 3M
操作系统 Debian 12.8(64 位)
MySQL 8.4.3
Nginx 1.22.1
PHP 8.2.26
WordPress 6.6.2
管理工具 Xshell、Xftp、Navicat

 

步骤一:安装 MySQL


  1. 下载并安装 MySql 官方包

    // 需要自己手动创建目录
    cd /home/l4kkS41
    
    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
    

     

  2. 更新软件包列表

    apt clean && apt update
    

     

  3. 安装 MySQL

    apt install -y mysql-server
    

     

  4. 设置 root 用户密码

    MySQL

     

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

    // 按照提示完成安全设置
    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
    

     

  6. 创建 WordPress 数据库

    // 登录 MySql 数据库
    mysql -u root -p
    
    // 数据库名称:wordpress
    // 字符集:utf8mb4
    // 排序规则:utf8mb4_0900_ai_ci
    CREATE DATABASE `wordpress` CHARACTER SET 'utf8mb4' COLLATE 'utf8mb4_0900_ai_ci';
    
    // 退出 MySql 会话
    exit;
    

    使用以上命令行或者 Navicat 创建数据库

     

  7. (可选)允许 root 用户远程登录

    // 允许任意 IP 连接
    UPDATE mysql.user SET host = '%' WHERE user = 'root';
    
    // 刷新权限
    FLUSH PRIVILEGES;
    

    确保服务器的安全组策略允许 3306 端口的访问

 

步骤二:安装 Nginx


  1. 安装 Nginx

    apt install -y nginx
    

     

  2. 删除默认配置

    rm /etc/nginx/sites-available/default /etc/nginx/sites-enabled/default
    

     

  3. 配置 Nginx

    创建新的配置文件 /etc/nginx/conf.d/wordpress.conf,并根据实际情况修改 server_namerootssl_certificatessl_certificate_key

    // wordpress.conf
    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 "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";
        ssl_session_cache   shared:SSL:10m;
        ssl_session_timeout 5m;
        
        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";
        add_header Strict-Transport-Security "max-age=31536000; includeSubDomains; preload" always;
        add_header Content-Security-Policy "default-src 'self';";
        add_header Permissions-Policy "geolocation=(), midi=(), sync-xhr=(), microphone=(), camera=(), magnetometer=(), gyroscope=(), speaker=(), vibrate=(), fullscreen=(), payment=()";
    
        location / {
            try_files $uri $uri/ /index.php?$args;
        }
        
        location ~ \.php$ {
            fastcgi_pass unix:/run/php/php8.2-fpm.sock;
            fastcgi_index index.php;
            fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
            include fastcgi_params;
            add_header Cache-Control "no-store";
        }
        
        location = /robots.txt { allow all; }
        
        location ~* \.(jpg|jpeg|png|gif|ico|css|js|woff|woff2|svg)$ {
            expires 1y;
            add_header Cache-Control "public, max-age=31536000, immutable";
        }
        
        location ~* \.(7z|zip|rar|tar|gz|bak|conf|log|txt|sql)$ {
            deny all;
        }
        
        autoindex off;
    }
    

 

步骤三:安装 PHP


  1. 安装 PHP 及扩展

    apt install -y php-fpm php-curl php-imagick php-intl php-mbstring php-mysql php-xml php-zip
    

 

步骤四:上传并配置 WordPress


  1. 上传 WordPress

    使用 Xftp 将 WordPress 文件上传至 /home/l4kkS41/WordPress 目录

     

  2. 设置目录权限

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

 

步骤五:重启服务并完成安装


  1. 重启 nginx 服务

    nginx -s reload
    

     

  2. 通过浏览器访问

    在浏览器中访问域名,按照提示完成 WordPress 的安装

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

 


本文由 l4kkS41 创作,采用 CC BY-SA 4.0 许可协议。您可以自由分享与修改,但需注明出处并使用相同协议。
如需转载,请遵守许可协议并附上原文链接:
https://l4kks41.com/deploy-lnmp-and-install-wordpress-on-debian-12/