现在的 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 英化
算了算了 完全英化太麻烦了
而且每次主题更新都必须改这些东西真的很烦。
发表评论