欢迎您访问365答案网,请分享给你的朋友!
生活常识 学习资料

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

时间:2023-07-16
云服务器建站学习&练习

0x00 前提0x01 hexo搭建博客

shell连接云服务器安装nodejs及hexo安装并配置git创建git仓库并配置nginx配置git-hooks修改本地配置文件设置https访问后记(后续更新) 0x02 使用子域名创建多个网站 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 updatesudo apt install nodejs npm

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

更新node版本

sudo npm install -g nsudo 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 gitsudo apt install git

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

添加git用户的权限

chmod 740 /etc/sudoersvim /etc/sudoers

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

改回权限:chmod 400 /etc/sudoers

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

su gitmkdir ~/.sshvim ~/.ssh/authorized_keys

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

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

chmod 600 /home/git/.ssh/authorized_keyschmod 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/repogit init --bare blog.git

安装Nginx:

apt-get install nginx -y

配置 Nginx 托管文件目录:

sudo su rootmkdir -p /var/hexochown -R git:git /var/hexochmod -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

This is my Blog.

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

配置git-hooks

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

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

添加

##!/bin/bashgit --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@:/var/repo/blog.git branch: master

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

设置https访问

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

很快就可以审核成功,然后下载下来文件,包括sheeprooo.top.csr,sheeprooo.top.key,sheeprooo.top_bundle.crt,sheeprooo.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

Copyright © 2016-2020 www.365daan.com All Rights Reserved. 365答案网 版权所有 备案号:

部分内容来自互联网,版权归原作者所有,如有冒犯请联系我们,我们将在三个工作时内妥善处理。