在 Debian 12 上搭建 LEMP + 安装 WordPress
本文记录在 Debian 12 服务器上自行搭建 LEMP 环境并安装 WordPress 的步骤。
WordPress 是有名的开源内容管理系统(CMS),通过它我们可以自行快速搭建网站、个人博客或电商网站。
LEMP 是一个常用的开源软件栈:Linux + nginx ("engine-x",用 "E" 表示) + MySQL 数据库 + 网络服务器 PHP。
Debian 12 (Bookworm) 是 Debian project 的最新发布版本 (Jan 2025),以其可靠性和安全性而闻名,被广泛用于各种平台,支持众多架构。
0. 准备工作
开始之前,请确保:
- 运行 Debian 12 的服务器,建议 RAM > 1GB
root
账户或拥有sudo
权限的管理账户- 会 Linux 基本的命令行操作
1. 更新系统
首先,ssh
登录进服务器。
⚠️ 如果使用root
用户,请忽略下文所有命令中的sudo
。
// 执行软件包列表更新
sudo apt update
// 更新安装的软件包
sudo apt upgrade -y
2. 安装 nginx
nginx 是一个高性能的 Web 服务器。
通过 Debian 官方官方仓库直接安装 nginx:
sudo apt install nginx -y
运行完成后,nginx 会立即运行。
你可以在浏览器中直接访问服务器的 IP 地址验证安装,正常运行后会显示 nginx 的默认页面:
也可以在系统运行以下命令来查看 nginx 的运行状态:
sudo systemctl status nginx
⚠️ 如果系统中启用了防火墙,需要先开启 HTTP 和 HTTPS 端口。以
ufw
为例:// 放行 nginx sudo ufw allow 'nginx Full' // 或者运行以下命令 sudo ufw allow 80,443 // 重新加载 ufw sudo ufw reload // 查看防火墙当前状态 sudo ufw status
3. 安装 MariaDB
MariaDB 是 MySQL 的流行替代品,它在全兼容 MySQL 数据库同时提供了一些额外的功能和改进。
3.1 安装 MariaDB
通过 Debian 官方官方仓库直接安装 MariaDB:
sudo apt install mariadb-server -y
3.2 MariaDB 安全设置
运行安装命令完成后,建议运行 MariaDB 附带的安全脚本:
sudo mariadb-secure-installation
系统会提示输入 root
账户密码,由于我们没有设置,可以直接按回车键跳过,接下来选择操作,不懂可以照以下运行示例中的提示操作:
NOTE: RUNNING ALL PARTS OF THIS SCRIPT IS RECOMMENDED FOR ALL MariaDB
SERVERS IN PRODUCTION USE! PLEASE READ EACH STEP CAREFULLY!
In order to log into MariaDB to secure it, we'll need the current
password for the root user. If you've just installed MariaDB, and
haven't set the root password yet, you should just press enter here.
Enter current password for root (enter for none):
OK, successfully used password, moving on...
Setting the root password or using the unix socket ensures that nobody
can log into the MariaDB root user without the proper authorisation.
You already have your root account protected, so you can safely answer 'n'.
// 此处按 n
Switch to unix socket authentication [Y/n] n
... skipping.
You already have your root account protected, so you can safely answer 'n'.
// 此处按 n
Change the root password? [Y/n] n
... skipping.
By default, a MariaDB installation has an anonymous user, allowing anyone
to log into MariaDB without having to have a user account created for
them. This is intended only for testing, and to make the installation
go a bit smoother. You should remove them before moving into a
production environment.
// 此处按 y
Remove anonymous users? [Y/n] Y
... Success!
Normally, root should only be allowed to connect from 'localhost'. This
ensures that someone cannot guess at the root password from the network.
// 此处按 y
Disallow root login remotely? [Y/n] Y
... Success!
By default, MariaDB comes with a database named 'test' that anyone can
access. This is also intended only for testing, and should be removed
before moving into a production environment.
// 此处按 y
Remove test database and access to it? [Y/n] Y
- Dropping test database...
... Success!
- Removing privileges on test database...
... Success!
Reloading the privilege tables will ensure that all changes made so far
will take effect immediately.
// 此处按 y
Reload privilege tables now? [Y/n] Y
... Success!
Cleaning up...
All done! If you've completed all of the above steps, your MariaDB
installation should now be secure.
Thanks for using MariaDB!
3.3 验证 MariaDB 安装
运行以下命令来查看 MariaDB 的运行状态:
sudo systemctl status mariadb
如果 MariaDB 运行正常,你会看到它显示为 Active
。
4. 创建数据库和用户
4.1 登录 MariaDB
// 提示输入密码时直接按回车即可
sudo mariadb -u root -p
4.2 创建新数据库
// 替换以下 yourdatabasename 为你的数据库名称
CREATE DATABASE yourdatabasename;
4.3 创建新用户
// 替换以下 yourusername 为你的用户名
// 替换以下 yourpassword 为你的用户密码,请使用强密码
CREATE USER yourusername@localhost IDENTIFIED BY "yourpassword";
4.4 用户授权
// 替换以下 yourdatabasename 为你自己的数据库名称
// 替换以下 yourusername 为你自己的用户名
GRANT ALL ON yourdatabasename.* TO yourusername@localhost;
4.5 刷新权限
FLUSH PRIVILEGES;
4.6 完成并退出
EXIT;
5. 安装 PHP
PHP 用来处理网站服务端脚本并生成动态内容。
5.1 安装 PHP 和扩展
sudo apt install php php-fpm php-cli php-mysql php-curl php-gd php-mbstring php-xml php-xmlrpc php-zip php-imagick php-intl php-gd php-opcache -y
5.2 更新 PHP 设置
运行以下命令打开 php 配置文件:
// Debian 12 仓库中包含 php 8.2
// 安装后请检查版本已确认以下路径正确
sudo nano /etc/php/8.2/fpm/php.ini
现在,找到以下几处并修改:
...
// 设置上传文件的最大大小
uploadmaxfilesize = 64M
// 设置 PHP 将接受的 POST 数据的最大大小
postmaxsize = 64M
// 设置脚本允许分配的最大内存量 (单位:字节)
memorylimit = 128M
// 设置脚本在被解析器终止之前允许运行的最长时间 (单位:秒)
maxexecutiontime = 300
// 找到 cgi.fixpathinfo=1 这行 (默认是被注释掉的)
// 取消注释,并出于安全考虑将其改为 cgi.fixpathinfo=0
cgi.fixpathinfo=0
...
完成后按 crtl
+ x
键,再按 y
键保存并退出。
5.3 重启 PHP 服务
sudo systemctl restart php8.2-fpm
至此,LEMP
环境已经搭建完成。
6. 安装 WordPress
6.1 下载并解压
从官网下载最新的 WordPress:
wget https://wordpress.org/latest.tar.gz
将下载的文件解压到网站目录 /var/www/
,解压后的文件夹名称是 wordpress
,此文件夹包含 WordPress 的运行程序和配置文件。
sudo tar -xzvf latest.tar.gz -C /var/www/
为方便区分其他网站,建议将文件夹重命名为其他名称,比如改为网站域名名称 yourwebsite
。
sudo mv /var/www/wordpress /var/www/yourwebsite
6.2 更新目录权限
要使 WordPress 正常运行,需给目录设置正确的权限:
// 设置 WordPress 目录和文件的权限
sudo chown -R www-data:www-data /var/www/yourwebsite
sudo find /var/www/yourwebsite -type d -exec chmod 750 {} \;
sudo find /var/www/yourwebsite -type f -exec chmod 640 {} \;
6.3 更改安装配置
在这一步,我们将需要修改 WordPress 的配置文件,以正确连接到数据库。
6.3.1 复制配置文件
先进入 WordPress 的根目录:
cd /var/www/yourwebsite
复制 wp-config-sample.php
文件,并重命名为 wp-config.php
:
sudo cp wp-config-sample.php wp-config.php
6.3.2 生成 Salt 密钥
以下两种方法二选一生成 Salt 密钥:
6.3.2.1 运行命令
curl https://api.wordpress.org/secret-key/1.1/salt/
6.3.2.2 直接访问网址
https://api.wordpress.org/secret-key/1.1/salt/
可以得到类似以下值:
// 不要直接复制!请使用自己生成的! //
define('AUTHKEY', 'b3CZ^huVjb2ZpPBmIxE/%G}tS|P!DgX&6qp+w&)( #A;HAhEB6u)H;bzWBg^]<0(');
define('SECUREAUTHKEY', 'b^>lF^*Y]u8VHmWhJP2sS$lX-0iv?j-.KvM1)PTkkG5m^J]IT|*.T^qtE[6wcSe');
define('LOGGEDINKEY', '? dSBnt/OWu-=uE=v?kp+0PNZ=tL,o?yxKl.!M7%IOeY}zn=;%-+G${)WW3X7 ]@');
define('NONCEKEY', 'xIo3T?/Jsx4&CmoUye33bGcHp1/<EVO{Oei)Wd<Hm(6Y!1k&cu-rdsH-v;q]wR{');
define('AUTHSALT', 'hez6nKZe6-2wK,iC5OMO<P]X*LazS@#/E;@9AJQGIV[m-NcL2Tre@xQ&)!qV( @r');
define('SECUREAUTHSALT', '+|gu^U>z@SdbowM3y%z89+F@gYEhkxlpRojynYBr^d3XJNqaK|-G7li@H[h$@-5m');
define('LOGGEDINSALT', 'r-V=v@JPpO!:WT}?7?@Y&6AnE-|&|FLwO=8aS$:f,esS: |ZVJa[;/e0/PTN/-J>');
define('NONCESALT', 'iiF|JOnK4rv8+Y{DRaT9<;qYxrT%<^n}:A%/~XBcg$ g)&MGhbiLHmLa#puVKQ');
// 不要直接复制!请使用自己生成的! //
6.3.3 更改配置
接下来打开 wp-config.php
文件并编辑:
sudo nano wp-config.php
在文件中找到以下设置并更改:
...
// yourdatabasename 改为你的数据库名称
define( 'DBNAME', 'yourdatabasename');
// yourusername 改为你的用户名
define( 'DBUSER', 'yourusername');
// yourpassword 改为你的用户密码
define( 'DBPASSWORD', 'yourpassword');
// 建议更改 `tableprefix` 的默认值 `wp`
$tableprefix = '建议改为其他';
...
以上完成后按 crtl
+ x
键,再按 y
键保存并退出。
7. 配置 nginx
首先为网站创建一个 nginx
配置文件:
// 如果目录中没有 `sites-available` 文件夹需先创建
// 创建 `sites-available` 和 `sites-enabled` 文件夹
sudo mkdir /etc/nginx/sites-available
sudo mkdir /etc/nginx/sites-enabled
// 然后新建 nginx 配置并编辑
sudo nano /etc/nginx/sites-available/yourwebsite.conf
直接粘贴上以下内容:
⚠️ 要使用域名访问网站,请先在托管平台将域名解析到服务器。
server {
listen 80;
listen [::]:80;
// yourdomain.com 替换为域名名称
// (不建议)如果没有域名,可以使用 IP
// server_name 1.2.3.4
server_name yourdomain.com;
// yourwebsite 替换为网站目录名称
root /var/www/yourwebsite;
// 取消以下两行的注释开启日志记录
// access_log /var/log/nginx/access.log combined buffer=512k flush=1m;
// error_log /var/log/nginx/error.log warn;
// index.php
index index.php;
location / {
try_files $uri $uri/ /index.php?$query_string;
}
location ~ \.php$ {
fastcgi_pass unix:/var/run/php/php8.2-fpm.sock;
include fastcgi_params;
}
}
SSL 配置使用以下配置:
server {
listen 443;
listen [::]:443;
http2 on;
// yourdomain.com 替换为域名名称
// (不建议)如果没有域名,可以使用 IP
// server_name 1.2.3.4
server_name yourdomain.com;
// yourwebsite 替换为网站目录名称
root /var/www/yourwebsite;
// SSL 证书路径
ssl_certificate /path/to/your/ssl.pem;
ssl_certificate_key /path/to/your/ssl.key;
// 取消以下两行的注释开启日志记录
// access_log /var/log/nginx/access.log combined buffer=512k flush=1m;
// error_log /var/log/nginx/error.log warn;
// index.php
index index.php;
location / {
try_files $uri $uri/ /index.php?$query_string;
}
location ~ \.php$ {
fastcgi_pass unix:/var/run/php/php8.2-fpm.sock;
include fastcgi_params;
}
}
以上完成后按 crtl
+ x
键,再按 y
键保存并退出。
📝 你也可以使用 NGINXConfig - 由 DigitalOcean 维护的一个开源的 nginx 配置生成器,可以帮助简单快速生成 nginx 配置。
配置好后可以使用以下命令检测配置文件:
sudo nginx -t
// 配置正常会提示,否则会提示报错信息
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful
接下来给配置文件创建一个软链接使其生效:
sudo ln -s /etc/nginx/sites-available/yourwebsite.conf /etc/nginx/sites-enabled/
以上就完成了配置,最后重启一下 nginx
以使更改生效:
sudo systemctl restart nginx
8. 初始化 WordPress
现在,在浏览器中访问网站域名 http://yourdomain.com/
or IP http://server_ip
,如果配置了 SSL,则访问 https://yourdomain.com/
。
接下来将看到 WordPress 初始化安装,以下步骤:
8.1 选择语言
WordPress language selection page
8.2 网站命名
8.3 管理员账户
- 用户名避免使用
admin
或者root
名称 - 程序会自动生成一个强密码或,密码应妥善保存
- 或者你可以自行设置密码,建议应混合大小写字母、数字和符号,至少 12 位长度
8.4 其他设置
- 邮箱将会绑定到管理员账户,必要时可用来找回密码
- 是否要阻止搜索引擎索引网站,该选项后续仍可调整
8.5 完成设置
WordPress 设置完成界面
点击 安装 WordPress
后,将跳转到登录界面。
登录后即进入 WordPress 管理面板。
WordPress 管理面板
总结
以上,就完成了在 Debian 12 服务器上搭建 LEMP 环境和安装 WordPress 并配置,LEMP 的组合能提供比较好的性能,并能高效地处理访问流量。
Next?
网站运行后,还有一些可探索/优化:
- 控制面板:在这里可以管理网站的所有内容、安装主题和插件以及配置网站设置
- 主题:WordPress 拥有非常多的的免费和付费主题,适用于各种样式和功能需求
- CDN:提高网站速度和性能可以考虑 CDN,比如赛博菩萨 Cloudflare,或者功能插件 W3 Total Cache
- SEO 优化:Yoast SEO 等插件可以指导进行搜索引擎优化,帮助提高网站在搜索引擎中的排名
- 安全措施:除了及时安装安全更新外,还可考虑使用 Wordfence 等安全插件来保护网站
- 定期备份:可以自己写脚本定时备份,或者使用 UpdraftPlus 或 Jetpack 等插件
- 在线监控:Uptime Kuma - 一款十分好用的自托管监控工具,免费、开源、轻便
- 流量分析:使用 Google Analytics 或者 Umami 等工具帮助分析网站流量
标题:在 Debian 12 上搭建 LEMP + 安装 WordPress
日期:2024-10-22
链接:https://logs.do/logs/install-wordpress-on-debian-12-with-lemp.html
许可:© CC BY 4.0 · 转载请保留原文链接及作者
目录确实不错
haha 目前目录就发现还有一个动画的小问题,不过我自己也没找到复现的规律,所以暂时忽略了。
需要的话可以 share 给你更改成你的三栏式结构(我觉得之前那个 sidebar 用处不大,就直接替换掉了)