为什么要写该教程
本文是对自己安装 WordPress 过程的一个总结。在安装过程中,翻阅了很多资料、教程,但是没有完全满足个人要求的教程。有的是其他环境比如 Apache2 ,有的是 CentOS。
所以既然自己成功安装了 WordPress,就顺便记录一下自己的安装过程,给可能需要的人提供一点帮助。
搭建过程主要参考了 总结|在Ubuntu 22.04上设立WordPress – frank3215 – 博客园,是在该作者的基础上进行增改,也增加了一些操作解释。
环境要求
Ubuntu
PHP 7.4
/PHP 8.0
(据说PHP 8.1
可能会产生错误,但没亲自试过)Nginx
MySQL 8.0+
如果是其他的环境,本文可能提供不了帮助。
安装依赖
开始之前,更新软件包索引
sudo apt-get update
Nginx
sudo apt-get install nginx
MySQL
# 安装 mysql 及所需依赖
sudo apt-get install mysql-client-core-8.0 mysql-server-core-8.0 mysql-server mysql-client --fix-missing
# 启动 mysql 服务
sudo service mysql start
PHP
添加第三方软件源以安装 PHP
sudo apt install software-properties-common ca-certificates lsb-release apt-transport-https
LC_ALL=C.UTF-8 sudo add-apt-repository ppa:ondrej/php
更新软件源
sudo apt update
安装 php8.0
sudo apt-get install php8.0 php8.0-cli php8.0-fpm php8.0-mysql php8.0-opcache php8.0-mbstring php8.0-xml php8.0-gd php8.0-curl php8.0-cgi
如果要安装 php7.4
,请参考 总结|在Ubuntu 22.04上设立WordPress – frank3215 – 博客园
设置开机自启动
sudo systemctl enable php8.0-fpm
下面的命令可以查看运行状态
sudo systemctl status php8.0-fpm
注意:/etc/php/8.0/fpm/php.ini
中可修改上传文件的大小限制
安装并配置 WordPress
下载 WordPress
下载并解压最新版的 WordPress
wget https://wordpress.org/latest.zip
unzip latest.zip
# 如果未安装 unzip 请提前安装
sudo apt install unzip
用 MySQL 建立数据库
以管理员登录数据库
sudo mysql -u adminusername -p
创建数据库 wordpress
CREATE DATABASE wordpress;
创建用户和设置密码( password
可以自己任意设置),并给予权限
CREATE USER 'wordpress'@'localhost' IDENTIFIED BY 'password';
GRANT ALL PRIVILEGES ON * . * TO 'wordpress'@'localhost';
FLUSH PRIVILEGES;
EXIT;
修改 wp-config.php
进入 wordpress
文件夹,复制 wp-config-sample.php
为 wp-config.php
cd wordpress
cp wp-config-sample.php wp-config.php
打开 wp-config.php
,修改以下内容
首先修改数据库设置, password
为前面设置的密码
// ** Database settings - You can get this info from your web host ** //
/** The name of the database for WordPress */
define( 'DB_NAME', 'wordpress' );
/** Database username */
define( 'DB_USER', 'wordpress' );
/** Database password */
define( 'DB_PASSWORD', 'password' );
/** Database hostname */
define( 'DB_HOST', 'localhost' );
然后找到以下内容,填入 生成器 中随机生成的值
/** Authentication Unique Keys and Salts. */
define( 'AUTH_KEY', '' );
define( 'SECURE_AUTH_KEY', '' );
define( 'LOGGED_IN_KEY', '' );
define( 'NONCE_KEY', '' );
define( 'AUTH_SALT', '');
define( 'SECURE_AUTH_SALT', '' );
define( 'LOGGED_IN_SALT', '' );
define( 'NONCE_SALT', '' );
最后回到上一级目录,将整个 wordpress
移动到 /var/www/html/
中,这是 Nginx 服务器的默认文件目录
cd ..
sudo mv wordpress /var/www/html/wordpress
设置正确的文件权限和所有权,以确保
- Web 服务器(
www-data
用户)能够读取和写入必要的文件。 - 其他用户只能读取文件和目录,而不能修改它们。
chown -R www-data:www-data /var/www/html
sudo find /var/www/html/wordpress -type d -exec chmod 755 {} \;
sudo find /var/www/html/wordpress -type f -exec chmod 644 {} \;
配置 Nginx
修改 /etc/nginx/sites-available/wordpress
,没有则自己创建,其中 example.com
改为自己的域名
# WordPress 站点配置文件
server {
# 监听 HTTP 请求
listen 80;
listen [::]:80;
# 定义网站的域名
server_name example.com;
# 设置网站的根目录
root /var/www/html/wordpress;
# 定义默认的索引文件
index index.php index.html index.htm index.nginx-debian.html;
# 处理网站根路径请求
location / {
# 如果请求的文件或目录不存在,则转发到 index.php
try_files $uri $uri/ /index.php?$args;
}
# 处理 WordPress 站点地图
location ~* /wp-sitemap.*\.xml {
# 如果站点地图文件不存在,则转发到 index.php
try_files $uri $uri/ /index.php$is_args$args;
}
# 设置上传文件大小限制
client_max_body_size 100M;
# 处理 PHP 文件
location ~ \.php$ {
# 将 PHP 文件的处理请求转发到 PHP-FPM 服务
fastcgi_pass unix:/run/php/php8.0-fpm.sock;
# 设置脚本文件路径
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
# 包含 FastCGI 参数文件
include fastcgi_params;
include snippets/fastcgi-php.conf;
# 设置 FastCGI 缓冲区大小
fastcgi_buffer_size 128k;
fastcgi_buffers 4 128k;
# 拦截并处理 PHP 错误
fastcgi_intercept_errors on;
}
# 启用 Gzip 压缩
gzip on;
gzip_comp_level 6; # 压缩级别
gzip_min_length 1000; # 最小压缩长度
gzip_proxied any; # 允许对代理请求进行压缩
gzip_disable "msie6"; # 禁止对 IE6 浏览器进行压缩
# 定义需要压缩的 MIME 类型
gzip_types
application/atom+xml
application/geo+json
application/javascript
application/x-javascript
application/json
application/ld+json
application/manifest+json
application/rdf+xml
application/rss+xml
application/xhtml+xml
application/xml
font/eot
font/otf
font/ttf
image/svg+xml
text/css
text/javascript
text/plain
text/xml;
# 处理静态资源(图片、音频、视频等)
location ~* \.(?:css(\.map)?|js(\.map)?|jpe?g|png|gif|ico|cur|heic|webp|tiff?|mp3|m4a|aac|ogg|midi?|wav|mp4|mov|webm|mpe?g|avi|ogv|flv|wmv)$ {
# 设置缓存过期时间为 90 天
expires 90d;
# 关闭访问日志记录
access_log off;
}
# 处理字体和 SVG 文件
location ~* \.(?:svgz?|ttf|ttc|otf|eot|woff2?)$ {
# 允许跨域请求这些资源
add_header Access-Control-Allow-Origin "*";
# 设置缓存过期时间为 90 天
expires 90d;
# 关闭访问日志记录
access_log off;
}
# 保护敏感文件(如 .htaccess)
location ~ /\.ht {
# 禁止访问这些文件
deny all;
# 关闭日志记录
access_log off;
log_not_found off;
}
}
最后在 Nginx Web 服务器中启动 WordPress 站点,并检查配置文件是否正确,最后重启 Nginx 服务
sudo ln -s /etc/nginx/sites-available/wordpress /etc/nginx/sites-enabled/
sudo nginx -t
sudo systemctl restart nginx
现在应该可以在 example.com
上看见 WordPress 页面
如果没有域名,则可通过 80 端口访问,在此之前,先将服务器上的 80 端口转发到本地
WordPress 安装界面如下
更简单的方法
如果在阿里云上购买的云服务器,可以直接在镜像市场中寻找对应的 WordPress 镜像,即开即用。