2020年11月9日

使用WordPress搭建属于自己的博客(上)

作者 qsdrqs

前言

为什么写这篇教程

如果在 baidu/google 中搜索“wordpress 搭建教程”,你会搜到一大堆“详细”的搭建教程。然而这些教程绝大多数的重点在于服务器、域名的申请。随后,在拥有一个你早就该拥有的服务器之后,这些教程所给出的搭建方法要么就是局限在了利用“宝塔”等图形化搭建面板,或者说是那种一键搭建脚本。

显然,这种搭建脚本的方式确实简单快捷,但是对于网站维护者而言隐藏了细节,使得后期网站维护变得更加困难。设想一下,如果某一天一键脚本不再维护了或者出现了产生了一些脚本没提供的需求,应该怎么办呢?最后还是得进入到 cli 环境中手动去调整配置。(而且这种使用别人的一键脚本的方式不够 geek😄️)

ArchWiki 上有较为详细的 WordPress 安装教程,但是这个教程默认你已经掌握了 Apache-web 服务器的配置以及 php,mysql/mariadb 的安装过程。如果不够熟悉这些内容,还需要更多的资料去配置 Apache 和 php,数据库。

为什么要自己搭建博客,而不使用网上现成的博客平台网站?

确实有很多现成的博客网站,CSDN,博客园之类的。不过对我自己来说,既然是个人博客,那肯定希望可以自己最大化的定义自己的网站的设计,布局和小组件等个性化内容。博客网站如 CSDN,给使用者的可定制性就太小了。而且近年来 CSDN 上相比过去多出了大量没有什么价值的垃圾文章和东拼西凑的代码,而且还有恼人的广告问题。作为自己的博客肯定不希望跟他们一样放在这个网站上托管。博客园相比 CSDN 的可定制性强了很多。不过其个性化程度显然还是不如自己的网站,毕竟自己的服务器可以完全按照自己的想法去创造内容。

自己搭建博客的另外一个好处则是完全自主的去尝试维护一个网站和服务器,很多时候花了更多心思去大理的东西,也会倾向于更用心的去优化博客的内容,而不是简单的把别人博客的文章转载过来或者是记录一些全世界或许只有自己能看懂的笔记(还仅限于现在的自己,估计过几个月就完全不知道当时记得是个什么玩意了)。这也是我不推荐使用自动化脚本和图形控制面板搭建博客的第二个原因:自己用心去构建了,才会用心去填补内容。

为什么使用 WordPress

WordPress 目前最常用的 CMS(Content Management System,内容管理系统),相比自己从头搭建一个系统而言,WordPress 发展历史久,更加安全实用。而相比一些更快捷的利用静态网页构建博客的框架而言,WordPress 扩展性更好一些。因此选用 WordPress 搭建博客。

前期准备

  1. 首先你得有个自己的 Linux 服务器(理论上 Windows 的服务器也行), 还有就是需要会一些 linux,vim 的基本操作。不会也没关系,关于 linux,vim 的教程网上有很多,学一下基本操作即可。

  2. 其次得有个自己的域名,除非你想通过 ip 直接访问。域名还有个好处就是容易配置 https,CDN 之类的。

  3. 如果是国内服务器的话域名需要备案。

开工

下面开始开工安装 WordPress 及其依赖。

安装配置 Apache 服务器和 PHP 支持

apache 是一个 web 服务器,一个 web 服务器的作用,简单来说就是接受一个客户端的访问请求,然后把你访问的那个网页返回到你的浏览器上,这样你通过浏览器就可以看到网站是个啥了。

PHP 是一种用于 web 服务端的脚本语言。作为世界上最好的语言(雾。),也是需要先安装才能用的。

使用包管理器安装 apache 和 php
在 Arch 下,安装的方法是

sudo pacman -S apache
sudo pacman -S php
sudo pacman -S php-apache # 安装 apache 对 php 的支持

但是大部分的服务器系统不是 Arch,可能是 ubuntu/debian。因此在 ubuntu/debian 下,安装的方法是(未测试,可能有出入)

sudo apt-get install apache2
sudo apt-get install php libapache2-mod-php php-mcrypt php-mysql php-cli

下载 WordPress

一般来说,如果采用发行版带有的包管理器去下载 WordPress 的话,需要对 WordPress 的目录权限作特殊设置,确保 ftp,apache 等应用具有足够的权限对 WordPress 权限做读写。

本文采用手动下载解压的方式去下载安装 WordPress。在终端命令行,输入

sudo mkdir -p /srv/http/ #也可以选用自己喜欢的目录,只要确保后面一致即可
cd /srv/http/wordpress
sudo wget https://wordpress.org/latest.tar.gz #从官网下载 WordPress,这里如果不挂梯子的话下载会有点慢,稍等片刻
sudo tar xvf latest.tar.gz
#最后一步设置权限,对于debain用户:
sudo chown -R www-data:www-data /srv
#对于Arch:
sudo chown -R httpd:httpd /srv

