hexo 部署到自己的云服务器上

参考

服务器配置

安装常用工具

yum install curl-devel expat-devel gettext-devel openssl-devel zlib-devel perl-devel

安装git

yum install -y git

可能出现的问题

linux 安装插件报错:Loaded plugins: fastestmirror-CSDN博客

使用 yum 软件包管理工具可以简化系统软件更新的工作。为了保证更新的持续进行,通常都会提供多个 mirror(镜像)地址供下载使用,但由于存在地域问题,从不同的镜像下载速度差异很大。选择从适合的镜像下载软件包,会极大加快更新速度。以 CentOS 为例,fastestmirror 插件可以让 yum 在更新时先根据 ping 值进行判断,然后从最快响应的地址下载。
使用 yum 出现 Loaded plugins: fastestmirro
fastestmirror是yum的一个加速插件,这边提示的是:插件不可用
1.更改只读文件的权限:
修改只读文件:sudo chmod a+w 【要修改文件名】

下面两个文件是只读文件,需要修改权限。
1.修改插件的配置文件
vi /etc/yum/pluginconf.d/fastestmirror.conf

enabled = 1 #由1改为0,禁用该插件
2.修改yum的配置文件

vi /etc/yum.conf

plugins=1 #改为0,不使用插件

3 清除缓存并重新构建yum 源
yum clean all
yum clean dbcache
yum makecache

查看git版本

git - -version  // 查看git是否安装成功

创建指定的上传用户名和密码

创建后期上传hexo的git指定用户,这里以star为例(这个用户名可以自定义,但是要保证后面的需要用户名的地方需要改成自己自定义的用户名即可)

useradd star
passwd star

需要注意的便是在设置密码时,一般玩过虚拟机的都知道,主要是没玩过的,要注意设置密码时是没有回显的

编辑权限文件赋予

star用户相关权限

chmod命令用法详解-chmod修改目录权限 - Andy-Law - 博客园 (cnblogs.com)

需要注意,//后面的别复制,内个是给大家做的解释

chmod 740 /etc/sudoers   # 设置权限
vim /etc/sudoers # 编辑/etc/sudoers

使用 set: nu 显示行号,找到100行左右,添加如下信息

root ALL=(ALL)  ALL
star ALL=(ALL) ALL #主要添加这句话(这里star是你刚才创建的用户名)

直接:wq!,进行保存,保存后再次修改权限。因为 sudoers是只读文件,所有要使用 !进行保存,否则会失败。

将/etc/sudoers 修改成只读类型【为了保证服务器的安全,这个一定要做,千万不要懒哦】

chmod 600 /etc/sudoers   //改回权限

创建hexo文件夹及赋予文件夹权限

需要注意,//后面的别复制,内个是给大家做的解释

chown命令可以查看一下链接了解

chown 英语翻译 修改文件目录属主

chown命令详解-CSDN博客

Linux chown 命令 | 菜鸟教程 (runoob.com)

