由于不想使用一键脚本和宝塔面板,我在搭建该博客时颇费时间,特作此篇为记录。
背景
原先的阿里云香港轻量服务器,虽然价格比较便宜,但带宽捉急,梯子速度颇令人不满,于是在寻得俄罗斯伯力的低价VPS,带宽大、延迟低,最重要的是每月仅需8RMB,因而决心迁移。
又由于最近一年国际局势变幻莫测,科学上网之路愈发坎坷,梯子的安全性和可用性更加重要,如果继续依赖各种“一键脚本”和宝塔面板,不仅存在安全隐患,还不利于提高Linux使用能力。“知其然,知其所以然”,此之谓也。
基础要求
原本是准备使用CentOS7
+ Caddy
的组合,但是CentOS 装个PHP都费劲(其实不难),Caddy正在大版本更新,Caddy2不成熟,资料过少,而官方又已经放弃了支持Caddy1,所以改用其他方案。
本教程基于 Ubuntu 18.04 LTS
、PHP 7.2
、Nginx 1.14.0
、SQLite
, 并默认以root
用户登录, 下面将以此为基础安装Typecho 1.1
搭建起一个功能够用的博客,读者应具有一定的Linux使用经验(例如了解 mkdir rm mv ls cp touch vim
等指令的最基本用法)。
在开始之前, 确保系统软件在最新版本, 命令如下:
apt update
apt upgrade
安装SQLite
apt install sqlite3
安装PHP
我们需要基础的PHP
程序和以下拓展:php7.2-fpm php7.2-gd php7.2-mbstring php7.2-xml php7.2-sqlite3
apt install php php7.2-fpm php7.2-gd php7.2-mbstring php7.2-xml php7.2-sqlite3
启用并查看状态:
service start php-fpm7.2
service status php-fpm7.2
php -v
如果有以下提示则正常:
Active: active (running)
# 此处略去若干行
PHP 7.2.24-0ubuntu0.18.04.6 (cli) (built: May 26 2020 13:09:11) ( NTS )
Copyright (c) 1997-2018 The PHP Group
Zend Engine v3.2.0, Copyright (c) 1998-2018 Zend Technologies
with Zend OPcache v7.2.24-0ubuntu0.18.04.6, Copyright (c) 1999-2018, by Zend Technologies
其他用法:
service {start|stop|status|restart|reload|force-reload} php-fpm7.2
启用、停止、重启、查看状态,按上面的指令选就是了。
设置PHP:
PHP配置文件主要有: php.ini
、php-fpm.conf
以及在php-fpm.conf
中引入的 php-fpm.d/www.conf
以及该目录下的其他配置文件, 要找到它们只需用上述名称代替下面代码中的XXX
即可。
find / -name XXX
这里需要强调几点:
- 将
/etc/php/7.2/fpm/php.ini
中的cgi.fix_pathinfo
项取消注释,并确保其值为0
. 这样改的目的是防止因用户上传恶意代码造成危害。(鄙人才疏学浅,原理为何请各位参考: 传送门 记住
/etc/php/7.2/fpm/pool.d/www.conf
中的user group listen
项,它们可能像这样:user = www-data group = www-data # 此处略去若干行 listen = /run/php/php7.2-fpm.sock
- 更改PHP配置后应当按照上面介绍的方法重启服务并验证PHP状态是否正常。
安装Nginx
apt install nginx
nginx -v
出现以下则正常,
nginx version: nginx/1.14.0 (Ubuntu)
Nginx的安装目录默认在/usr/share/nginx/
, 配置文件默认位于/etc/nginx/
,
root@me:/etc/nginx# ls
conf.d koi-utf modules-available proxy_params sites-enabled win-utf
fastcgi.conf koi-win modules-enabled scgi_params snippets
fastcgi_params mime.types nginx.conf sites-available uwsgi_params
即我们的Nginx目前会调用/conf.d和site-enabled目录下的虚拟主机配置,
现在我们可以直接删除/etc/nginx/sites-enabled/下的那个默认站点。
由于Nginx可能会出现版本更新,所以我们推荐将网站放在不受软件更新影响的目录中,(XXX是你的网站文件夹的名字,可自定,下同)
mkdir /var/www/XXX
然后进入conf.d目录新建我们的虚拟主机配置文件:
cd /etc/nginx/conf.d
vim XXX.conf
填入Typecho官方给出的配置:
server {
listen 80;
server_name yourdomain.com;
root /var/www/XXX;
index index.html index.htm index.php;
if (!-e $request_filename) {
rewrite ^(.*)$ /index.php$1 last;
}
location ~ .*\.php(\/.*)*$ {
include fastcgi.conf;
fastcgi_pass unix:/run/php/php7.2-fpm.sock;
}
access_log logs/yourdomain.log combined;
}
注意以下几点:
listen
为监听端口,默认HTTP网站应当为80
。root
为网站根目录,我们稍后会向这个目录中放入Typecho程序。- 把配置中的yourdomain换成你自己的实际域名和实际目录存放地址
fastcgi_pass
后的内容应当和上述/etc/php/7.2/fpm/pool.d/www.conf
中listen
项一致!(如果listen后面是
xxxxx.sock
, 那么绝对路径前应加unix:
,如果是127.0.0.1:9000
,那么就什么也不加直接写成相同的地址)
关于Nginx的基础知识建议读者自行搜索,在此推荐以下文章,如果搭建网站过程中碰到问题也可参考:
Getting Started with NGINX - Part 1: Installation and Basic Setup
Serve PHP with PHP-FPM and NGINX
安装Typecho
cd /var/www/XXX
wget http://typecho.org/downloads/1.1-17.10.30-release.tar.gz
tar -xzf 1.1*
rm 1.1*
mv bulid XXX
mv XXX /var/www/
访问你的域名即可看到安装页面了,按提示进行即可。
常见问题
Nginx 503 错误:PHP-FPM 和 NGINX 之间没有配置好。
再次确认
/etc/nginx/conf.d/XXX.conf
中的fastcgi_pass
后的内容和/etc/php/7.2/fpm/pool.d/www.conf
中的listen
项是否一致!Typecho 安装好后,除首页外全部显示
Access denied
:在
/etc/nginx/conf.d/XXX.conf
中location
一节中加入fastcgi_split_path_info ^(.+?.php)(/.*)$;
重启Nginx即可。原因见此
后记
上述教程不过囫囵吞枣,我也不过浅涉而已,不求甚解,只祈能用...
网站建设兹事体大,须得系统阅读其他材料,继续学习吧!
说真的,宝塔,真的占内存,然后使用宝塔,还需要手机号码绑定
看了好几个真的良心, 网上搜的全是宝塔的, 这种好文反而搜不到. 劣币驱逐良币
太棒啦 (ฅ´ω`ฅ)