之前买了一年的搬瓦工VPS仅仅作为Shadowsocks所用,感觉有些浪费,因此萌生了搭建个人网站的想法,以下是建站过程的记录。

一、域名

要想访问一个网站,首先需要一个域名,然后需要对域名进行解析,将域名指向服务器的ip地址。我是在万网注册购买的域名,注册过程很简单,并且提供了免费的域名解析,设置也很容易,在此不再赘述。

二、安装LNMP

所谓LNMP,指的是Linux、Nginx、MySQL和PHP。采用Linux、PHP、MySQL的优点我们不必多说,Nginx是一个小巧而高效的Linux下的Web服务器软件,具有运行稳定、功能丰富、安装配置简单和系统资源消耗低等特点,LNMP是目前很流行的网站搭建方式。这里使用了LNMP一键安装包进行环境搭建,LNMP一键安装包是一个用Linux Shell编写的适用于大多数Linux VPS安装生产环境的Shell程序,详情见LNMP官网

LNMP官方提供了完整的安装教程,参见LNMP安装教程,简要步骤如下(VPS系统为Centos 7):
1.连接VPS服务器(可使用putty,或搬瓦工自带的Root Shell)
2.安装screen

yum install screen
screen -S lnmp

3.下载安装lnmp(可选择下载版和完整版,下文有说明)
下载版:

wget -c http://soft.vpser.net/lnmp/lnmp1.4.tar.gz && tar zxf lnmp1.4.tar.gz && cd lnmp1.4 && ./install.sh lnmp

完整版:
wget -c http://soft.vpser.net/lnmp/lnmp1.4-full.tar.gz && tar zxf lnmp1.4-full.tar.gz && cd lnmp1.4-full && ./install.sh lnmp

在下载时可以选择使用下载版(推荐美国及海外VPS或空间较小用户使用)或者完整版(推荐国内VPS使用,国内用户可用在下载中找国内下载地址替换),两者没什么区别,只是完整版把一些需要的源码文件预先放到安装包里。

在安装过程中需要选择MySQL、MariaDB版本;设置MySQL root密码;选择是否启用MySQL InnoDB;选择PHP版本;选择是否安装Jemalloc或TCmalloc。一般直接选择默认即可,或根据需要自行选择。

之后则是自动安装过程,安装时间可能会几十分钟到几个小时不等,主要是机器的配置网速等原因会造成影响,最后出现绿色提示“Install lnmp v1.4 completed! enjoy it.”则说明安装成功。

默认LNMP是不安装FTP的,若有需要可自行安装。

三、添加虚拟主机

LNMP官方提供了完整的添加教程,参见LNMP添加、删除虚拟主机

添加虚拟主机:

lnmp vhost add

之后需要添加和设置相关信息:

  • 添加网站域名(如www.znotes.net)
  • 添加更多域名(如znotes.net,多个域名用空格隔开,不需要添加其他域名可直接回车)
  • 设置网站目录(可直接回车采用默认目录)
  • 是否设置伪静态,这里选择y
  • 选择伪静态规则,有多种可选,这里选择wordpress
  • 是否开启日志,可自行选择
  • 若选择开启日志则需要设置日志目录,可直接回车采用默认日志目录
  • 是否添加数据库,若选择y则需要验证MySQL root密码
  • 若添加数据库,需要设置新添加数据库名称和同名用户密码
  • 若安装了FTP,会询问是否添加FTP账户(FTP不是必须安装)
  • 是否添加SSL(1.4新增功能),1添加SSL证书,2使用免费SSL自动生成证书

四、关于HTTP和HTTPS

一般在浏览器中输入网址默认使用HTTP连接,HTTP使用80端口,因此为了使网站能够被访问,首先需要在防火墙中开放80端口,并确保端口没有被占用。

若在虚拟主机设置时添加了SSL,那么网站支持HTTPS连接,由于HTTPS使用443端口,需要在防火墙中开放443端口,并确保端口没有被占用。

开放端口:

firewall-cmd --zone=public --add-port=80/tcp --permanent
firewall-cmd --zone=public --add-port=443/tcp --permanent

