现在的 sjh.moe 是运行在现成的 docker 上的,想想也不是长久的事。个人不懂运维,只知道碰到问题谷歌解决。现在打算现搭建一个测试站,来遇见一下不用 docker 跑 WP 可能遇到的问题。
安装 Ubuntu
此次安装选择 Ubuntu 18.04.1 LTS 系统,更换 SSH 端口,开启 tcp_bbr 。教程参考此处。
uname -r lsmod | grep bbr sudo modprobe tcp_bbr echo "tcp_bbr" | sudo tee --append /etc/modules-load.d/modules.conf echo "net.core.default_qdisc=fq" | sudo tee --append /etc/sysctl.conf echo "net.ipv4.tcp_congestion_control=bbr" | sudo tee --append /etc/sysctl.conf sudo sysctl -p sysctl net.ipv4.tcp_available_congestion_control sysctl net.ipv4.tcp_congestion_control lsmod | grep bbr
配置 LEMP
LEMP 是搭建网站的基础,此处使用 DigitalaOcean 教程。
安装 Nginx
sudo apt-get update && sudo apt-get install nginx -y
安装 MySQL
sudo apt-get install mysql-server -y sudo mysql_secure_installation
密码等级选择 1 (MEDIUM) ,输入符合标准的密码,其余选项均选择 YES 。
sudo mysql mysql> SELECT user,authentication_string,plugin,host FROM mysql.user; mysql> ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'password'; mysql> FLUSH PRIVILEGES; mysql> SELECT user,authentication_string,plugin,host FROM mysql.user; mysql> exit
安装 PHP
sudo apt install php-fpm php-mysql -y
创建 Nginx 配置文件 /etc/nginx/sites-available/xxx.xxx
server {
listen 80;
root /var/www/html;
index index.php index.html index.htm index.nginx-debian.html;
server_name xxx.xxx;
location / {
try_files $uri $uri/ =404;
}
location ~ \.php$ {
include snippets/fastcgi-php.conf;
fastcgi_pass unix:/var/run/php/php7.2-fpm.sock;
}
location ~ /\.ht {
deny all;
}
}
将配置文件链接至 sites-enabled ,删除
sites-enabled 内的 default 链接。
sudo ln -s /etc/nginx/sites-available/xxx.xxx /etc/nginx/sites-enabled/ sudo rm /etc/nginx/sites-enabled/default
测试配置文件并重启 Nginx
sudo nginx -t sudo systemctl reload nginx
测试 php 是否已正确配置
sudo nano /var/www/html/info.php
<?php phpinfo();
打开 http://your_server_domain_or_IP/info.php 查看是否显示正常。若显示正常,删除测试页面。
sudo rm /var/www/html/info.php
安装 WordPress
WP 安装教程同样参考 DigitalOcean ,见此处。
配置 MySQL
mysql -u root -p mysql> CREATE DATABASE wordpress DEFAULT CHARACTER SET utf8 COLLATE utf8_unicode_ci; mysql> GRANT ALL ON wordpress.* TO 'wordpressuser'@'localhost' IDENTIFIED BY 'password'; mysql> FLUSH PRIVILEGES; mysql> exit
安装额外 PHP 扩展
sudo apt install php-curl php-gd php-intl php-mbstring php-soap php-xml php-xmlrpc php-zip -y sudo systemctl restart php7.2-fpm
修改 Nginx 配置文件
server {
. . .
client_max_body_size 100M;
location = /favicon.ico { log_not_found off; access_log off; }
location = /robots.txt { log_not_found off; access_log off; allow all; }
location ~* \.(css|gif|ico|jpeg|jpg|js|png)$ {
expires max;
log_not_found off;
}
. . .
}
server {
. . .
location / {
#try_files $uri $uri/ =404;
try_files $uri $uri/ /index.php$is_args$args;
}
. . .
}
sudo nginx -t sudo systemctl reload nginx
安装 WordPress
cd /tmp curl -LO https://wordpress.org/latest.tar.gz tar xzvf latest.tar.gz cp /tmp/wordpress/wp-config-sample.php /tmp/wordpress/wp-config.php sudo cp -a /tmp/wordpress/. /var/www/html sudo chown -R www-data:www-data /var/www/html
配置 WordPress
curl -s https://api.wordpress.org/secret-key/1.1/salt/
将以上命令得到的结果粘贴至 /var/www/html/wp-config.php
并修改如下内容
. . .
define('DB_NAME', 'wordpress');
/** MySQL database username */
define('DB_USER', 'wordpressuser');
/** MySQL database password */
define('DB_PASSWORD', 'password');
. . .
define('FS_METHOD', 'direct');
至此,WordPress 已安装完毕,可以访问网址进行进一步安装。
使用 Let’s Encrypt 证书为网页 +1s
教程参考此处。
sudo apt-get update sudo apt-get install software-properties-common sudo add-apt-repository universe sudo add-apt-repository ppa:certbot/certbot -y sudo apt-get update sudo apt-get install python-certbot-nginx -y sudo certbot --nginx
输入你的邮箱地址,同意 ToS ,同意/拒绝分享邮箱地址,选择域名,redirect。此时再次访问网址已成功+1s。进入 WP 后台设置,将网站地址从 http 改为 https 。
为 WordPress 安装上喜欢的主题
新建站点同样使用 AxtonYao 开发的 MDx 主题。主题的开发文档在此。按照文档内的步骤安装主题,十分方便。
截至 2019年1月27日 ,最新版 MDx 主题有以下 Bug :
- 当“网页标题计算方式 ”为“WordPress默认”时,网页标题无效。
- 当“文末信息”为空时,分享链接无效。
当遇到以上情况时,请不要惊慌,找源代码看一下尝试理解一下,多尝试几种解决办法,再去 GitHub 发 issue 。
为 WordPress 安装实用的插件
推荐两个插件:
- Tuxedo Big File Uploads 此插件可以去除上传文件 2MB 限制的讨厌设定。
- WP Statistics 通过此插件,可以随时了解网站的访问情况(顺便钓鱼。
进一步个性化主题
进阶玩家可以尝试修改 /path/to/wordpress/wp-content/themes/mdx/ 内的PHP 文件以进一步个性化主题。当然是在尊重主题原作者的条件下。
修改 footer.php 加入自定义页脚(保留主题作者信息)
向 style.css 添加额外 css ,例如
.sjh-firstpagesay{
font-size:120%; color: white; text-shadow: black 0.1em 0.1em 0.2em
}
.sjh-side-info{
text-shadow: black 0.1em 0.1em 0.2em
}
.sjh-404{
font-size:20%; color: #FFF6F7; text-shadow: black 0.1em 0.1em 0.2em
}
.sjh-page-title{
text-shadow: black 0.05em 0.05em 0.1em
}
.container {
position: relative;
width: 100%;
height: 0;
padding-bottom: 56.25%;
}
.video {
position: absolute;
top: 0;
left: 0;
width: 100%;
height: 100%;
}
修改 index.php single.php
修改 comments.php single.php functions.php 英化
算了算了 完全英化太麻烦了
而且每次主题更新都必须改这些东西真的很烦。
发表评论