本文是我对个人博客建立的经验总结,内容可能有不周到或不严谨之处,如有谬误还望指出,感谢各位。
搭载博客的服务器基于ubuntu22.04环境,最初用途是用于搭建跑团网站。出于充分利用服务器资源的考量,我决定顺便用wordpress搭建一个博客网站,拿来存放较私人的文本以及一些资料。我在linux系统配置上可谓小白,但出于学习的目的采用了手动搭建的形式。期间碰壁不少,故此总结个人的安装经历,以供各位参考。
1、安装依赖
第一步,安装LEMP堆栈作为必要的前置需求。先更新系统。
sudo apt update
安装unzip解压软件备用。
sudo apt install unzip
安装Nginx web服务器。
sudo apt install nginx
使Nginx在服务器开机时自启。
sudo systemctl enable nginx
安装MariaDB数据库服务器。这里也可以选用MySQL作为替代。
sudo apt install mariadb-server mariadb-client
使MariaDB在服务器开机时自启。
sudo systemctl enable mariadb
安装PHP及相关扩展。注意必须安装PHP8.0及以下的版本,高版本可能产生错误。这里安装的是PHP7.4版本。
sudo apt install php7.4 php7.4-cli php7.4-fpm php7.4-mysql php7.4-json php7.4-opcache php7.4-mbstring php7.4-xml php7.4-gd php7.4-curl php7.4-cgi
使PHP在服务器开机时自启。
sudo systemctl enable php7.4-fpm
创建Nginx服务器块并配置Nginx。
sudo rm /etc/nginx/sites-enabled/default
sudo vim /etc/nginx/conf.d/default.conf
将以下文本粘贴到文件中。
server {
listen 80;
listen [::]:80;
server_name _;
root /usr/share/nginx/html/;
index index.php index.html index.htm index.nginx-debian.html;
location / {
try_files $uri $uri/ /index.php;
}
location ~ \.php$ {
fastcgi_pass unix:/run/php/php7.4-fpm.sock;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
include snippets/fastcgi-php.conf;
}
# A long browser cache lifetime can speed up repeat visits to your page
location ~* \.(jpg|jpeg|gif|png|webp|svg|woff|woff2|ttf|css|js|ico|xml)$ {
access_log off;
log_not_found off;
expires 360d;
}
# disable access to hidden files
location ~ /\.ht {
access_log off;
log_not_found off;
deny all;
}
}
检查Nginx配置是否加载成功并重启Nginx服务。
sudo nginx -t
sudo systemctl reload nginx
2、安装并配置wordpress
下载wordpress。
wget https://wordpress.org/latest.zip
解压wordpress。
sudo mkdir -p /usr/share/nginx
sudo unzip latest.zip -d /usr/share/nginx/
以root身份登入MariaDB。
sudo mariadb -u root
创建wordpress数据库及用户,并授予权限。这里的数据库、用户名和密码请改成自己需要使用的版本。
create database 数据库
grant all privileges on 数据库.* to 用户名@localhost identified by ‘密码’
刷新权限表以使更改生效,然后退出。
flush privileges
exit
编辑wordpress配置文件。
cd /usr/share/nginx/wordpress/
sudo cp wp-config-sample.php wp-config.php
sudo vim wp-config.php
将以下文本中的数据库、用户名和密码更改为MariaDB中设置的对应版本。
/** The name of the database for WordPress */
define(‘DB_NAME’, ‘数据库名称’);
/** MySQL database username */
define(‘DB_USER’, ‘用户名’);
/** MySQL database password */
define(‘DB_PASSWORD’, ‘密码’);
将 Nginx 用户设置为 WordPress 站点目录的所有者。
sudo chown www-data:www-data /usr/share/nginx/wordpress/ -R
创建wordpress服务器块。
sudo vim /etc/nginx/conf.d/wordpress.conf
将以下文本放入其中,之后记得重新加载nginx。
server {
listen 80;
listen [::]:80;
server_name www.wordpress wordpress;
root /usr/share/nginx/wordpress/;
index index.php index.html index.htm index.nginx-debian.html;
location / {
try_files $uri $uri/ /index.php;
}
location ~ ^/wp-json/ {
rewrite ^/wp-json/(.*?)$ /?rest_route=/$1 last;
}
location ~* /wp-sitemap.*\.xml {
try_files $uri $uri/ /index.php$is_args$args;
}
error_page 404 /404.html;
error_page 500 502 503 504 /50x.html;
client_max_body_size 20M;
location = /50x.html {
root /usr/share/nginx/html;
}
location ~ \.php$ {
fastcgi_pass unix:/run/php/php8.1-fpm.sock;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
include snippets/fastcgi-php.conf;
fastcgi_buffers 1024 4k;
fastcgi_buffer_size 128k;
# Add headers to serve security related headers
add_header X-Content-Type-Options nosniff;
add_header X-XSS-Protection “1; mode=block”;
add_header X-Permitted-Cross-Domain-Policies none;
add_header X-Frame-Options “SAMEORIGIN”;
}
#enable gzip compression
gzip on;
gzip_vary on;
gzip_min_length 1000;
gzip_comp_level 5;
gzip_types application/json text/css application/x-javascript application/javascript image/svg+xml;
gzip_proxied any;
# A long browser cache lifetime can speed up repeat visits to your page
location ~* \.(jpg|jpeg|gif|png|webp|svg|woff|woff2|ttf|css|js|ico|xml)$ {
access_log off;
log_not_found off;
expires 360d;
}
}
到这里安装就已大功告成。可以打开自己的公网ip或域名(如果有的话)并进行wordpress初始化设置了。如果安装成功的话会出现如下画面。
之后按提示安装即可。
3、启用HTTPS设置
关于HTTPS加密,我选择了最为大众化的Let’s Encrypt。首先安装certbot客户端。
sudo snap install –classic certbot
运行certbot以自动获取并配置证书。
sudo certbot –nginx
测试certbot的自动续订功能。
sudo certbot renew –dry-run
测试成功就可以确保HTTPS加密流量访问正常运作了。
4、总结
避坑经验主要有以下几点:
1、PHP不要安装8.1以上的版本,否则可能会使wordpress无法运行;
2、用命令运行PHP时记得加版本号,如PHP7.4-fpm;
3、编辑完相关配置文件后记得重启相应程序,如nginx;
4、如安装完毕后无法加载出页面或加载到其它页面,请先检查80端口是否已打开或被占用,命令为netstat -tulnp | grep 80。同时检查防火墙状态,如防火墙阻止80端口访问,可以输入sudo ufw allow http打开TCP端口80;
5、如安装完毕后加载页面显示502错误,请检查nginx配置文件或php-fpm是否正确启用。
参考:Install and configure WordPress | Ubuntu
云服务器 手动搭建 WordPress 个人站点(Linux)-最佳实践-文档中心-腾讯云 (tencent.com)
Linux下从零搭建WordPress_linux .htaccess wordpress 路径-CSDN博客
Ubuntu22.04安装WordPress教程(利用nginx环境和MariaDB数据库,安装使用WordPress)_ubuntu 22.04安装wordpress-CSDN博客
总结|在Ubuntu 22.04上设立WordPress – frank3215 – 博客园 (cnblogs.com)