部署环境与准备 {#部署环境与准备}
1.环境
本地Windows10操作系统
腾讯云 Centos 7.9 服务器宝塔面板
2.准备
hexo 本地博客
Xshell 链接到服务器
云服务器配置 Git {#云服务器配置-Git}
配置步骤
1.查看git 版本
|-----------|-----------------------|
| 1
| git --version
|
2.安装依赖
|---------------|------------------------------------------------------------------------------------------------------------------------------------|
| 1 2 3
| yum install curl-devel expat-devel gettext-devel openssl-devel zlib-devel asciidoc yum install gcc perl-ExtUtils-MakeMaker
|
3.卸载旧版本git
|-----------|------------------------|
| 1
| yum remove git
|
4.打开文件夹
用于存放下载的git包
|-----------|----------------------------|
| 1
| cd /usr/local/src/
|
5.下载最新版git压缩包
|-----------|-------------------------------------------------------------------------------------|
| 1
| wget https://mirrors.edge.kernel.org/pub/software/scm/git/git-2.32.0.tar.xz
|
6.解压
|-----------|------------------------------------|
| 1
| tar -xvf git-2.32.0.tar.xz
|
7.切换到解压后的文件目录
|-----------|-----------------------|
| 1
| cd git-2.32.0
|
8.编译
|-----------|----------------------------------------|
| 1
| make prefix=/usr/local/git all
|
会显示一堆.o类型的文件,表示正在从源码编译。
9.安装
|-----------|--------------------------------------------|
| 1
| make prefix=/usr/local/git install
|
10.配置环境变量
方式一方式二
|-----------|--------------------------------------------------------------------------------------------|
| 1
| echo "export PATH=$PATH:/usr/local/git/bin" >> /etc/profile && source /etc/profile
|
也可以将该语句直接写入相应的文件中,再执行source命令使生效。
|-----------|--------------------------|
| 1
| vim /etc/profile
|
将下面两行命令添加到profile文件末尾
|-------------|---------------------------------------------------------------|
| 1 2
| PATH=$PATH:/usr/local/git/bin # git 的目录 export PATH
|
按i进入编辑模式,按esc退出,再按:wq保存编辑。
使写入语句生效:
|-----------|-----------------------------|
| 1
| source /etc/profile
|
11.查看安装的git版本
|-----------|-----------------------|
| 1
| git --version
|
成功出现git version 2.32.0
即表示安装成功。
12.配置Git
创建git用户
|-----------|---------------------|
| 1
| adduser git
|
13.设置用户密码(可选)
|-----------|--------------------|
| 1
| passwd git
|
14.分配权限
|---------------|-------------------------------------------------|
| 1 2 3
| chmod 740 /etc/sudoers vim /etc/sudoers
|
15.按 i 键进入文件的编辑模式,找到如下字段
root ALL=(ALL) ALL
在其后面增加一句:
|-----------|-------------------------------------|
| 1
| git ALL=(ALL) ALL
|
16.按 Esc 键退出编辑模式,输入:wq 保存退出。
退回权限:
|-----------|--------------------------------|
| 1
| chmod 400 /etc/sudoers
|
17.生成Windows本地密钥
|-----------|---------------------------|
| 1
| ssh-keygen -t rsa
|
18.复制里面的内容,返回Linux服务器端,创建.ssh文件夹
|---------------|-----------------------------|
| 1 2 3
| su git mkdir ~/.ssh
|
19.创建.ssh/authorized_keys文件,打开authorized_keys文件并将刚才在本地机器复制的内容拷贝其中并保存
|-----------|------------------------------------|
| 1
| vim ~/.ssh/authorized_keys
|
20.按i进入编辑模式粘贴完按 Esc 键退出编辑模式,输入:wq 保存退出。
修改权限
|-----------|-----------------------------------------------------------------------------|
| 1
| chmod 755 ~ && chmod 700 ~/.ssh && chmod 600 ~/.ssh/authorized_keys
|
21.测试连接
yourIp为远程服务器的ip地址,腾讯云轻量云服务器一般是公网IP:12X.XXX.XXX.XX
|-----------|------------------------------------------------|
| 1
| ssh -v git@yourIp //yourIp为你的服务器ip
|
如果设置有密码,输入密码即可连接到远程终端。
云服务器网站配置 {#云服务器网站配置}
1.宝塔配置
这里采用宝塔的一键LAMP配置,然后就可以很方便的使用一些功能。
添加站点
- 在域名中添加自己购买的域名,并确保已经解析IP到自己腾讯云服务器上了,这个步骤网上有很多教程,自行完成域名相关问题,证书SSL申请等,如果域名有解析可以直接勾上。
- 证书的添加自行百度搜索,强制https开关打开,保证安全性。
- 这里的
blog.xiaoztx.top
要改成自己购买的域名,下同
2.创建远程博客目录
切换到远程Linux服务器端
切换到root用户,创建一个目录用于存储网站的根目录/www/wwwroot/blog.xiaoztx.top/hexo
并赋给相应权限
|-------------------|--------------------------------------------------------------------------------------|
| 1 2 3 4 5
| su root mkdir /home/hexo chown git:git -R /www/wwwroot/blog.xiaoztx.top/hexo
|
5.建立git仓库并初始化
|-------------|-----------------------------------------------|
| 1 2
| cd /home/git git init --bare blog.git
|
3.修改blog.git的权限(-R 是递归,即文件夹下的所有文件夹或文件都会递归修改权限)
|-----------|-----------------------------------|
| 1
| chown git:git -R blog.git
|
4.在 /home/git/blog.git 下,有一个自动生成的 hooks 文件夹,我们创建一个新的 git 钩子 post-receive,用于自动部署。
|-----------|-----------------------------------------|
| 1
| vim blog.git/hooks/post-receive
|
5.按 i 键进入文件的编辑模式,在该文件中添加两行代码(将下边的代码粘贴进去),指定 Git 的工作树(源代码)和 Git 目录。
|-------------|-----------------------------------------------------------------------------------------------------------------|
| 1 2
| #!/bin/bash git --work-tree=/www/wwwroot/blog.xiaoztx.top/hexo --git-dir=/home/git/blog.git checkout -f
|
按 Esc 键退出编辑模式,输入:wq 保存退出。
6.修改文件的执行权限
|-----------|--------------------------------------------------------|
| 1
| chmod +x /home/git/blog.git/hooks/post-receive
|
|-----------|-------------------------------------------------------------|
| 1
| chown git:git -R /www/wwwroot/blog.xiaoztx.top/hexo
|
8.将网站目录
改成/www/wwwroot/blog.xiaoztx.top/hexo
9.在 windows10 本地 hexo 目录修改_config.yml 文件
|-----------------|---------------------------------------------------------------------------------------------------|
| 1 2 3 4
| deploy: type: git repository: git@ip:/home/git/blog.git #用户名@服务器Ip:git仓库位置 branch: master
|
10.在本机 gitbash 部署
|-------------|------------------------------|
| 1 2
| hexo clean hexo g -d
|
或者一键三连
|-----------|-------------------------------------|
| 1
| hexo cl && hexo g && hexo d
|
常见错误 {#常见错误}
1.git-upload-pack: 未找到命令
|-------------|------------------------------------------------------------------------------------------------|
| 1 2
| bash: git-upload-pack: command not found fatal: Could not read from remote repository.
|
解决方法
|-----------|----------------------------------------------------------------------------------|
| 1
| sudo ln -s /usr/local/git/bin/git-upload-pack /usr/bin/git-upload-pack
|
2.git-receive-pack: 未找到命令
|-------------|-------------------------------------------------------------------------------------------------|
| 1 2
| bash: git-receive-pack: command not found fatal: Could not read from remote repository.
|
解决方法
|-----------|-----------------------------------------------------------------------------------|
| 1
| sudo ln -s /usr/local/git/bin/git-receive-pack /usr/bin/git-receive-pack
|
3.无法远程连接获取
|-----------|-------------------------------------------------------|
| 1
| fatal: Could not read from remote repository.
|
解决方法
|-----------|--------------------------------|
| 1
| 重试或者 删掉本地ssh公钥重新上传至服务器
|
4.key 出错
|-----------|---------------------------------------|
| 1
| Host key verification failed.
|
解决方法
|-----------|---------------------------------|
| 1
| ssh-keygen -R 你要访问的IP地址
|