[linux查看文件拥有者 - CSDN文库](https://wenku.csdn.net/answer/841fbac66e93208a7eb3efe40d00e98b#:~:text=要查看Linux系统中文件的拥有者,可以使用命令“ls,-l”,该命令会列出文件的详细信息,包括文件的拥有者、所属组、权限等。 文件的拥有者通常是文件创建者或最后修改者,可以通过该信息来确定文件的归属和访问权限。)

mkdir /home/hexo  #这个也是自定义的
chown star:star -R /home/hexo //授予权限这里其实就是将当前前目录下的所有文件与子目录的拥有者皆设为 star,群体的使用者 star

安装Nginx

这里基本没啥好说的,直接运行就可以,然后看到最后一行显示Complete就说明完事了

yum install -y nginx  

这个时候我们可以通过以下命令,启动一下,看看效果,如果没有报错的话就说明启动完事了

systemctl start nginx.service

编辑Nginx文件

vim /etc/nginx/nginx.conf

如果还没有域名,着直接用服务器本身的ip

server {
listen 80;
listen [::]:80;
server_name xxx; #修改成服务器ip
root /home/hexo; #修改成代码的路径

error_page 404 /404.html;
location = /404.html {
}

error_page 500 502 503 504 /50x.html;
location = /50x.html {
}
}

如果后面用https,直接复制我这套就ok了

server{
listen 80;
server_name IP地址或者域名;
rewrite ^(.*)$ https://$host$1 permanent; # http转https
}
server{
listen 443 ssl;
root /home/hexo;
server_name xxxx; # 请替换为你的域名
client_max_body_size 40m; # 请求体上限
# ssl的一些配置
ssl_certificate "/home/ssl/hexo_ssl/ceshi123.top.crt"; # 请务必替换成你的ssl证书路径
ssl_certificate_key "/home/ssl/hexo_ssl/ceshi123.top.key"; # 请务必替换成你的ssl证书路径
ssl_protocols TLSv1.1 TLSv1.2;
ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:HIGH:!aNULL:!MD5:!RC4:!DHE;
ssl_prefer_server_ciphers on;
ssl_session_cache shared:SSL:10m;
ssl_session_timeout 10m;

error_page 404 /404.html;
error_page 500 502 503 504 /50x.html;
}

保存退出后,重启服务器,
修改完配置以后,需要重启一下Nginx服务。

systemctl stop nginx.service  
systemctl reload nginx.service

建立git仓库

需要注意,//后面的别复制

su root   //如果现在就是root用户下可以不用这一句
cd /home/star
git init --bare blog.git //创建Git仓库
chown star:star -R blog.git //授予Git仓库权限

编辑post-receive

进入cd /home/star/blog.git/hooks/执行下方命令

需要注意,//后面的别复制

vim post-receive   //这一句话千万别错了哦

把下面的内容拷贝进去并wq!保存

#!/bin/sh
git --work-tree=/home/hexo --git-dir=/home/star/blog.git checkout -f

再次修改权限

chmod 英语翻译 修改文件权限

Linux chmod 命令 | 菜鸟教程 (runoob.com)

chmod +x post-receive  //这里是设置成可以执行的权限 (如果没有设置这样权限,推送代码的时候推送不上/home/hexo这里来)

开放80端口,如果https需要开放443端口

systemctl status firewalld 查看防火墙状态 
systemctl start firewalld 开启防火墙
firewall-cmd --zone=public --list-ports 查询开放的防火墙列表
firewall-cmd --permanent --zone=public --add-port=80/tcp 添加指定需要开放的端口
firewall-cmd --reload 重载入添加的端口
firewall-cmd --zone=public --list-ports 查询开放的防火墙列表

到这基本的工作已经完事了

上传到服务器

mkdir ~/.ssh   //创建存放密钥的文件夹,文件夹可能会存在,那就可以直接去编辑了
vim ~/.ssh/authorized_keys //写入密钥

(如果像我这里面一样有know_hosts或know_host.old的文件,都需要删除,否则会失败!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!)

到自己的电脑上的C:\Users\He\.ssh 目录下找到id_rsa文件
打开编辑并把秘钥复制到刚刚编辑的authorized_keys里面

打开自己电脑测试物理机与服务器能否跑通

ssh -v star@IP地址 //服务器ip
会提示输入yes 回车
输入密码 回车
提示 Welcome to Alibaba Cloud Elastic Compute Service !
就证明跑通成功。

我们需要在config.yml中的最后一行编辑以下信息,然后咱们就可以把自己的博客推送上去了

deploy:
- type: git
repository: star@IP地址:/home/star/blog.git
branch: master

然后就可以通过以下命令进行推送了

hexo clean
hexo deploy
输入git密码,最后提示推送成功

如果提示失败,应该是git那边的秘钥的问题,在查看一下上面的问题(自己电脑的know_hosts或know_host.old的文件,都需要删除)

成功发布后

访问自己的ip就可以访问到了

欢迎浏览我的页面

Star

Thank you !!!