使用wordpress搭建博客

前言

之前有用过hexo搭建博客,最近听说有个wordpress的CMS管理工具,可以搭建博客也可以搭建网站,正好最近使用hexo发现hexo的一些缺点想换换看有什么好的搭建博客的方式,可以让我免去面对可能存在的频繁换服务器换电脑(因为没有公网买的服务器是限时的可能突然就没续费了。或者换电脑了)而需要经常迁移的烦恼。每次迁移都会遇到很多问题,需要安装node.js,安装git,配置git什么的,中间还会时不时冒出许多问题。每次需要花很长时间重建。尝试一下看wordpress能不能方便点。另一方面也学习一下,毕竟据说又40%的网站用wordpress搭建的,也学习下看看有何奇妙之处。
声明一下:我是非专业的小白,只是爱折腾,在折腾过程中学习。不止从什么时候开始折腾也变成了自己的兴趣。

教程我找的“雨尽枫生的教程

第一步安装LNMP堆栈

首先第一步就是安装LNMP堆栈,有两种方式一种是LAMP,因为我用过nginx,所以我选择了LNMP这种方式的教程。

1、更新软件包

1
sudo apt update && sudo apt upgrade -y

2、安装nginx Web服务器

因为我安装过了所以我跳过了,命令如下。

1
sudo apt install nginx

然后是配置nginx开机自启动啥这个之前弄过了其实都一样都是。

1
sudo systemctl start nginx

启动

1
sudo systemctl enable nginx

设置开机启动

1
sudo systemctl status nginx

查看状态

3、安装 MariaDB 数据库服务器

这个找到MariaDB是MySQL的平替,是MySQL原作者在2009年开源的。所以我也用这个了。
sudo apt install mariadb-server mariadb-client
这里我出现了一个报错
Unable to locate package mariadb-server mariadb-client
搜索了一下发现你的系统可能没有正确配置软件源,导致无法找到 MariaDB 的包。
马上开启科学上网(我的服务器是放在软路由下)没有条件的就搜索下怎么换源。

1
apt install mariadb-server mariadb-client

同样设置开机自启动

1
sudo systemctl start mariadb
1
sudo systemctl enable mariadb

4、安装PHP

这是第一次用PHP,按照教程来(下面这里有错误看完这个章节选正确的命令运行)

1
sudo apt install php8.1 php8.1-fpm php8.1-mysql php8.1-cli php8.1-common php-json p php8.1-readline php8.1-mbstring php8.1-xml php8.1-gd php8.1-curl

这里安装过程中出现了跟上面一样类型的报错,无法找到php8.1包。我看了下好像今天2025年2月20日现在是8.4版本了。尝试改成8.4结果8,4的包也找不到。
尝试添加 Ondrej Surý 的 PPA 仓库
PHP 8.4 并未默认包含在 Ubuntu 的标准仓库中,因此需要添加 Ondrej Surý 维护的 PPA 仓库,该仓库提供了最新的 PHP 版本及其扩展。
运行以下命令添加 PPA 仓库:

1
2
sudo LC_ALL=C.UTF-8 add-apt-repository ppa:ondrej/php
sudo apt update

还是不行,提示错误变成了

1
Unable to locate package p

教程中代码多了个P删除后
错误变成了

1
E: Package 'php8.1-json' has no installation candidate

搜索了一下
php8.1-json 包无法找到,这可能是因为某些扩展包的命名在不同版本的 Ubuntu 中有所不同。在 Ubuntu 22.04 中,php8.1-json 已被整合到 php8.1-common 包中。因此,你不需要单独安装 php8.1-json,而是可以通过安装 php8.1-common 来获取 JSON 支持。
那就删除php8.1-json再来一次。这次一次正常了。

1
apt install php8.1 php8.1-fpm php8.1-mysql php8.1-cli php8.1-common php8.1-readline php8.1-mbstring php8.1-xml php8.1-gd php8.1-curl
1
php -v

版本正常。okay继续往下走。

安装完上述扩展后启动启动 php-fpm。
这里直接启动php-fpm找不到,要带上安装的版本好才行。

1
sudo systemctl start php8.1-fpm

在启动时启用自动启动。

1
sudo systemctl enable php8.1-fpm

检查状态:

1
sudo systemctl status php8.1-fpm

若状态为active(running) 即可,

5、创建 Nginx 服务器块

这里按照教程来的话,我就要思考一下,因为我这个服务器的ngixn已经配置了两个配置路径。一个用来访问www.aohyi.cn的,一个用来访问blog.aohyi.cn的都是静态资源。
这里使用先删除/etc/nginx/sites-enabled/default我 之前配置的时候就删掉了。

1
sudo rm /etc/nginx/sites-enabled/default

