部署环境与准备 {#部署环境与准备}
1.环境
本地Windows10操作系统
阿里云 Ubuntu 20.04服务器面板
2.准备
hexo 本地博客
Xshell 链接到服务器
云服务器配置 Git {#云服务器配置-Git}
配置步骤
1.查看git 版本
|-----------|-----------------------|
| 1 | git --version |
2.安装依赖
|---------------------------|------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| 1 2 3 4 5 6 7 8 9 | sudo apt update sudo apt install curl libcurl4-openssl-dev expat libexpat1-dev gettext libgettextpo-dev openssl libssl-dev zlib1g zlib1g-dev asciidoc sudo apt install perl-modules sudo apt-get install cpanminus sudo cpanm ExtUtils::MakeMaker sudo apt-get install gcc |
3.卸载旧版本git
|-----------|---------------------------------|
| 1 | sudo apt-get remove git |
4.打开文件夹
用于存放下载的git包
|-----------|----------------------------|
| 1 | cd /usr/local/src/ |
5.下载最新版git压缩包
|-----------|-------------------------------------------------------------------------------------|
| 1 | wget https://mirrors.edge.kernel.org/pub/software/scm/git/git-2.33.0.tar.gz |
6.解压
|-----------|-------------------------------------|
| 1 | tar -xzvf git-2.33.0.tar.gz |
7.切换到解压后的文件目录
|-----------|-----------------------|
| 1 | cd git-2.33.0 |
8.编译
|-----------|------------------------------------|
| 1 | make prefix=/usr/local all |
会显示一堆.o类型的文件,表示正在从源码编译。
9.安装
|-----------|---------------------------------------------|
| 1 | sudo make prefix=/usr/local install |
10.查看安装的git版本
|-----------|-----------------------|
| 1 | git --version |
成功出现git version 2.32.0即表示安装成功。
11.配置Git
创建git用户
|-----------|-------------------------|
| 1 | adduser xiaozhi |
12.设置用户密码(可选)
|-----------|------------------------|
| 1 | passwd xiaozhi |
13.分配权限
|---------------|-------------------------------------------------|
| 1 2 3 | chmod 740 /etc/sudoers vim /etc/sudoers |
14.按 i 键进入文件的编辑模式,找到如下字段
root ALL=(ALL) ALL
在其后面增加一句:
|-----------|-----------------------------------------|
| 1 | xiaozhi ALL=(ALL) ALL |
15.按 Esc 键退出编辑模式,输入:wq 保存退出。
退回权限:
|-----------|--------------------------------|
| 1 | chmod 400 /etc/sudoers |
16.生成Windows本地密钥
|-----------|---------------------------|
| 1 | ssh-keygen -t rsa |
17.复制里面的内容,返回Linux服务器端,创建.ssh文件夹
|---------------|---------------------------------|
| 1 2 3 | su xiaozhi mkdir ~/.ssh |
18.创建.ssh/authorized_keys文件,打开authorized_keys文件并将刚才在本地机器复制的内容拷贝其中并保存
|-----------|------------------------------------|
| 1 | vim ~/.ssh/authorized_keys |
19.按i进入编辑模式粘贴完按 Esc 键退出编辑模式,输入:wq 保存退出。
修改权限
|-----------|-----------------------------------------------------------------------------|
| 1 | chmod 755 ~ && chmod 700 ~/.ssh && chmod 600 ~/.ssh/authorized_keys |
20.测试连接
yourIp为远程服务器的ip地址,腾讯云轻量云服务器一般是公网IP:12X.XXX.XXX.XX
|-----------|----------------------------------------------------|
| 1 | ssh -v xiaozhi@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 /www/wwwroot/blog.xiaoztx.top/hexo chown xiaozhi:xiaozhi -R /www/wwwroot/blog.xiaoztx.top/hexo |
5.建立git仓库并初始化
|-------------|---------------------------------------------------|
| 1 2 | cd /home/xiaozhi git init --bare blog.git |
3.修改blog.git的权限(-R 是递归,即文件夹下的所有文件夹或文件都会递归修改权限)
|-----------|-------------------------------------------|
| 1 | chown xiaozhi:xiaozhi -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/xiaozhi/blog.git checkout -f |
按 Esc 键退出编辑模式,输入:wq 保存退出。
6.修改文件的执行权限
|-----------|------------------------------------------------------------|
| 1 | chmod +x /home/xiaozhi/blog.git/hooks/post-receive |
|-----------|---------------------------------------------------------------------|
| 1 | chown xiaozhi:xiaozhi -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地址 |
51工具盒子