云服务器建站简单学习&练习(持续更新)

本文详细介绍了如何在腾讯云购买的2核4G服务器上,使用Hexo搭建博客,配置SSH、Node.js,安装Git,设置HTTPS访问,以及通过子域名创建多个网站的过程。涉及的技术包括ssh连接、Nginx配置、git hooks等。
摘要由CSDN通过智能技术生成

0x00 前提

正好最近腾讯云打折,就买了三年2核4G云服务器,拿来转移下博客阵地,也能深度学习下服务器、建站方面的知识

0x01 hexo搭建博客

shell连接云服务器

购买服务器会让你先选择系统镜像,我选择的是Ubuntu 20.04

打开腾讯云的控制台,重置默认密码,然后就可以用shell工具连接服务器辣

可以选择密码连接或者在控制台那里生成密钥,使用私钥连接(我选择密码,因为我懒x x)

打开 sshd_config 配置文件

sudo vi /etc/ssh/sshd_config

找到 ##Authentication,将 PasswordAuthentication 参数修改为 yes

sshd_config 配置文件中无此配置项,则添加 PasswordAuthentication yes 项即可

重启 ssh 服务

sudo systemctl restart sshd

shell端选择的是FinallShell,新建会话,主机名输入控制台可以看到的公网IP,端口默认22,

**注意:**用户名是Ubuntu!!!不是root,也不是lighthouse,在这卡了好长时间,密码即刚才重置的新密码

安装nodejs及hexo

然后想安装hexo,提示要先安装npm

sudo apt install npm

然后报错了…

正确流程

sudo apt update
sudo apt install nodejs npm

但是这样安装完的node版本为v10.19.0,在安装hexo时还是会显示node版本过低报错

更新node版本

sudo npm install -g n
sudo n 12.22.1

这时node -v显示仍未旧版本,前面的操作提示说

If "node --version" shows the old version then start a new shell, or reset the location hash with:
hash -r  (for bash, zsh, ash, dash, and ksh)
rehash   (for csh and tcsh)

hash -r后即可

然后sudo npm install -g hexo-cli下载hexo

安装并配置git

添加用户git,并下载Git

sudo adduser git
sudo apt install git

home目录下建立一个.ssh目录,赋予其700权限mkdir ~/.ssh && chmod 700 ~/.ssh

添加git用户的权限

chmod 740 /etc/sudoers
vim /etc/sudoers

找到这个内容:root ALL=(ALL:ALL) ALL
加入:git ALL=(ALL:ALL) ALL

改回权限:chmod 400 /etc/sudoers

切换至git用户(很重要) 进行下面操作:

su git
mkdir ~/.ssh
vim ~/.ssh/authorized_keys

修改authorized_keys中内容为服务器密钥对的公钥

修改上面这两个文件的权限:

chmod 600 /home/git/.ssh/authorized_keys
chmod 700 /home/git/.ssh

然后本地测试连接ssh -v git@云服务器IP,连接成功

若出现Host key verification failed.报错,则删除/home文件夹下的known_hosts文件再连接即可

创建git仓库并配置nginx

建立文件路径:

sudo mkdir /var/repo

修改权限:

chown -R $USER:$USER /var/repo/
chmod -R 755 /var/repo/

创建远程Git仓库:

cd /var/repo
git init --bare blog.git

安装Nginx:

apt-get install nginx -y

配置 Nginx 托管文件目录:

sudo su root
mkdir -p /var/hexo
chown -R git:git /var/hexo
chmod -R 755 /var/hexo

修改 Nginx 的 default 文件使得 root 指向刚刚创建的 /var/hexo目录:

vim /etc/nginx/sites-available/default

修改server字段的root部分为root /var/hexo;

然后重启 nginx 服务:

service nginx restart

这时访问公网IP显示403,因为未搭建任何东西,在/hexo目录下新建index.html

<html>

<body>
<p>This is my Blog.</p>
</body>

</html>

再打开公网IP即显示“This is my Blog.”

配置git-hooks

配置 git-hooks,即配置git推送后执行的脚本

vim /var/repo/blog.git/hooks/post-receive

添加

##!/bin/bash
git --work-tree=/var/hexo --git-dir=/var/repo/blog.git checkout -f

脚本目的是从blog.git仓库覆盖掉/var/hexo目录,达到更新的目的

然后为其添加执行权限

chmod +x /var/repo/blog.git/hooks/post-receive

更改blog.git目录的拥有者

chown -R git:git blog.git

修改本地配置文件

修改本地博客目录下的**_config.yml**站点配置文件

