本文文章均首发于我的博客:。点击前往浏览我的更多文章。若无特殊说明,未经许可禁止转载。转载需保留此段文字。
选择Wordpress的原因
经典。虽然Hexo和Typecho主题繁多,也有很多很好看的主题,但是我还是选择了这个很传统的系统。也不支持Markdown(虽然目前我还不是很会用Markdown,不过至少有Typora这种所见即所得的Markdown软件可以供我使用)。
Hexo因为是静态博客,原生不支持评论系统,所以我也没考虑。不过有时间的话,我会把它装在我的Github Pages上面。Typecho,对啊,是个好问题,为什么没用(可能是没看见,搭好了才看见),不过无所谓了。(补充:太 老 了)
除此之外,我还看见了Mix-Space这种很好看的主题,不过,我看了一下它的部署方法,比较复杂,虽然勉强能搞明白,不过还是算了吧。
Wordpress好看的主题也就Sakara&Argon两个,我选择了Argon。因为Sakura的设置比较复杂,不够简单(虽然自带的特效很多,对于这些特效的优化也挺好)。
安装Wordpress
本文所采用的安装方法均为最新版。这样做的好处是可以通过Apt等包管理器管理,而不必make install
。同时Nginx高版本支持添加动态模块(后面有时间我会单开一章说明),可以不必手动编译安装。采用MariaDB主要是因为MariaDB非商业化,实际使用与Mysql相同。
安装Nginx
详细步骤参见Nginx官方文档,摘录如下:
安装依赖:
代码语言:javascript复制sudo apt install curl gnupg2 ca-certificates lsb-release ubuntu-keyring
导入密钥:
代码语言:javascript复制curl https://nginx.org/keys/nginx_signing.key | gpg --dearmor | sudo tee /usr/share/keyrings/nginx-archive-keyring.gpg >/dev/null
gpg --dry-run --quiet --no-keyring --import --import-options import-show /usr/share/keyrings/nginx-archive-keyring.gpg
导入Stable/Mainline对应Source.list
:
echo "deb [signed-by=/usr/share/keyrings/nginx-archive-keyring.gpg] http://nginx.org/packages/ubuntu `lsb_release -cs` nginx" | sudo tee /etc/apt/sources.list.d/nginx.list
echo "deb [signed-by=/usr/share/keyrings/nginx-archive-keyring.gpg] http://nginx.org/packages/mainline/ubuntu `lsb_release -cs` nginx" | sudo tee /etc/apt/sources.list.d/nginx.list
修改优先级:
代码语言:javascript复制echo -e "Package: *nPin: origin nginx.orgnPin: release o=nginxnPin-Priority: 900n" | sudo tee /etc/apt/preferences.d/99nginx
安装Nginx:
代码语言:javascript复制sudo apt update sudo apt install nginx
安装PHP
导入PPA:
代码语言:javascript复制sudo add-apt-repository ppa:ondrej/php -y
安装PHP:(此处仅为Nginx要求模块)
代码语言:javascript复制sudo apt install php8.3 php8.3-fpm php8.3-cli
可以自行选择模块安装,可通过如下命令搜索
代码语言:javascript复制sudo apt search php8.3-
安装MariaDB
详细步骤参见MariaDB官方文档,摘录如下:
导入密钥:
代码语言:javascript复制sudo apt-get install apt-transport-https curl
sudo mkdir -p /etc/apt/keyrings
sudo curl -o /etc/apt/keyrings/mariadb-keyring.pgp ' https://mariadb.org/mariadb_release_signing_key.pgp '
新建/etc/apt/sources.list.d/mariadb.sources
并复制以下内容:
# MariaDB 11.2 repository list - created 2024-02-03 02:31 UTC
# https://mariadb.org/download/
X-Repolib-Name: MariaDB
Types: deb
# deb.mariadb.org is a dynamic mirror if your preferred mirror goes offline. See https://mariadb.org/mirrorbits/ for details.
# URIs: https://deb.mariadb.org/11.2/ubuntu
URIs: https://mirrors.xtom.com/mariadb/repo/11.2/ubuntu
Suites: jammy
Components: main main/debug
Signed-By: /etc/apt/keyrings/mariadb-keyring.pgp
或者采用旧的Apt格式,新建/etc/apt/sources.list.d/mariadb.list
并复制以下内容:
# MariaDB 11.2 repository list - created 2024-02-03 02:31 UTC
# https://mariadb.org/download/
# deb.mariadb.org is a dynamic mirror if your preferred mirror goes offline. See https://mariadb.org/mirrorbits/ for details.
# deb [signed-by=/etc/apt/keyrings/mariadb-keyring.pgp] https://deb.mariadb.org/11.2/ubuntu jammy main
deb [signed-by=/etc/apt/keyrings/mariadb-keyring.pgp] https://mirrors.xtom.com/mariadb/repo/11.2/ubuntu jammy main
# deb-src [signed-by=/etc/apt/keyrings/mariadb-keyring.pgp] https://mirrors.xtom.com/mariadb/repo/11.2/ubuntu jammy main
安装MariaDB:
代码语言:javascript复制sudo apt-get update
sudo apt-get install mariadb-server
下载Wordpress
使用cd
切换到需要安装Wordpress的目录,然后wget
下载安装包,unzip
解压:
wget https://cn.wordpress.org/latest-zh_CN.zip
unzip latest-zh_CN.zip
使用chmod
和chown
更改权限(重要),在这里我更改所有者为www-data
,这是PHP的默认用户,你也可以更改为其它用户,同时也要修改Nginx和PHP的对应配置
chmod 755 wordpress -R
chown www-data:www-data wordpress -R
到这里为止,基本的安装工作都已经完成,接下来将会进行一些配置来进行安装Wordpess的工作。
配置环境
配置Nginx
因为通过apt安装,所以Nginx的配置文件在/etc/nginx
。主配置文件是nginx.conf
,这个配置文件一共由三部分组成,分别为全局块、events块和http块。在http块中,又包含http全局块、多个server块。每个server块中,可以包含server全局块和多个location块。在同一配置块中嵌套的配置块,各个之间不存在次序关系。
配置文件支持大量可配置的指令,绝大多数指令不是特定属于某一个块的。同一个指令放在不同层级的块中,其作用域也不同,一般情况下,高一级块中的指令可以作用于自身所在的块和此块包含的所有低层级块。如果某个指令在两个不同层级的块中同时出现,则采用“就近原则”,即以较低层级块中的配置为准。比如,某指令同时出现在http全局块中和server块中,并且配置不同,则应该以server块中的配置为准。
nginx.conf
需要修改的配置如下:(这里我使用与PHP相同的用户,方便调用PHP)
user www-data;
在conf.d中,默认存在default.conf
,此文件中的配置会被优先使用。个人建议还是删除/注释掉此文件,以免影响到个人配置。我的个人配置如下,请依照实际情况修改
server {
listen 443 ssl; //HTTPS监听
http2 on; //开启HTTP2
server_name www.example.com; //此处修改为你的域名
ssl_certificate /etc/nginx/cert/cf.pem; //证书路径,修改为自己的
ssl_certificate_key /etc/nginx/cert/cf.key;
ssl_session_timeout 1d;
ssl_session_cache shared:MozSSL:10m; # about 40000 sessions
ssl_dhparam /etc/nginx/cert/dhparam.pem; //公共密钥
add_header X-XSS-Protection 1;
ssl_protocols TLSv1.1 TLSv1.2 TLSv1.3;
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:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384:DHE-RSA-CHACHA20-POLY1305:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA256:ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES128-SHA:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA:ECDHE-RSA-AES256-SHA:DHE-RSA-AES128-SHA256:DHE-RSA-AES256-SHA256:AES128-GCM-SHA256:AES256-GCM-SHA384:AES128-SHA256:AES256-SHA256:AES128-SHA:AES256-SHA:DES-CBC3-SHA; //加密算法
ssl_prefer_server_ciphers off;
#HSTS HPKP OCSP
add_header Strict-Transport-Security "max-age=63072000" always;
add_header Public-Key-Pins 'pin-sha256="klKsARIDn8AL7KefboUkSGZfcFrIVJwpxj8gq0C7f/E="; pin-sha256="81Wf12bcLlFHQAfJluxnzZ6Frg oJ9PWY/Wrwur8viQ="; max-age=2592000';
#ssl_stapling on;
#ssl_stapling_verify on;
#resolver 8.8.8.8 223.5.5.5 valid=60s; //OCSP因为自签名证书而不可用
#resolver_timeout 3s;
root /usr/share/nginx/wordpress; //Wordpress根目录
location / {
try_files $uri $uri/ /index.php?$args; //伪静态
index index.php;
}
rewrite /wp-admin$ $scheme://$host$uri/ permanent;
location ~ .php$ {
fastcgi_pass unix:/run/php/php8.3-fpm.sock; //套接字监听,注意在PHP中修改对应监听
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
}
server {
listen 80; //HTTP自动重定向
server_name www.example.com; //此处修改为你的域名
return 301 https://$host$request_uri;
}
配置PHP
PHP的配置文件位于/etc/php/{版本名}/fpm,没有什么需要专门修改,酌情修改以下配置即可
php.ini
:
max_execution_time = 300
memory_limit = 256M
post_max_size = 1024M
www.conf
:
user = www-data
group = www-data
listen = /run/php/php8.3-fpm.sock
listen.owner = www-data
listen.group = www-data
配置MariaDB
建立Wordpress的数据库以便之后Wordpress链接。首先输入mariadb
进入MariaDB数据库内,此时无密码,可直接进入,进入数据库后首先修改密码。注意:MariaDB命令以“;”结尾。
ALTER USER 'root'@'localhost' IDENTIFIED BY 'password';
然后创建名为“wordpress"的数据库和用户,为用户设置"password”的密码,给予此用户对"wordpress"数据库的所有权限。最后,刷新权限并退出数据库。
代码语言:javascript复制create database wordpress;
create user 'wordpress'@'localhost' identified by 'password';
grant all privileges on wordpress.* to 'wordpress'@'localhost' identified by 'password';
flush privileges;
exit;
进行如上步骤后,MariaDB已经配置完成。一定要先建立并配置好config.php
后再尝试访问Wordpress页面,否则会报错。
配置Wordpress
cd
进入wordpress目录,将wp-config-sample.php
复制一份,重命名为wp-config.php
,修改以下内容为你配置的数据库内容并保存(注意wp-config.php
的所有者和权限):
/** The name of the database for WordPress */
define( 'DB_NAME', 'wordpress' );
/** Database username */
define( 'DB_USER', 'wordpress' );
/** Database password */
define( 'DB_PASSWORD', 'password' );
修改完以上配置后,对于Wordpress的环境配置已经完成,可以尝试访问你的域名开始安装Wordpress了。还有一件事,不要忘记放行对应端口和做好域名解析。安装完Wordpress后,接下来就是Nginx和PHP的配置调优,以及Wordpress的自定义了,这些内容我会在接下来逐步记录。