danger 如果是通过Github挂在的静态博客请忽略第三步免密登录生成Key的步骤
准备工作
在开始部署前,你需要做如下准备:
- 本地搭建完成的博客
- 一台Windows/mac电脑(如果你的电脑是Linux应该不用看本片博客吧😀)
- 一台云服务器(ECS或者VPS,理论上来说任何服务商都可以,本教程以DDP的VPS为例)
- 本地电脑安装一个SSH链接工具(或者BUSH终端,本教程以MobaXterm为例)
- 可能会多次失败也不怕重来的决心
安装配置git
安装依赖工具包
1
| yum install -y curl-devel expat-devel gettext-devel openssl-devel zlib-devel
|
安装编译工具
1
| yum install -y gcc perl-ExtUtils-MakeMaker package
|
删除旧版本git
进入家目录
下载git到家目录
鉴于下载地址的时效性,附上官网地址,后续git更新请去官网下载安装包。
1 2 3 4 5
| # 下载git wget https://www.kernel.org/pub/software/scm/git/git-2.34.0.tar.gz --no-check-certificate
# 如果提示没有wget命令,先安装git yum install wget -y
|
解压文件
1
| tar -zxf git-2.34.0.tar.gz
|
安装git
1 2 3 4 5 6 7 8
| # 进入到git目录下 cd git-2.34.0
# 编译 make all prefix=/usr/local/git
# 安装git到/usr/local/git下 make install prefix=/usr/local/git
|
配置git环境变量
如果能查看到git的版本号,说明安装成功。
1 2 3 4 5 6 7 8
| # 将git加入path echo 'export PATH=$PATH:/usr/local/git/bin' >> /etc/bashrc
# 使配置生效 source /etc/bashrc
# 查看git版本 git --version
|
创建用户并配置SSH免密登录
创建用户并设置密码
1 2 3 4 5
| # 这里username改成你自己的用户名,并且为用户设置一个密码 adduser [username]
# 设置密码时终端不显示直接敲就行,回车 passwd [username]
|
为用户分配权限
1 2
| # 把用户添加到wheel组 usermod [username] -G wheel
|
本地创建密钥
在本机电脑终端(CMD)输入然后一直回车,新建一个密钥。一般来说在你创建的时候命令行会提示你密钥文件的路径,Windows电脑一般是C:\Users\Administrator\.ssh
复制到id_rsa.pub
文件中的内容备用。如果之前有密钥,新建密钥之前记得将C:\Users\Administrator\.ssh
中的文件完全删除再进行操作。
1 2
| # 一般通过Github挂载的静态博客在搭建本地博客时已经生成可忽略此步骤 ssh-keygen -t rsa
|
配置公钥
将刚刚id_rsa.pub
公钥中的内容,复制粘贴到文件里,保存退出。终端修改文件内容先点击i键切换到编辑模式再写入内容,保存退出先按ESC再输入:wq保存退出
1 2 3 4 5 6 7 8 9 10 11
| # 回到服务器终端,切换用户 su - [username]
# 创建.ssh文件夹 mkdir .ssh
# 新建authorized_keys vim .ssh/authorized_keys
# 如果提示没有vim,则先安装vim sudo yum install -y vim
|
git仓库配置
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22
| # 退出用户登录 exit
# 此时应该是root用户,创建git目录,并修改目录的所有权和用户权限 mkdir /home/git/ chown -R [username]:[username] /home/git/ chmod -R 755 /home/git/
# 进入目录,建立git仓库,修改权限 cd /home/git/ git init --bare blog.git chown [username]:[username] -R blog.git
# 新建钩子文件post-receive vim /home/git/blog.git/hooks/post-receive
# 进入文本编辑器,粘贴下面两行 #!/bin/bash git --work-tree=/home/blog --git-dir=/home/git/blog.git checkout -f
# 保存退出。然后修改文件权限 chmod +x /home/git/blog.git/hooks/post-receive
|
nginx配置
1 2 3 4
| # 首先创建blog目录用户nginx转发 mkdir /home/blog/ chown -R [username]:[username] /home/blog/ chmod -R 755 /home/blog/
|
第一种方法安装nginx
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
| # 命令行安装nginx yum install -y nginx
# 若执行不成功可尝试安装阿里镜像源这里RHEL版本对应CentOS的版本,例如我是CentOS 7 64-bit,那么我用的时第二个RHEL 7 # epel(RHEL 8) yum install -y https://mirrors.aliyun.com/epel/epel-release-latest-8.noarch.rpm # epel(RHEL 7) wget -O /etc/yum.repos.d/epel.repo https://mirrors.aliyun.com/repo/epel-7.repo # epel(RHEL 6)(epel6官方源已下线,建议切换epel-archive源) wget -O /etc/yum.repos.d/epel.repo https://mirrors.aliyun.com/repo/epel-archive-6.repo
# 启动nginx systemctl start nginx.service
# 查看nginx服务状态,绿色的active说明启动成功 systemctl status nginx.service
|
第二种方法安装nginx
针对yum无法安装的情况,这里介绍第二种方法,源码安装。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47
| # 回到家目录 cd
# 下载安装包 wget http://nginx.org/download/nginx-1.21.4.tar.gz
# 解压 tar -zxf nginx-1.21.4.tar.gz
# 进入目录,编译安装 cd nginx-1.21.4 ./configure make install prefix=/usr/local/nginx
# 配置nginx环境变量,并使环境变量生效 echo 'export PATH=$PATH:/usr/local/nginx/sbin' >> /etc/bashrc source /etc/bashrc
# 查看nginx版本号 nginx -v
# 配置Systemd服务 vim /lib/systemd/system/nginx.service
# 在文本编辑器中粘贴一下内容: [Unit] Description=nginx After=network.target [Service] Type=forking ExecStart=/usr/local/nginx/sbin/nginx ExecReload=/usr/local/nginx/sbin/nginx -s reload ExecStop=/usr/local/nginx/sbin/nginx -s quit PrivateTmp= true [Install] WantedBy=multi-user.target
# 设置开机自启动 systemctl enable nginx.service
# 重启电脑 reboot
# 重启后,查看nginx服务状态,绿色的active说明启动成功 systemctl status nginx.service
|
内容说明
1 2 3 4 5 6 7 8 9 10 11
| [Unit]:服务的说明 Description:描述服务 After:描述服务类别 [Service]服务运行参数的设置 Type=forking是后台运行的形式 ExecStart为服务的具体运行命令 ExecReload为重启命令 ExecStop为停止命令 PrivateTmp=True表示给服务分配独立的临时空间 注意:[Service]的启动、重启、停止命令全部要求使用绝对路径 [Install]运行级别下服务安装的相关设置,可设置为多用户,即系统运行级别为3
|
修改nginx转发配置
在浏览器中输入服务器公网ip地址,测试是否能打开
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23
| # 查看nginx的默认配置文件的安装位置 nginx -t
# 修改nginx的默认配置,其中cd后边就是刚刚查到的安装位置,每个人可能都不一样,我这里是/usr/local/nginx/conf/nginx.conf vim /usr/local/nginx/conf/nginx.conf
# 在文本编辑器中找到如下位置,按照注释修改root和server_name server { listen 80 default_server; listen [::]:80 default_server; root /home/blog; # 修改为创建的blog目录地址,按照我的教程是/home/blog server_name www.example.com; # 需要修改为你的域名(或者公网ip) # Load configuration files for the default server block. include /etc/nginx/default.d/*.conf; location / { } error_page 404 /404.html; location = /40x.html { }
# 保存退出。重启nginx服务 systemctl restart nginx.service
|
在Hexo站点配置文件中配置
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
| # 打开你本地的Hexo博客所在文件,打开站点配置文件_config.yml,如果是使用Github挂在的静态网页记得把Gan1Ser改为你自己的仓库名 deploy: type: git repository: git@github.com:Gan1Ser/Gan1Ser.github.io.git #用户名@服务器Ip:git仓库位置 branch: main
# 如果没有使用只是生成了本地博客 deploy: type: git repository: [username]@100.0.0.100:/home/git/blog.git #用户名@服务器Ip:git仓库位置 branch: master
# 在本地Hexo博客根目录下,打开BUSH终端,部署 hexo clean hexo g hexo d
# 如果提示ERROR Deployer not found:git错误,先安装: npm install hexo-deployer-git --save
|
打开浏览器输入你的服务器公网ip或者域名(看你nginx的server_name填写的内容),应该已经部署成功了。
附:nginx常用命令
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
| # 停止开机自启动 systemctl disable nginx.service #设置nginx服务开机自启动 systemctl enable nginx.service #启动nginx服务 systemctl start nginx.service #停止nginx服务 systemctl stop nginx.service #重启nginx服务 systemctl restart nginx.service #重新读取nginx配置(这个最常用, 不用停止nginx服务就能使修改的配置生效) systemctl reload nginx.service # 查看服务当前状态 systemctl status nginx.service # 查看所有已启动的服务 systemctl list-units --type=service
|