然后创建一个新配置
教程中新配置是放在

1
sudo vim /etc/nginx/conf.d/default.conf

配置文件内容如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
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;
}
}

我这边为了给之前的配置,放一起,我就放在了。然后链接到/etc/nginx/sites-enabled/

1
2
3
4
/etc/nginx/sites-available/wordpress.conf
# 将配置文件问呗复制到wordpress.conf中。
sudo ln -s /etc/nginx/sites-available/php.conf /etc/nginx/sites-enabled
# 链接到sites-enabled启用配置

并且这里我绑定了一下三级域名在server_name 设置为wp.aohyi.cn
然后在域名解析里面设置wp.aohyi.cn的接一下ip
便于后面我访问我域名的wp.aohyi.cn来访问我需要访问的wordpress页面。
保存并关闭文件。然后测试 Nginx 配置。

1
sudo nginx -t

如果测试成功,需重新加载 Nginx。

1
sudo systemctl reload nginx

至此,LEMP堆栈安装完毕

第二步 搞了两个小时终于开始安装wordpress了。

1、下载wordpress

这里可以官方下载传上来。也可以用wget下载到对于目录。我习惯把项目文件放在/opt/下。
所以我在这里创建一个文件夹wordpress

1
cd /opt/wordpress

更新现有软件

1
sudo apt update && sudo apt upgrade

在终端中,键入 wget 命令,输入链接 ,下载wordpress

1
wget https://wordpress.org/latest.zip

随后使用以下命令解压缩下载的wordpress zip文档

1
sudo unzip latest.zip

然后解压出来后他会放在/opt/wordpress/wordpress下。为了方便,我减少了以及,使用FTP工具将文件复制到/opt/wordpress并删掉了latest.zip与复制过来后的空文件夹。

2、为 WordPress 网站创建数据库和用户

使用以下命令以 root 身份登录 MariaDB shell。

1
sudo mariadb -u root

登录后,使用以下命令为 WordPress 创建数据库。

1
create database wordpress;

然后输入以下命令为 WordPress 创建数据库用户。此命令还向用户授予 WordPress 数据库的所有权限。将 用户名和密码 替换为你自己要设置的用户名和密码。

1
grant all privileges on wordpress.* to 用户名@localhost identified by ‘密码’;

刷新权限表以使更改生效,然后退出 MariaDB shell。

1
2
flush privileges;
exit;

上面的命令后面的 “; ” 不能少。

3、配置 WordPress.

转到WordPress 所在目录。

1
cd /opt/wordpress/

复制示例配置文件并将其重命名为 :wp-config.php

1
sudo cp wp-config-sample.php wp-config.php

现在使用文本编辑器(如 vim)编辑新的配置文件。

1
sudo vim wp-config.php

找到以下行,并将下方中文文本替换为您在上一步中创建的数据库名称、用户名和密码。

1
2
3
4
5
6
7
8
/** The name of the database for WordPress */
define('DB_NAME', '这里填你自己创建的数据库名称');

/** MySQL database username */
define('DB_USER', '这里是你自己创建的用户名');

/** MySQL database password */
define('DB_PASSWORD', '这里是你自己设置的密码');

我们还需要使用以下命令将 Nginx 用户设置为 WordPress 站点目录的所有者。

1
sudo chown www-data:www-data /opt/wordpress/ -R

4、 为 WordPress 创建 Nginx 服务器块

这个前面创建过了。改一下配置就好。

1
/etc/nginx/site-available/wordpress.conf

修改一下改成下面内容

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
server {
listen 80;
listen [::]:80;
server_name wp.aohyi.cn;
root /opt/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 /opt/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;
}
}

保存并关闭文件。然后测试 Nginx 配置

1
nginx -t

如果测试成功,请重新加载 Nginx。

1
sudo systemctl reload nginx

在浏览器地址栏中如下输入。

1
wp.aohyi.cn/wp-admin/install.php

发现报错

1
Error establishing a database connection

好像是没连上数据库,又找了一圈解决方案。都没有解决,后来发现是我天配置文件填错了。我个蠢蛋!!!

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
/** The name of the database for WordPress */

define( 'DB_NAME', 'database_name_here' );



/** Database username */

define( 'DB_USER', 'username_here' );



/** Database password */

define( 'DB_PASSWORD', 'password_here' );



/** Database hostname */

define( 'DB_HOST', 'localhost' );

上面内容中我把,库名,用户,密码,填在了DB_NAME、DB_USER、DB_PASSWORD位置实际上应该填后面。被自己气哭了。修改后把值填在了xxxx_here位置后。搭建成功。

接下来,按照这个指引完成安装就行。

1
wp.aohyi.cn/wp-admin/install.php