服务器搭建记录 · Wordpress

举报
苡淞 发表于 2024/02/05 11:11:54 2024/02/05
【摘要】 服务器搭建记录 · Wordpress

本文文章均首发于我的博客。若无特殊说明,未经许可禁止转载。转载需保留此段文字。

选择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官方文档,摘录如下:


安装依赖:


sudo apt install curl gnupg2 ca-certificates lsb-release ubuntu-keyring


导入密钥:


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


修改优先级:


echo -e "Package: *\nPin: origin nginx.org\nPin: release o=nginx\nPin-Priority: 900\n" \ | sudo tee /etc/apt/preferences.d/99nginx


安装Nginx:


sudo apt update sudo apt install nginx


安装PHP


导入PPA:


sudo add-apt-repository ppa:ondrej/php -y


安装PHP:(此处仅为Nginx要求模块)


sudo apt install php8.3 php8.3-fpm php8.3-cli


可以自行选择模块安装,可通过如下命令搜索


sudo apt search php8.3-


安装MariaDB


详细步骤参见MariaDB官方文档,摘录如下:


导入密钥:


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:


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


使用chmodchown更改权限(重要),在这里我更改所有者为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"数据库的所有权限。最后,刷新权限并退出数据库。


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的自定义了,这些内容我会在接下来逐步记录。


【版权声明】本文为华为云社区用户原创内容,未经允许不得转载,如需转载请自行联系原作者进行授权。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。