写在前面
原本本站的服务器是用的腾讯的WordPress镜像。但是因为腾讯的WordPress镜像使用的是CentOS + Nginx,且一些配置并不在yum的管理之下,导致许多配置要走许多的弯路(比如升级PHP版本)。因此,在再三权衡之下,决定趁着现在网站空空如也的时候,赶紧“搬家”。因此重置了vps,改用纯净的Ubuntu 20.04 LTS 镜像,全部重新部署服务器。毕竟我对Apache和Ubuntu还是很有感情也有一定经验的。
为什么用Apache
Apache相比Nginx来说,最大的好处就是Apache支持 .htaccess 文件。而WordPress里又有极大量的插件要利用到/修改该文件以提供功能。因此,使用Apache相比于Nginx可以让我们用起来舒服得多(比如插件可以自己将自己想要的规则写入而不需要人工SSH上去写入)。
为什么是Ubuntu
没为什么,个人喜好吧。再加上Ubuntu的apt/apt-get是真的香。
安装所需的包
1 先确保系统一切都是最新的
sudo apt update
确保所有的一切都是最新的
sudo apt upgrade
升级所有该升级的 (这可能会花很长时间)
sudo apt dist-upgrade
升级所有的所有(update只会升级当前的包。dist-upgrade会连着他所有的依赖都一起升级)
sudo apt autoremove
删掉所有不需要的
检测是否有新的Ubuntu版本。听说Ubuntu 21已经上了
cat /etc/update-manager/release-upgrades
看看目前的更新偏好,检查Prompt是不是设置成了lts。因为是服务器,所以对我来说LTS非常的重要
sudo do-release-upgrade
升级系统
系统提示 There is no development version of an LTS available.
查询后得知,Ubuntu 20.04.2 LTS是目前最新的LTS版本,放弃升级。
2 安装Apache及相应依赖
sudo apt update
sudo apt install apache2
安装Apache2
sudo ufw enable
开启防火墙
sudo ufw allow in "Apache"
添加规则,允许Apache的流量进出
sudo ufw status
确保Apache的被设置成Allow(v6和v4)
在这里你可以访问你的ip地址,确保可以看到“Apache2 Ubuntu Default Page”以验证安装是否成功
sudo ufw allow ssh
开启SSH
注意:一定一定要记得开SSH的口!不然可能就再也登不上服务器啦!比如我 : (
3 安装MySQL
sudo apt install mysql-server
利用此安装MySQL
sudo mysql_secure_installation
可选但推荐:这个插件会强制设置一个合格的MySQL密码
具体密码的要求如下:
LOW Length >= 8
MEDIUM Length >= 8, numeric, mixed case, and special characters
STRONG Length >= 8, numeric, mixed case, special characters, and dictionary
4 安装PHP及其必要的依赖
sudo apt install php libapache2-mod-php php-mysql
可通过php -v
查询所安版本
sudo apt install php-curl php-gd php-mbstring php-xml php-xmlrpc php-soap php-intl php-zip
这些是一些比较主要的以后一些插件可能会用到的东西(可选,可以在需要的时候再装)
配置服务器
1 在服务器上为自己的WordPress挖个坑
默认的,Apache在/var/www/
里挖了个坑(html)给自己的默认页面。所以我在它的旁边给自己的网站也挖了一个坑:
sudo mkdir /var/www/example-com
并为该文件夹添加权限:
sudo chown -R $USER:$USER /var/www/example-com
其中$USER
指代当前的用户
2 配置WordPress的Apache站点
sudo vim /etc/apache2/sites-available/example-com.conf
为我们的WordPress应用创建配置文件
在里面输入:
<VirtualHost *:80> ServerName example.com # 这里可以放比如说example.com ServerAlias www.example.com # 这里可以放比如说www.example.com ServerAdmin webmaster@localhost DocumentRoot /var/www/example-com # 刚刚创建的WordPress根目录 ErrorLog ${APACHE_LOG_DIR}/error.log CustomLog ${APACHE_LOG_DIR}/access.log combined </VirtualHost>
sudo a2ensite example-com
启动我们的 WordPress site
sudo a2dissite 000-default
禁止默认的000-default配置
sudo apache2ctl configtest
测试是否有任何的配置错误
sudo systemctl reload apache2
重载Apache2让刚刚的修改生效
到目前为止,我们已经完成了底层(LAMP)的安装工作
3 配置MySQL
sudo mysql -u root
进入到MySQL的控制台
并依次键入如下命令:
注1:如果命令打错可以用\c来清除
注2:从MySQL 8.0起,已经不允许直接用Grant隐式的创建用户了
CREATE DATABASE wordpress DEFAULT CHARACTER SET utf8 COLLATE utf8_unicode_ci; #创建一个WordPress的数据库 CREATE USER 'wordpress'@'localhost' IDENTIFIED BY 'yourPassword'; #创建一个WordPress用户。注意,密码最大长度最好不超过32个字符。 GRANT SELECT,INSERT,UPDATE,DELETE,CREATE,DROP,ALTER #给予该用户必要权限 ON wordpress.* TO wordpress@localhost; FLUSH PRIVILEGES; quit
4 允许WordPress利用 .htaccess来覆盖重写
sudo vim /etc/apache2/sites-available/example-com.conf
再次打开我们的WordPress的配置文件
在里面加上这段配置:
<Directory /var/www/example-com/> AllowOverride All </Directory>
sudo a2enmod rewrite
开启重写功能
sudo systemctl restart apache2
重启生效
安装WordPress
我们可以直接通过 sudo apt install wordpress
来安装Wordpress,也可以自行去官网下载安装。
这里选择去官网下载安装。
养成好习惯,我们把所有的临时文件都放在tmp下。
cd /tmp
curl -O https://wordpress.org/latest.tar.gz
下载最新的WordPress
tar xzvf latest.tar.gz
解压缩
touch /tmp/wordpress/.htaccess
创建一个空的.htaccess文件供以后使用
cp /tmp/wordpress/wp-config-sample.php /tmp/wordpress/wp-config.php
直接在所提供的配置文件的基础上修改配置
mkdir /tmp/wordpress/wp-content/upgrade
为WordPress创建一个upgrade文件夹,这样可以避免以后的一些问题
sudo cp -a /tmp/wordpress/. /var/www/example-com
将所有东西全部放入之前挖好的WordPress的坑里让它茁壮成长
配置WordPress
1 调整文件夹的所有权和权限
sudo chown -R www-data:www-data /var/www/example-com
其中www-data是Apache用的用户名和所在的用户组
这里同时建议运行sudo usermod -aG www-data $USER
将当前用户(Ubuntu)加入到www-data的用户组
并sudo chmod -R 755 /var/www
确保有足够的权限可以访问
这里注意:需要有-x
权限才能对目录执行任何命令,包括用cd
进入目录。所以即使目录有-r
权限如果没有-x
也无法进入目录。但同样的,如果有-x
没有-r
,则只能进去但什么都读不到(ls
也不行)。
2 为WordPress调整相应的权限
sudo find /var/www/example-com/ -type d -exec chmod 750 {} \;
sudo find /var/www/example-com/ -type f -exec chmod 640 {} \;
3 根据wp-config的要求,为WordPress生成并填写一堆密钥
curl -s https://api.wordpress.org/secret-key/1.1/salt/
从这里得到WordPress帮我们生成的密钥
密钥会打印在屏幕上,记得复制下来
sudo vim /var/www/example-com/wp-config.php
打开配置文件
找到那个段落,并且将刚刚生成的那句话替换进去
(提示,vim
里,dd
可以快速删除一整行)
4 配置WordPress使用数据库
sudo vim /var/www/example-com/wp-config.php
打开配置文件,在里面找到定义数据库连接的模块(与下面类似)并修改成下面这样:
// ** MySQL settings - You can get this info from your web host ** // /** The name of the database for WordPress */ define( 'DB_NAME', 'wordpress' ); /** MySQL database username */ define( 'DB_USER', 'wordpress' ); /** MySQL database password */ define( 'DB_PASSWORD', 'pwdSetBefore' ); #这里输入之前设置的数据库wordpress用户的用户密码 /** MySQL hostname */ define( 'DB_HOST', 'localhost' ); /** Database Charset to use in creating database tables. */ define( 'DB_CHARSET', 'utf8' ); /** The Database Collate type. Don't change this if in doubt. */ define( 'DB_COLLATE', '' );
这里,可以考虑加上 define('FS_METHOD', 'direct');
来避免可能的在安装修改插件主题等遇到的FTP问题。不过这会带来可能的安全隐患。
5 配置WordPress
到这里教程就都已经都结束了。现在WordPress已经可以通过http://yourIPAddress
来访问了。接下来的配置WordPress的步骤只需要跟着指示一步步走就好啦!
References
https://wiki.ubuntu.com/Releases
https://stackoverflow.com/a/58167855
https://httpd.apache.org/docs/2.4/mod/core.html#directory
https://www.digitalocean.com/community/tutorials/how-to-install-wordpress-on-ubuntu-20-04-with-a-lamp-stack
https://www.digitalocean.com/community/tutorials/how-to-install-linux-apache-mysql-php-lamp-stack-on-ubuntu-20-04
https://qastack.cn/wordpress/189554/what-security-concerns-should-i-have-when-setting-fs-method-to-direct-in-wp-co