腾讯云无忧计划

  1. 新老同价:新老用户同享优惠,轻量应用应用服务器15元/月起
  2. 续费同价:承诺终身与新购同价的续费优惠且可叠加用券
  3. 免费域名:赠送一年顶级域名,并享长期续费优惠

两种可选规格(广州/上海/北京/成都/南京):

配置带宽月流量系统盘价格
1核2G4M500GSSD 50G15元/月
2核4G6M1200GSSD 80G56元/月

这个活动是我入手第二台云服务器的契机,阿里云的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系统版本信息

  1. 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版本号
  2. 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
  3. 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个月。爽!

标签: ubuntu

添加新评论