配置 apache, php, mysql/mariadb

安装好之后对 apache 作简单的配置

apache 的配置在 /etc/httpd/conf/httpd.conf 中(在 ubuntu/debian 中是 /etc/apache2/apache2.conf),使用

# 记得使用 sudo,否则编辑不了
vim /etc/httpd/conf/httpd.conf
# debian 下是 vim /etc/apache2/apache2.conf

后面的部分debian系和arch系的方式就有些不一样了

debian系(配置环境 debian 9.12, apache 2.4.25)

debian系默认为apache配置了php模块,因此无需过多配置,如果之前的wordpress放在了/srv/http下的话,则只需要配置目标路径的权限。将下面的注释#去除(下面显示的是已经去除后的内容):

<Directory /srv/>
    Options Indexes FollowSymLinks
    AllowOverride None
    Require all granted
</Directory>

随后,进入/etc/apache2/sites-enabled/000-default.conf设置virtual host,将document root设置到wordpress的路径:

DocumentRoot /srv/http/wordpress #确保和你的wordpress解压路径保持一致

其实apache还有很多复杂的配置机制,比如404页面的模板,监听端口,https的配置等等,更多配置方法还是需要从官方文档获得。


配置php对mysql/mariadb的支持。进入/etc/php/7.0/apache2/php.ini,把所有关于mysql的注释去除

extension=php_mysqli.dll
extension=php_pdo_mysql.dll

使用apt install mysql-server mysql-client安装mysql(实际上装的是mariadb),并用systemctl start mysql启动

初始的mysql是没有root密码的,使用mysql -u root -p,password直接回车就可以登录,登录后的界面长成这样:
mariadb

修改root密码,创立wordpress数据库和用户:

-- 把MyNewPass改成想要的密码
UPDATE mysql.user SET Password=PASSWORD('MyNewPass') WHERE User='root';
-- 后面是创建一个叫做wordpress的数据库,用户名是wp-user,密码是choose_db_password,可以根据需要修改
CREATE DATABASE wordpress;
GRANT ALL PRIVILEGES ON wordpress.* TO "wp-user"@"localhost" IDENTIFIED BY "choose_db_password";
FLUSH PRIVILEGES;
EXIT;

Arch系(配置环境 apache 2.4.46)

其实如果服务器都能上Arch的话,大概率照着Wiki读下来问题也就解决差不多了。。这里只说一些当时配置需要注意的一些细节吧。

apache对php的支持

ArchWiki中介绍了3种配置apache服务器对php支持的方案。其实对于个人博客这种访问量不会太大的网站来说,直接使用libphp就好啦。按照Wiki的指示:

#comment the line:
#LoadModule mpm_event_module modules/mod_mpm_event.so

#uncomment the line:
LoadModule mpm_prefork_module modules/mod_mpm_prefork.so

#Place this at the end of the LoadModule list
LoadModule php7_module modules/libphp7.so
AddHandler php7-script .php

#Place this at the end of the Include list:
Include conf/extra/php7_module.conf

最后,别忘了在/etc/php/php.ini中去除mysql的相关注释来开启php对mysql的访问支持。以及,按照ArchWiki的介绍安装配置好MariaDB,采用同样的方法来创建wordpress用户。

配置WordPress

使用systemctl start apache2(arch是systemctl start httpd)启动apache的web服务器。这时,在本地的浏览器中访问你的IP/域名,如果能成功访问到如下的wordpress的配置界面,说明前面没什么问题🎉
wp-setup

在下面这个页面输入之前设定的wp-user的用户名和密码:

wp-config

一切顺利的话,你会看到这个:

success

说明wp已经成功将数据写入数据库了。后面的内容就是设置语言,网站名称,管理员用户名和密码,电子邮件等基本信息,只要如实填就好了。

在浏览器中输入http://你的域名或IP/wp-login.php就可以登录站点了。(前提是你的WordPress确实配置在Apache的Web根目录下

管理页面简介

WordPress的管理员页面还是比较友好的,基本上操作一看就懂。

主题

一般来说WordPress每年会更新一个年度的主题,视觉效果还是挺好的,如果不满意的话可以在外观-主题-添加在WordPress官网上搜索新的主题,主题数目很多很多,总能找到一款适合你的。

选好主题后,在外观-自定义中,一个主题一般会预留一些操作空间来供你自定义整个博客页面,比如背景颜色,顶栏图片等等。这些操作的修改是实时生效的,可以很容易的看到修改后的效果。但实际上,由于主题本身的修改接口往往不多,如果有一些特殊需求而在自定义页面找不到的话,就需要修改css或者php源码文件,这部分我会在下篇中详细介绍。