已经不知道第几次手残了。所以这次一定要好好记一下。
基础环境
WordPress依赖PHP,数据库是MySQL,前面需要有一个Nginx或者Apache做代理。
所以第一步是配置这些环境。
PHP
sudo apt install php-fpm -y;
之后我们还需要安装一些其他东西:
sudo apt install php-gd php-mbstring php-curl php-gettext php-zip php-soap php-xml php-xmlrpc -y;
这样就差不多了。
MySQL
sudo apt install mysql-client php-mysqli -y;
然后是比较漫长的设置。我们可以用自带的mysql_secure_installation
来完成这个事儿。输入
sudo mysql_secure_installation
然后照着提示加载密码强度验证器、输入Root密码(其实root密码并不会被更改掉)、移除Test用户和Test表。
之前,包括Ubuntu16.04和Debian8的时候,安装MySQL/MariaDB的过程中会提示输入root密码。但现Debian9和Ubuntu18.04LTS里面没有了这个步骤。安装好之后,root是以sudo mysql
这样的方式进行登录的,差不多可以理解为SQLServer的Windows用户认证。
这样做是很安全。但我们有时候想用图形界面登进去的话就傻了。所以我们试图改为默认输入密码的那种登录方式。
提示:这样做并不是很安全啊~~
我们使用
sudo mysql
以root用户的身份进入MySQL,然后使用
SELECT user,authentication_string,plugin,host FROM mysql.user;
查看现在的权限情况:
+------------------+-------------------------------------------+-----------------------+-----------+
| user | authentication_string | plugin | host |
+------------------+-------------------------------------------+-----------------------+-----------+
| root | | auth_socket | localhost |
| mysql.session | *THISISNOTAVALIDPASSWORDTHATCANBEUSEDHERE | mysql_native_password | localhost |
| mysql.sys | *THISISNOTAVALIDPASSWORDTHATCANBEUSEDHERE | mysql_native_password | localhost |
| debian-sys-maint | *CC744277A401A7D25BE1CA89AFF17BF607F876FF | mysql_native_password | localhost |
+------------------+-------------------------------------------+-----------------------+-----------+
4 rows in set (0.00 sec)
我们会发现,root用户使用了一个插件,而正是这个插件阻止了我们使用密码来登录。我们可以使用
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '设置一个密码';
FLUSH PRIVILEGES;
来更改密码,并改为使用密码登录root。这时候再用上面的咒语查看权限情况,可以发现root已经有密码了。以后我们就能愉快地使用
mysql -uroot -p
来登录了。
Nginx
sudo apt install nginx -y;
这样就差不多了。
配置
上面安装完毕了,下面开始配置。
数据库
首先,用各种方式添加用户并新建表。个人习惯是临时用一下phpMyAdmin的建表语句来新建用户和表(因为自己不会写):
CREATE USER 'my_database'@'%';
SET PASSWORD FOR 'my_database'@'%' = PASSWORD('my_password');
GRANT USAGE ON *.* TO 'my_database'@'%' REQUIRE NONE WITH MAX_QUERIES_PER_HOUR 0 MAX_CONNECTIONS_PER_HOUR 0 MAX_UPDATES_PER_HOUR 0 MAX_USER_CONNECTIONS 0;
CREATE DATABASE IF NOT EXISTS `my_database `;
GRANT ALL PRIVILEGES ON `my_database`.* TO 'my_database'@'%';
GRANT ALL PRIVILEGES ON `my_database\_%`.* TO 'my_database'@'%';
之后,我们可以使用
mysql -u <username> -p <databasename> < <filename.sql>
将备份的SQL文件导入数据库。
PHP
其实PHP不需要设置任何东西就能工作的。但是为了增强一点速度,我们还是稍微动一点点配置。
找到/etc/php/7.2/fpm/php.ini
,找到opcache
这一小节,改动如下设置:
opcache.enable=1
opcache.enable_cli=1
opcache.memory_consumption=128
opcache.interned_strings_buffer=8
opcache.max_accelerated_files=10000
opcache.revalidate_freq=2
opcache.save_comments=1
保存重启php-fpm服务。
哦对了,这里注意看一下/etc/php/7.2/fpm/www.conf
里面的listen = /run/php/php7.2-fpm.sock
,后面会用到。
Nginx
到/etc/nginx/nginx.conf
里面,把gzip相关东西都打开。
到/etc/nginx/sites-available
里面,将默认的default
复制一份。然后开始魔改:
server {
# 这个站点是不是“默认站点”
# 注意只能有一个文件中写default
listen 80;
# 同上
listen [::]:80;
# 改成自己的域名,多个域名用空格隔开
server_name my.blog.domain;
# 改成自己的网站路径
root /var/www/html;
# Add index.php to the list if you are using PHP
index index.html index.php;
location / {
# First attempt to serve request as file, then
# as directory, then fall back to displaying a 404.
# 这样的话我们就可以实现伪静态了
try_files $uri $uri/ /index.php?$args;
}
# pass PHP scripts to FastCGI server
location ~ \.php$ {
include snippets/fastcgi-php.conf;
# With php-fpm (or other unix sockets):
# 注意这里的路径和你上面记录的路径是否一致
fastcgi_pass unix:/var/run/php/php7.2-fpm.sock;
# With php-cgi (or other tcp sockets):
#fastcgi_pass 127.0.0.1:9000;
}
}
大功告成。建立个软链接到sites-enabled
,然后重启Nginx服务即可。
SSL配置
直接使用Certbot来配置SSL即可。
sudo apt-get install certbot -y
之后
sudo certbot --nginx
照着向导一步一步走下去就好。
既然都开了SSL了,不开HTTP2是不是有点暴殄天物?回到nginx设置里面,会发现配置文件被certbot改掉了。我们需要改成
即可。
listen [::]:443 ssl http2 ipv6only=on; # managed by Certbot
listen 443 ssl http2; # managed by Certbot
备份
哦,看之前的脚本不爽,又写了个脚本在跑。
备份脚本3.0专治手残健忘。希望别再把所有备份全搞丢了。
结语
OK,不折腾了。好好做备份,好好做镜像,好好跑代码,好好写文章。
发表回复