HTTPS(全称:Hyper Text Transfer Protocol over Secure Socket Layer),是以安全为目标的HTTP通道,简单讲是HTTP的安全版,使用HTTPS可以加强网站的安全性,若需要http自动转https,如输入http://www.znotes.net自动转到https://www.znotes.net,可使用以下方法:
1.找到网站的nginx配置
文件名称为[域名].conf,位于nginx安装目录/conf/vhost目录下,如

/usr/local/nginx/conf/vhost/www.znotes.net.conf

2.使用文本编辑器打开(如vi),修改配置文件
vi /usr/local/nginx/conf/vhost/www.znotes.net.conf<

找到http设置,添加
return 301 https://$server_name$request_uri;
:

server
    {
        listen 80;
        #listen [::]:80;
        server_name www.znotes.net znotes.net;
        return 301 https://$server_name$request_uri;  #在此处添加这一段
        ......
        ......
    }

3.重新加载配置:

lnmp reload

return 301 https://$server_name$request_uri
是nginx新支持的写法,也可使用早前的写法
rewrite ^(.*)$ https://$host$1 permanent

五、安装WordPress

WordPress官方提供了详细的安装教程,参见安装WordPress,简要步骤如下:
1.下载解压WordPress
下载:

wget http://wordpress.org/latest.tar.gz

解压:
tar -xzvf latest.tar.gz

此时WordPress压缩包将会解压缩至文件夹wordpress,是在你执行指令时的文件夹目录下(如root/wordpress)
2.使用phpMyAdmin创建WordPress数据库和一个用户
在一键安装LNMP的时候已经安装了phpMyAdmin,这是一个MySQL的管理界面,是用PHP书写的。通过[你的ip]/phpmyadmin可以访问数据库后台,为了安全起见要改一下phpmyadmin这个文件夹的名字,它位于路径/home/wwwroot/default/,把它修改成一个只有你知道的名字。
这一步主要是创建一个wordpress数据库,设置数据库名称(如wordpress),创建一个用户并赋予用户操作所有数据库的权限
3.设置wp-config.php文件
在解压后的wordpress文件夹里,将wp-config-sample.php重命名为wp-config.php,之后在文本编辑器中打开该文件(如使用vi)。
将相关的信息修改为自己的:

  • DB_NAME:在第二步中为WordPress创建的数据库名称
  • DB_USER:在第二步中创建的WordPress用户名
  • DB_PASSWORD:第二步中为WordPress用户名设定的密码
  • DB_HOST:第二步中设定的hostname(通常是localhost)

4.移动wordpress里的文件
将wordpress文件夹里的所有文件(不包括wordpress这个文件夹本身)移动到网站的根目录下,例如/home/wwwroot/www.znotes.net
5.访问网站,设置WordPress
在浏览器输入自己的域名打开网站,会出现WordPress的引导配置界面,填写相应的配置信息,进行WordPress安装,没什么问题的话,就能安装成功了。
WordPress提供了方便的可视化操作界面,可以很简单地对网站进行个性化设置,选择或上传一个自己喜欢的主题,然后开始发布文章吧。
可能遇到的问题:
1.WordPress管理界面的设置中无法将站点语言设为简体中文。
解决方法:连接VPS服务器;修改wp-config.php文件(如已将wordpress文件移动到网站根目录下,那么该文件在网站根目录下,如

/home/wwwroot/www.znotes.net/wp-config.php
);找到define(‘WPLANG’,”)字样,更改为define(‘WPLANG’,’zh_CN’),若没有这一项则直接创建;之后进入WordPress控制界面进行更新,在将站点语言设为简体中文即可。
2.在更新或者下载主题时,WordPress要求输入FTP账号和密码,但是一般采用LNMP安装环境都没有安装FTP。
解决方法:连接VPS;输入
chown -R www /home/wwwroot/[域名]
,如
chown -R www /home/wwwroot/www.znotes.net

3.在下载WordPress主题之后,已安装主题不显示其他已下载的主题。
解决方法:连接VPS;修改php.ini(一般路径应该是:
/usr/local/php/etc/php.ini
,也可以通过 http://你的域名/phpinfo.php查看到php.ini的路径);找到disable_functions,将其中的scandir去掉;执行
lnmp  reload
重启lnmp即可。