搭建博客
参考链接:
准备
vps环境
我的vps是在阿里云买的,配置如下
操作系系统:debian 12.6 64位 CPU:2核 内存:2G 带宽:3M
|
然后我们为了权限隔离,可以单独创建一个用户用来管理博客
sudo adduser git sudo passwd git //设置密码
|
赋予git用户sudo权限
sudo chmod 740 /etc/sudoers ls -l /etc/sudoers 可以先看一下权限分配,待会改完好改回来 sudo vim /etc/sudoers //配置如下
|

保存退出后,该回去
sudo chmod 440 /etc/sudoers
|
关闭git用户shell权限
ssh 连接服务器,登录到服务器上,对服务器进行各种操作,这通常很不安全,也不合适,我们只需要能对仓库操作就可以了,不需要更大的权限。
sudo vim /etc/passwd // 原文: git:x:1001:1001:,,,:/home/git:/bin/sh 修改后: git:x:1001:1001:,,,:/home/git:/usr/bin/git-shell
|

chsh -s $(command -v git-shell) <user> //命令指定用户 cp /usr/share/doc/git/contrib/git-shell-commands /home/git/ -R //把git-shell的命令复制到git用户目录下 chown git:git /home/git/git-shell-commands/ -R //权限控制 chmod +x /home/git/git-shell-commands/help exit
|

Git
sudo apt install git git --version //如果安装不成功,可以试一下更新一下 apt update
|
我这里的git版本
root@debian:~# git --version git version 2.39
|
初始化git仓库
cd /home/git mkdir youzipii.git //创建git仓库文件夹 cd blog.git git init --bare //使用--bare参数初始化为裸仓库,这样创建的仓库不包含工作区
|
配置ssh
cd /home/git mkdir .ssh cd .ssh vim authorized_keys
|
这里需要把用户的公钥文件写入authorized_keys,如果没有可以用ssh-keygen生成
sudo ssh-keygen -t rsa -C "your_email"
|
如果怕复制出问题,可以用下面这个命令
cat ~/.ssh/id_rsa.pub >> /home/git/.ssh/authorized_keys
|
用户组管理
确保 blog.git、.ssh、blog 目录的用户组权限为 git:git,若不是,执行下列命令:
ls -l /home/git/ ll -l /var/www/
|
创建网站目录
cd /ver/www/ //没有就创建一个 mkdir blog
|
使用git-hooks同步网站根目录
创建post-receive文件
cd /home/git/youzipii.git/hooks vim /pose-receive
|
复制下面的内容到post-receive
#!/bin/bash echo "post-receive hook is running..." //没有目录可以先创建一个 GIT_REPO=/home/git/youzipii.git TMP_GIT_CLONE=/tmp/blog PUBLIC_WWW=/var/www/blog
rm -rf ${TMP_GIT_CLONE} git clone $GIT_REPO $TMP_GIT_CLONE rm -rf ${PUBLIC_WWW}/* cp -rf ${TMP_GIT_CLONE}/* ${PUBLIC_WWW}
|
Nginx
apt install nginx //安装nginx systemctl start nginx //启动nginx systemctl enable nginx //开机启动 systemctl status nginx //查看nginx运行状态
|

可以访问http://your-ip,看看是否显示nginx的默认页面

配置nginx
cd /etc/nginx/sites-available //有些是改nginx.conf # 备份默认配置 cp default default.bak # 修改配置 vim default
|
server { listen 80 default; root /var/www/blog; server_name 127.0.0.1; access_log /var/log/nginx/blog_access.log; error_log /var/log/nginx/blog_error.log; error_page 404 = /404.html;
location ~* ^.+\.(ico|gif|jpg|jpeg|png)$ { root /var/www/blog; access_log off; expires 1d; }
location ~* ^.+\.(css|js|txt|xml|swf|wav)$ { root /var/www/blog; access_log off; expires 10m; }
location / { root /var/www/blog; if (-f $request_filename) { rewrite ^/(.*)$ /$1 break; } }
location /nginx_status { stub_status on; access_log off; } }
|
nginx -t // systemctl restart nginx
|
最后修改配置文件_-config.yml
deploy: type: git repo: git@your_ip:/home/git/youzipii.git branch: master #这个有的可能是main,记得改成master,不然可能不会更新
|
hexo clean && hexo g && hexo d
|

