(20-03-19 Update:全篇优化)
教你搭建属于自己的Typecho小博客~
操作系统为Debian 10,LNMP搭建,使用Cerbot免费签证的SSL牌照~
最近因为迁移站点,所以按以前写的备忘重新搭建了一遍,事实证明每次留下操作代码实在是一个极好的习惯,几分钟就弄好了,于是顺带分享一下~
(由于目前还没有图床,虽然目前已经有了图床,但我仍然觉得在网上找资料的时候会学到很多,所以并不打算太罗嗦,以下代码亲测可以使用,如有问题请自行谷歌或者留言,本文重在提供一种可行方案,而非百科式教学,诸如VPS/域名等前置条件便不在本文范围内)
— 为什么选择Typecho —
因为好看啊!
开源,极简,漂亮,原生支持Markdown,还要啥自行车?
— LNMP环境构建 —
0.使用Cerbot签证免费的SSL证书(域名以本站为例)
sudo apt install certbot
sudo certbot certonly --standalone --agree-tos -d www.higgs.xyz -d higgs.xyz --server https://api.buypass.com/acme/directory
签好的SSL存放在
/etc/letsencrypt/live/www.higgs.xyz/fullchain.pem
/etc/letsencrypt/live/www.higgs.xyz/privkey.pem
1.安装Nginx
sudo apt -y install nginx
# sudo ufw allow 'Nginx HTTP'
sudo systemctl start nginx
sudo systemctl enable nginx
# 此时可以通过ip登陆访问
2.安装Mysql数据库
sudo apt -y install mariadb-server
sudo mysql_secure_installation
# 这里会提示你设置密码,重设完密码后最后四个问题选择YnYY
sudo systemctl restart mariadb.service
sudo systemctl enable mariadb.service
sudo mysql -u root -p
# 设置root用户使用密码登陆
下面使用数据库命令操作
#--------------------------------------------
GRANT ALL PRIVILEGES ON *.* TO 'root'@'localhost' IDENTIFIED BY '你的数据库root密码' WITH GRANT OPTION;
FLUSH PRIVILEGES;
quit
#--------------------------------------------
# 新建Typecho数据库
mysql -u root -p
#--------------------------------------------
CREATE DATABASE `typecho` DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
exit
#--------------------------------------------
# 最后别忘了重启数据库
sudo systemctl restart mariadb.service
3.安装PHP-7.3
sudo apt -y install php7.3 php7.3-common php7.3-cli php7.3-cgi php7.3-fpm php7.3-gd php7.3-mysql php7.3-sqlite3 php7.3-pgsql php7.3-opcache php7.3-mbstring php7.3-curl php7.3-xml php7.3-xmlrpc php7.3-zip php7.3-intl php7.3-json php7.3-bz2
— 搭建Typecho —
4.安装站点文件
# 创建站点文件夹
sudo mkdir -p /opt/wwwroot
cd /opt/wwwroot
# 下载Typecho压缩包并解压(这里选择的是开发版,需要稳定版请更换链接)
sudo wget https://typecho.org/build.tar.gz
sudo tar xvzf build.tar.gz
sudo mkdir -p /opt/wwwroot/typecho
sudo mv build/* ./typecho
# 更改用户权限
sudo chmod -R 755 /opt/wwwroot/typecho
sudo chown -R www-data:www-data /opt/wwwroot/typecho
# 编辑Nginx配置
sudo nano /etc/nginx/conf.d/typecho.conf
5.Nginx配置文件(对应域名请自行更改)
# 此配置强制跳转https,请确保ssl已配置正确
server {
listen 80;
server_name www.higgs.xyz higgs.xyz;
add_header Strict-Transport-Security max-age=15768000;
return 301 https://www.higgs.xyz;
}
server {
listen 443 ssl http2;
ssl on;
ssl_certificate /etc/letsencrypt/live/www.higgs.xyz/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/www.higgs.xyz/privkey.pem;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2 TLSv1.3;
root /opt/wwwroot/typecho;
index index.php index.html index.htm index.nginx-debian.html;
server_name higgs.xyz;
gzip on;
include /etc/nginx/default.d/*.conf;
location / {
if (-f $request_filename/index.html){
rewrite (.*) $1/index.html break;
}
if (-f $request_filename/index.php){
rewrite (.*) $1/index.php;
}
if (!-f $request_filename){
rewrite (.*) /index.php;
}
try_files $uri $uri/ =404;
}
location ~ \.php$ {
include snippets/fastcgi-php.conf;
fastcgi_pass unix:/var/run/php/php7.3-fpm.sock;
}
location ~ /\.ht {
deny all;
}
}
测试是否配置成功
nginx -t
# 若显示OK字样,说明配置成功,重启Nginx
sudo systemctl restart nginx
此时打开你的域名,应该进入Typecho安装页面,并且左上显示绿色小锁(即SSL配置成功)
将数据库选择为Mysql,编码选为utf8mb4,填入数据库密码,即安装成功~
到这里Typecho网站便搭建完成,你的小博客搭好啦!
顺便我还保留了最初不太成熟的历史版本,如果你是小白,也可以参见下文。
操作系统为Ubuntu 18.04,LNMP搭建,CloudFlare的SSL牌照
— LNMP环境构建(旧) —
1.安装Nginx
sudo apt install nginx -y
# sudo ufw allow 'Nginx HTTP'
sudo systemctl start nginx
sudo systemctl enable nginx
# 此时可以通过ip登陆访问
2.安装Mysql数据库
sudo apt install mysql-server mysql-client -y
sudo mysql_secure_installation
# 这里会提示你设置密码
sudo systemctl start mysql
sudo systemctl enable mysql
sudo mysql
# 设置root用户使用密码登陆
下面使用数据库命令操作
#--------------------------------------------
SELECT user,authentication_string,plugin,host FROM mysql.user;
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '刚才设置的root密码';
SELECT user,authentication_string,plugin,host FROM mysql.user;
exit
#--------------------------------------------
# 新建Typecho数据库
mysql -u root -p
#--------------------------------------------
CREATE DATABASE `typecho` DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
exit
#--------------------------------------------
3.安装PHP-7.2
sudo apt-get install -y software-properties-common
sudo add-apt-repository universe
sudo apt install php-fpm php-mysql php-mbstring -y
sudo nano /etc/nginx/sites-available/你的网站.com
#------------将以下内容填入--------------------
server {
listen 80;
root /var/www/html;
index index.php index.html index.htm index.nginx-debian.html;
server_name 你的网站.com;
location / {
try_files $uri $uri/ =404;
}
location ~ \.php$ {
include snippets/fastcgi-php.conf;
fastcgi_pass unix:/var/run/php/php7.2-fpm.sock;
}
location ~ /\.ht {
deny all;
}
}
#--------------------------------------------
sudo ln -s /etc/nginx/sites-available/你的网站.com /etc/nginx/sites-enabled/
sudo unlink /etc/nginx/sites-enabled/default
sudo nginx -t
# 这里显示成功方可继续
sudo systemctl reload nginx
sudo nano /var/www/html/info.php
#------------将以下内容填入--------------------
<?php
phpinfo();
#--------------------------------------------
# 此时可访问你的域名/info.php查看配置信息(日后记得删除)
systemctl reload nginx
此时Typecho网站便搭建完成,你的小博客搭好啦
— 搭建Typecho (旧)—
下载解压如下:
cd /var/www/html
sudo wget -c http://typecho.org/downloads/1.1-17.10.30-release.tar.gz
sudo tar xvzf 1.1-17.10.30-release.tar.gz
mv build/* .
sudo chmod -R 777 /var/www/html
# sudo rm 1.1-17.10.30-release.tar.gz
# sudo rm -rf build
此时登陆你的域名或者IP即可看到安装界面,按提示操作,记得记住账号密码
这里注意安装完成后可能出现进入后台显示404的问题,修改下Nginx配置即可:
# typecho Nginx 404 error
sudo nano /etc/nginx/sites-available/你的网站.com
#------------将以下内容填入--------------------
if (-f $request_filename/index.html){
rewrite (.*) $1/index.html break;
}
if (-f $request_filename/index.php){
rewrite (.*) $1/index.php;
}
if (!-f $request_filename){
rewrite (.*) /index.php;
}
#--------------------------------------------
# 添加位置如下
# server{
# ...
# location / {
# ...
# //这里添加
# ...
# try_files $uri $uri/ =404;
# ...
# }
# }
— 安装SSL证书 (旧)—
这里我用的是CloudFlare的免费10年SSL,虽然主要是为了免费CDN加速
注册和获取SSL文件请自行谷歌,这里只提供如何修改Nginx配置文件
# Cloudflare SSL
#1 下载 pem&key 传输至vps对应位置 /etc/ssl/certs/&/private/
#2 选择cloudflare crypto full(strict)
# 修改Nginx配置文件
sudo nano /etc/nginx/sites-available/你的网站.com
#------------将内容修改如下--------------------
server {
listen 80;
server_name www.你的网站.com;
add_header Strict-Transport-Security max-age=15768000;
return 301 https://www.你的网站.com;
}
server {
listen 443 ssl http2;
ssl on;
ssl_certificate /etc/ssl/certs/你的网站.pem;
ssl_certificate_key /etc/ssl/private/你的网站.key;
#--------------------------------------------
sudo nginx -t
# 显示成功便大功告成,重载Nginx服务
sudo systemctl reload nginx
稍等片刻后,网站地址栏的左面便显示为绿色小锁啦