在DigitalOcean上搭建Wordpress记
这是一篇“事后诸葛亮”式的文章,或者说一系列文章,来记录我折腾了一个下午的Wordpress搭建过程。虽然现在博客不流行了,不过仍不失为一种有效的记录平台。其实,我之前一直在简书上写一点东西,为什么要折腾下来自己搭建一个平台呢?主要是一下几个原因:
- 简书上缺少标签功能, 这使得文章多了以后难以规整和索引。尤其是写技术类文章的时候,会出现大量跨不同Topic的文章,此时用Tag来组织,就要比用文集组织的方式灵活的多。
- 简书作为一个平台,有起有落,自己搭建的博客平台,数据在自己手里,能“万古长青”。
- 自由度。生活在中国,大家都懂,有些话题不能说,有些问题不能问。即便我党未必在意的内容,各个平台也会自觉地自我审查。把自己搭建的博客平台放在国外,就可以省去这些烦恼。
我常年用DigitalOcean家的服务器来搭梯子,正好CPU占用率极低,恰好可以用来搭建Wordpress服务器。
为什么选择DigitalOcean(DO)
我用的VPS也不是太多,之所以开始选中了DigitalOcean这个平台是出于以下几点原因:
- 性价比较高:我之前的梯子一直是选用的$5一个月价位的,这个价位下,有1个CPU内核,512MB的内存(最近升级到了1G内存,价格还是$5),以及,重点是,有1TB的Transfer,以及不受限制的带宽(按照DO家的说法,其每个机器以1Gbps带宽连接到公网出口,而公网出口以10Gbps带宽连接到主干网,DO自己的并不会主动限制网速),经过两年的使用,大多数情况下百兆以上的带宽是没有问题的(不作为梯子必经还是受到要过海底光缆翻山越岭的限制)。
- 有不少优惠:拥有教育邮箱可以获得$50的代金券,以及其Space服务可以免费试用两个月。
缺点也是有,就是有很多人拿DO的服务器去当爬虫,导致DO的IP基本上都被Google Scholar封禁了,这对做学术的人而言还是很伤的。不过好在Google Scholar的镜像站点也不少,也不是大问题。再者,如果是搭建博客平台,这个问题就不太要紧了。
为什么是Wordpress
最近时间紧张,没时间折腾,之后的职业道路,也并不打算选择前端这条路线,所以就选择了最为成熟的平台了。这次咬了牙买了一个很不错的付费主题,可以不用代码并且达到很高的设计自由度,之后这个主题用熟了再推荐给大家。
起手搭建
Prerequisite
- 注册DO账户,并且创建一个Droplet。至于Droplet的价位和地址,丰俭由己。我使用的操作系统是Ubunut 16.04。当然DO家也提供了Wordpress的一键式APP,嫌麻烦的可以试试这个。由于我是在已有的梯子服务器上搭建博客,就只能自己动手了。
- 准备LAMP环境。不会的参考这个教程:在Ubuntu 16.04上安装LAMP
STEP 1:准备数据库
以root账户登入Mysql数据库:
$ mysql -u root -p
中间会需要你输入Mysql的root账户的密码(注意不是服务器的root账户的密码)。
然后为wordpress创建数据库:
mysql> create database wordpress default character set utf8 collate utf8_unicode_ci;
注意Mysql命令要以分号结尾。
然后创建一个数据库用户来接入数据库
myslq> grant all on wordpress.* to 'wordpressuser'@'localhost' identified by 'use_your_password';
然后Flush权限更改到数据库以应用这些更改,并退出数据库。
mysql> flush privileges;
myslq> exit;
STEP 2:安装必要的PHP扩展
$ sudo apt-get update
$ sudo apt-get install php-curl php-gd php-mbstring php-mcrypt php-xml php-xmlrpc
然后重启Apache
sudo systemctl restart apache2
STEP 3:调整Apache配置,允许.htaccess文件覆写(override)和重写(rewrite)
我们还需要对Apache的配置稍作修改。目前,.htaccess
文件的使用还是被禁用的,而Wordpress及其插件需要应用到这一文件来实现一些功能。
启用.htaccess覆写
打开Apache主配置文件
$ sudo vim /etc/apache2/apache2.conf
在这一文件底部,添加如下内容:
<Directory /var/www/html>
AllowOverride All
</Directory>
保存并退出。
启动重写模块
运行如下命令以使用Wordpress的永久链接功能
$ sudo a2enmod rewrite
应用更改
首先运行下面这个命令来确保没有语法错误:
$ sudo apache2ctl configtest
如果出现了“AH00558: apache2: Could not reliably determine the server's fully qualified domain name, using 127.0.1.1. Set the 'ServerName' directive globally to suppress this message”这个Warning,可以通过在
/etc/apache2/apache2.conf
文件中设置ServerName
来消除。
然后重启Apache
$ sudo systemctl restart apache2
STEP 4:下载Wordpress
我们从官网下载最新的Wordpress并放置到临时的文件夹:
$ cd /tmp
$ curl -O https://wordpress.org/latest.tar.gz
解压缩改文件
$ tar xzvf latest.tar.gz
在我们将解压后的文件移动到文档根目录前,我们需要手动创建.htaccess
文件,并正确设置其权限:
$ touch /tmp/wordpress/.htaccess
$ chmod 660 /tmp/wordpress/.htaccess
然后从模板配置文件中创建Wordpress实际使用的配置文件:
cp /tmp/wordpress/wp-config-sample.php /tmp/wordpress/wp-config.php
我们还需要创建好upgrade
文件夹,这样Wordpres在下载更新文件时就不会遭遇权限问题:
$ mkdir /tmp/wordpress/wp-content/upgrade
现在我们可以把整个Wordpress的内容迁移到文档根目录上了。在移动过程中带上-a
标签来确保各种权限标识保持不变。
$ sudo cp -a /tmp/wordpress/. /var/www/html
STEP 5:配置Wordpress文件夹
调整文件夹的所有者和权限
Apache是由www-data
这个用户来运行的,为了正常访问Wordpress文件, 我们需要调整Wordpress文件夹下各个文件的权限。同时,又为了限制www-data
,使其不至于做出非法的更改,我们将Wordpress文件夹下的内容设置为另一非root
用户,并且为www-data
这一用户组下的用户添加合适的访问权限。
$ sudo chown -R sammy:www-data /var/www/html
接下来设置用户组权限
$ sudo find /var/www/html -type d -exec chmod g+s {} \;
$ sudo chmod g+w /var/www/html/wp-content
$ sudo chmod -R g+w /var/www/html/wp-content/themes
$ sudo chmod -R g+w /var/www/html/wp-content/plugins
设置Wordpress配置文件
首先要设置的是一系列安全相关的秘钥。Wordpress提供了一个自动生成这些秘钥的工具:
$ curl -s https://api.wordpress.org/secure-key/1.1/salt/
其输出类似下面列出的:
define('AUTH_KEY', '1jl/vqfs<XhdXoAPz9 DO NOT COPY THESE VALUES c_j{iwqD^<+c9.k<J@4H');
define('SECURE_AUTH_KEY', 'E2N-h2]Dcvp+aS/p7X DO NOT COPY THESE VALUES {Ka(f;rv?Pxf})CgLi-3');
define('LOGGED_IN_KEY', 'W(50,{W^,OPB%PB<JF DO NOT COPY THESE VALUES 2;y&,2m%3]R6DUth[;88');
define('NONCE_KEY', 'll,4UC)7ua+8<!4VM+ DO NOT COPY THESE VALUES #`DXF+[$atzM7 o^-C7g');
define('AUTH_SALT', 'koMrurzOA+|L_lG}kf DO NOT COPY THESE VALUES 07VC*Lj*lD&?3w!BT#-');
define('SECURE_AUTH_SALT', 'p32*p,]z%LZ+pAu:VY DO NOT COPY THESE VALUES C-?y+K0DK_+F|0h{!_xY');
define('LOGGED_IN_SALT', 'i^/G2W7!-1H2OQ+t$3 DO NOT COPY THESE VALUES t6**bRVFSD[Hi])-qS`|');
define('NONCE_SALT', 'Q6]U:K?j4L%Z]}h^q7 DO NOT COPY THESE VALUES 1% ^qUswWgn+6&xqHN&%');
复制这些内容(注意一定要自己运行命令生成秘钥,而不是复制上面的内容),然后打开配置文件
$ vim /var/www/html/wp-config.php
找到下面的内容,然后替换之:
define('AUTH_KEY', 'put your unique phrase here');
define('SECURE_AUTH_KEY', 'put your unique phrase here');
define('LOGGED_IN_KEY', 'put your unique phrase here');
define('NONCE_KEY', 'put your unique phrase here');
define('AUTH_SALT', 'put your unique phrase here');
define('SECURE_AUTH_SALT', 'put your unique phrase here');
define('LOGGED_IN_SALT', 'put your unique phrase here');
define('NONCE_SALT', 'put your unique phrase here');
之后我们需要设置数据库相关的配置
define('DB_NAME', 'wordpress');
/** MySQL database username */
define('DB_USER', 'wordpressuser');
/** MySQL database password */
define('DB_PASSWORD', 'use_your_password');
同时,之前我们给予了www-data
组在wp-content
及其下两个文件夹的写入权限,我们可以设置文件系统的访问方法为”direct”来使其直接写入相关文件。在上面数据库设置内容的下方添加一行:
define('FS_METHOD', 'direct');
STEP 6: 完成安装
此时在你的电脑上打开浏览器,访问
http://server_domain_or_IP
就可以通过网页界面访问并配置Wordpress。
升级
运行Apache的www-data
用户并不拥有Wordpress文件夹,所以在升级时会出现权限问题。这是需要通过
$ sudo chown -R www-data /var/www/html
来给予其足够的权限。在升级完成后,通过
$ sudo chown -R sammy /var/www/html
来恢复现场。
进一步阅读:
- 在Wordpress中使用DigitalOcean Space作为图床 | coming soon