Nginx搭建博客

在搭建这个博客的几天前,刚在 vultr 上买了个 VPS 用 nginx 和 Typecho 搭了个博客,和这个博客对比一下还是 hexo 好用一点。既然都用 nginx 搭过博客了,刚好记录一下 nginx 的使用方法

我当时是在 ArchLinux 上面搭建的博客,所以是用 pacman 安装需要的软件:

1
sudo pacman -S nginx php-fpm mysql

启动 php-fpm, nginx, mysql

1
sudo systemctl start nginx php-fpm mysqld

nginx 安装好后就能用,浏览器访问博客地址

编辑配置文件 /etc/nginx/nginx.conf
nginx 原理我目前理解的是一个“看大门的”,它把每一个请求进行审查,然后根据配置文件进行匹配,匹配到了就把这个请求交个那个模块的特定程序进行处理。

找到 http 部分,listen 就是要监听的端口;server_name 是服务名称,可以改为自己的 IP 地址和域名;error_page 我在当时搭建的时候没有改,但看名字应该就是配置错误的页面了,它下面的 location 就是那个页面的位置。
location /{} 里的 root 是网页的根目录,index 是网页需要识别的 index 文件,把 index.php 加进去

1
2
3
4
location / {
root 网站根目录;
index index.html index.htm index.php;
}

找到下面配置 PHP 的地方,把 FastCGI server 部分的注释取消掉,因为我用的是 php-fpm 来搭建的,不是用 Apache
php-fpm 我的理解是一个连接 PHP 和 nginx 的桥梁,php-fpm 做个中转,把 nginx 传过来的数据交给 PHP 来处理

1
2
3
4
5
6
7
location ~ \.php$ {
root 自己博客的根目录的位置,可以和 location / 里的 root 一样;
fastcgi_pass unix:/run/php-fpm/php-fpm.sock; #这里先查看一下 php-fpm 的进程,然后把它给复制到这里来,这就是上面讲的把 nginx 传过来的数据进行处理
fastcgi_index index.php; #网站的 index
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; #告诉 nginx 到哪去解析 PHP
include fastcgi_params;
}

mysql 在安装后会提示要初始化 mysql

1
sudo mysql_install_db --user=mysql --basedir=/usr --datadir=/var/lib/mysql

然后设置密码

1
mysql_secure_installation

进入 mysql 后可以创建一个新用户,当时觉得直接用 root 来使用数据库不安全(虽然没啥人会想攻击我的博客…)

1
create user 'username'@'[localhost|%]' identified by 'password';
  • localhost:仅限本地登录
  • %:可以通过网络登录

给这个用户管理员权限

1
grant all privileges on *.* to 'username'@'%' IDENTIFIED BY 'password' with grant option;

然后就差不多完成了,到 Typecho 官网去下载 Typecho 的压缩包
http://typecho.org/download

把压缩包解压缩到博客的目录下
浏览器打开自己博客的 IP 地址,根据设置好的配置填写,按照提示进行就行了
还有就是设置博客的文件夹权限
1
chmod 777 folder

这样设置好后还会碰到一个情况,就是不管进入什么页面都是 404,这要在配置文件里修改一下 PHP-fpm 的 location,改为
1
location ~ .*\.php$

就这么简单易懂的过程,我当时愣是搞了一天,这里查查,那里看看,我还记得那天早上我看配置方法的时候还不屑的想:这么简单的配置,比上次调 v2ray 的简单多了,然后调了一整天,调到头昏,当时就不该小瞧它 /(ㄒoㄒ)/~~
最后还是成功搭建好了,不过第二天就把那个 VPS 删了,原因是访问太慢了,而且财库还紧张。