deploy:
  type: git
  repository : git@<ip地址或域名>:/var/repo/blog.git
  branch: master

然后更新博客,hexo cl&&hexo g&&hexo d即可啦

设置https访问

但是现在没有SSL协议不能通过https访问,域名访问的话会被拦截,那就要申请一下ssl证书,腾讯云有一个免费一年的,我就申请了,

很快就可以审核成功,然后下载下来文件,包括sheeprooo.top.csrsheeprooo.top.keysheeprooo.top_bundle.crtsheeprooo.top_bundle.pem

.crt证书文件和.key私钥文件上传到服务器etc/nginx/conf.d/ssl目录下(根据实际nginx安装路径决定)

上传时发现失败,原因是登录权限不是root,而直接root连接会失败,要先修改/etc/ssh/sshd_config文件

修改两项PasswordAuthentication yes## Authentication:下的PermitRootLogin yes

编辑/etc/nginx/sites-available/default,添加

server {
    listen       80; ## 监听80端口
    server_name  _; ## 表示任何域名
    return       301 https://$host$request_uri; ## 通过301重定向到https
}

server {
    ssl_certificate /etc/nginx/conf.d/ssl/sheeprooo.top_bundle.crt;
    ssl_certificate_key /etc/nginx/conf.d/ssl/sheeprooo.top.key;
    listen       443 ssl;
    server_name  sheeprooo.top;
    root         /var/hexo;
    index        index.html;
}

然后重启nginx服务即可

nginx -s reload
或
service nginx restart (不推荐)

后记(后续更新)

上面创建的git用户可以通过ssh连接,进行任何操作。为了安全性,我们需要将git用户的活动限制在与Git相关的范围,也就是把git用户的shell改成 git-shell

0x02 使用子域名创建多个网站

ICP备案通过了,就可以开始搞搞之前想做的子域名了

通过子域名实现在同一个服务器搭建多个网站的目的

使用nginx监听80端口,通过反向代理将不同的子域名指向不同的文件目录从而实现多个子域名建站

首先在DNS服务商添加解析子域名到服务器IP

腾讯云免费的SSL证书是单域名证书,所以如果使用子域名的话要每个子域名都申请一个SSL证书,

本人均上传到etc/nginx/conf.d/ssl文件夹中

编辑/etc/nginx/sites-available/default

server {
    listen       80; ## 监听80端口
    server_name  _; ## 表示无论什么hostname都会被匹配
    return       301 https://$host$request_uri; ## 把用户的HTTP请求永久重定向(301 Moved Permanently)到HTTPS,并且保证链接的剩余部分不变,即host以及URI部分都是一样的
}

server {
    server_name  sheeprooo.top;
    rewrite ^(.*) https://www.$host$request_uri permanent; ## 如果访问的域名为主域名自动跳转www
}
server {
    ssl_certificate /etc/nginx/conf.d/ssl/www.sheeprooo.top_bundle.crt; ## SSL证书文件位置
    ssl_certificate_key /etc/nginx/conf.d/ssl/www.sheeprooo.top.key; ## SSL密钥文件位置
    listen       443 ssl; ## 监听443端口
    server_name  www.sheeprooo.top;
    root         /var/www; ## www域名对应的文件目录
    index        index.html index.php; ## 主页的文件名称
}

server {
    ssl_certificate /etc/nginx/conf.d/ssl/blog.sheeprooo.top_bundle.crt;
    ssl_certificate_key /etc/nginx/conf.d/ssl/blog.sheeprooo.top.key;
    listen       443 ssl;
    server_name  blog.sheeprooo.top;
    root         /var/hexo;
    index        index.html;
}
server {
    ssl_certificate /etc/nginx/conf.d/ssl/study.sheeprooo.top_bundle.crt;
    ssl_certificate_key /etc/nginx/conf.d/ssl/study.sheeprooo.top.key;
    listen       443 ssl;
    server_name  study.sheeprooo.top;
    root         /var/study;
    index        index.html index.php;
}
server {
    ssl_certificate /etc/nginx/conf.d/ssl/test.sheeprooo.top_bundle.crt;
    ssl_certificate_key /etc/nginx/conf.d/ssl/test.sheeprooo.top.key;
    listen       443 ssl;
    server_name  test.sheeprooo.top;
    root         /var/test;
    index        index.html index.php;
}

保存后,重启nginx服务

nginx -s reload

如果重启服务报错,可使用nginx -t检查是否服务是否有问题
将博客移入了blog子域名访问注意将本地含域名的文件修改一下

参考链接:在 Nginx 中配置二级域名 - Mincong Huang

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值