第二次成功搭建typecho的过程和一些杂想
腾讯云无忧计划
- 新老同价:新老用户同享优惠,轻量应用应用服务器15元/月起
- 续费同价:承诺终身与新购同价的续费优惠且可叠加用券
- 免费域名:赠送一年顶级域名,并享长期续费优惠
两种可选规格(广州/上海/北京/成都/南京):
配置 | 带宽 | 月流量 | 系统盘 | 价格 |
---|---|---|---|---|
1核2G | 4M | 500G | SSD 50G | 15元/月 |
2核4G | 6M | 1200G | SSD 80G | 56元/月 |
这个活动是我入手第二台云服务器的契机,阿里云的ECS将在今年11月到期,瞄了眼续费价格竟要九百多一年……恰好看到续费终身同价的无忧轻量实例,又有羊毛可薅,随即起了购买的心思,虽然当下对服务器的需求不甚急迫,但买来也不是全然无用。
它的羊毛得从规则说起:无忧实例的购买资格需要邀请5人帮忙助力,助力团时限24小时,若24小时内助力人数不足5人则失败,可以重新发起;若成功则团长(发起者)获得无忧实例购买资格。帮忙助力的人能获得“无忧实例新购补贴”(用于新购本活动的实例,最高面额50元)或“轻量应用服务器代金券”(用于续费,最高面额200元),每名用户每天只能助力一次。
其福利在于帮人助力时领取的续费代金券,通常面额最低是10元(续费1月仅5元),也有30元的(免费续费2月),甚至200元(免费续费1年)。[按实例规格一]
在规则没改前,续费券只要助力就能领取,相当于每天都能领一张,积累下来就是非常大的优惠。没过多久,腾讯把活动规则改成概率获取代金券,而改规则后我连续一周都没能拿到新券,也就懒于继续了。
截止此时,我手头获取了四张10元券和一张30元券,算上30元新购补贴,我用80元拿下1年1核2G的轻量,顺便把QQ钱包里吃灰的零钱清了。
初次使用Ubuntu系统
踩到的第一个坑
与其他Linux系统默认用户名root不同,Ubuntu的root账户是隐藏的,它用于登陆的默认用户名是ubuntu
。
想要登陆root需要先设置账户密码:
sudo passwd root #给root用户设置密码
New password: #输入密码
su root #转到root用户
New password: #输入密码,成功登陆root
查看Ubuntu系统版本信息
cat /proc/version
查看系统版本ubuntu@VM-12-2-ubuntu:~$ cat /proc/version Linux version 5.4.0-77-generic (buildd@lgw01-amd64-028) (gcc version 9.3.0 (Ubuntu 9.3.0-17ubuntu1~20.04)) #86-Ubuntu SMP Thu Jun 17 02:35:03 UTC 2021
Linux version 5.4.0-77-generic (buildd@lgw01-amd64-028) //Linux版本号
gcc version 9.3.0 //gcc编译
Ubuntu 9.3.0-17ubuntu1~20.04 //Ubuntu版本号uname -a
显示系统与内核信息ubuntu@VM-12-2-ubuntu:~$ uname -a Linux VM-12-2-ubuntu 5.4.0-77-generic #86-Ubuntu SMP Thu Jun 17 02:35:03 UTC 2021 x86_64 x86_64 x86_64 GNU/Linux
lsb_release -a
查看当前Linux系统的发行版本ubuntu@VM-12-2-ubuntu:~$ lsb_release -a No LSB modules are available. Distributor ID: Ubuntu //Ubuntu Description: Ubuntu 20.04 LTS // Release: 20.04 //发行日期或版本号 Codename: focal //Ubuntu的代号名称
安装Nginx
sudo apt-get install nginx #查看版本,验证是否安装成功 ubuntu@VM-12-2-ubuntu:~$ nginx -v nginx version: nginx/1.18.0 (Ubuntu)
安装MySQL
通过apt安装MySQL服务。
# 更新源 sudo apt-get update # 安装mysql sudo apt-get install mysql-server # 验证安装 mysql -V mysql Ver 8.0.27-0ubuntu0.20.04.1 for Linux on x86_64 ((Ubuntu))
安装完mysql后,通过命令检查是否安装成功:
sudo netstat -tap | grep mysql
mysql的socket处于listen状态则表示安装成功。
安装完成后进行初始化配置。sudo mysql_secure_installation
配置完后尝试登陆,不出意料地报错:
ERROR 1698 (28000): Access denied for user 'root'@'localhost'
解决方案:
ubuntu@VM:~$ sudo cat /etc/mysql/debian.cnf
[client]
host = localhost
user = debian-sys-maint
password = NDiJJ3IX3f9UupVg
socket = /var/run/mysqld/mysqld.sock
[mysql_upgrade]
host = localhost
user = debian-sys-maint #这是用户名
password = NDiJJ3IX3f9UupVg #这是密码,在安装mysql时随机生成的
socket = /var/run/mysqld/mysqld.sock
-- 登陆账户
ubuntu@VM:~$ mysql -u debian-sys-maint -p
Enter password: -- NDiJJ3IX3f9UupVg
-- 进入msyql库
use mysql;
-- 查看user表
mysql> select user,plugin from mysql.user;
+------------------+-----------------------+
| user | plugin |
+------------------+-----------------------+
| debian-sys-maint | caching_sha2_password |
| mysql.infoschema | caching_sha2_password |
| mysql.session | caching_sha2_password |
| mysql.sys | caching_sha2_password |
| root | auth_socket |
+------------------+-----------------------+
5 rows in set (0.00 sec)
-- 修改root用户的plugin字段
alter user 'root'@'localhost' identified with mysql_native_password by 'mysql';
-- 修改root密码
alter user 'root'@'localhost' identified by '密码';
-- 刷新
flush privileges;
-- 大功告成
quit;
debian-sys-maint
用户是Debian或Ubuntu系统自动生成的mysql用户,其权限和ROOT相同,用于系统对mysql服务的重启或运行。auto_socket
是一种验证插件,其特点如下:
- 不验证输入密码。
- 只能使用UNIX的socket方式登陆。(本地登陆)
- 登陆MySQL数据库的用户名必须与操作系统的用户一致。
这种验证方式具备相当的安全性,但明显阻碍了我们使用mysql的root用户,于是切换为mysql_native_password
验证方式。
最后,终于可以使用新密码登陆数据库:
ubuntu@VM-12-2-ubuntu:~$ mysql -uroot -p
Enter password:输入密码
安装PHP7.0
因为使用的是nignx引擎,其不具备处理PHP文件的内置支持,于是使用PHP-FPM(fastCGI进程管理器)处理PHP文件。
#安装PHP和PHP FPM软件包
audo apt install php-fpm
安装完成后检查服务状态:systemctl status php7.4-fpm
查看安装版本:
php -v
PHP 7.4.3 (cli) (built: Aug 13 2021 05:39:12) ( NTS )
Copyright (c) The PHP Group
Zend Engine v3.4.0, Copyright (c) Zend Technologies
with Zend OPcache v7.4.3, Copyright (c), by Zend Technologies
配置nginx
在站点配置文件中添加对php的支持。
cd /etc/nginx/sites-enabled
sudo vim default
#找到php模块,取消注释
location ~ \.php$ {
include snippets/fastcgi-php.conf;
fastcgi_pass unix:/run/php/php7.4-fpm.sock;
}
重启nginx服务:
sudo systemctl restart nginx
测试php服务:
cd /var/www/html
sudo vim info.php
<?php
phpinfo();
?>
浏览器访问IP/info.php
查看是否成功把当前服务器的详细PHP信息打印出来。
安装Typecho
把安装文件都上传到网页根目录下后,进行Typecho的初始化配置。
顺利进入blog首页后,问题如期而至:除了博客首页和登陆页能访问,其他页面都是404。
这是nginx出了问题。
我们一般会直接去配置/etc/nginx/nginx.conf
全局配置,这其实并不是一个好习惯。
ningx可以同时运行多个网站,而且对每一个网站都存在单独的配置文件,它们存放在/etc/nginx/sites-available/
路径下,启用则是在隔壁 /etc/nginx/sites-enable/
目录下建立一个链接文件。/etc/nginx/sites-enable
下默认有一个链接到default
的文件,可以直接修改或重写/etc/nginx/sites-available/default
来配置网页。
事先做一下default的备份:
sudo cp /etc/nginx/sites-available/default /etc/nginx/sites-available/default.backup
default配置:
server {
listen 80 default_server;
root /var/www/html;
index index.html index.htm index.php;
server_name erfty.com;
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;
}
}
location ~ .*\.php(\/.*)*$ {
fastcgi_split_path_info ^(.+\.php)(/.+)$;
fastcgi_pass unix:/var/run/php/php7.4-fpm.sock;
fastcgi_index index.php;
include fastcgi.conf;
}
}
验证nginx配置文件是否正确nginx -t
nginx -t
#配置有问题
nginx: configuration file /etc/nginx/nginx.conf test failed
#注意sudo权限问题,没有权限无法执行验证
sudo nginx -t
#配置语法正常
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful
参考博客:在Raspberry PI 3 上搭建 Typecho + LNMP(Nginx, MySQL) 博客 (附PHP白屏解决方法)
ssl证书部署
这次用了nginx独立站点配置文件,编辑/etc/nginx/sites-available/default
配置文件:
server {
listen 443 default ssl; #默认使用ssl的443端口
ssl_certificate 1_erfty.com_bundle.crt;
ssl_certificate_key 2_erfty.com.key;
server_name www.erfty.com;
root /var/www/html;
index index.html index.htm index.php;
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;
}
}
location ~ .*\.php(\/.*)*$ {
fastcgi_split_path_info ^(.+\.php)(/.+)$;
fastcgi_pass unix:/var/run/php/php7.4-fpm.sock;
fastcgi_index index.php;
include fastcgi.conf;
}
}
再去ngnix主配置文件写http重定向跳转https:
http{ #定位到http块
server{
listen 80 default_server;
server_name www.erfty.com;
return 301 https://$host$request_uri;
}
另外还学习了一个利用meta刷新进行重定向的方法。既然http是返回nginx默认页,那就把nginx默认页修改:
<html>
<meta http-equiv="refresh" content="0;url=https://erfty.com/">
</html>
这么做的好处是执行重定向不消耗服务器资源,而是由浏览器完成这个过程。
最后
说是迁移博客,其实是一次重新部署,因为阿里云拍快照要钱,没办法做镜像迁移。这次从CentOS转Ubuntu,学到了这俩之间不小的差异,也用上了较新内核的Linux系统。
转眼就是一年了,从阿里云迁移到腾讯云又做了一次网站备案,遗憾的是网站名没有更改成功,fty.life
这条短域名也忘了顺手带上。今年腾讯云的双十一活动薅了一把羊毛,拉一个新用户朋友买服务器,拿到张150元无门槛续费代金券,直接免费把无忧实例续了10个月。爽!