搭建博客

参考链接:

准备

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 //配置如下

image-20241203204454463

保存退出后,该回去

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

image-20241203211236868

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

image-20241204170146409

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/
chown -R git:git /目录

创建网站目录

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}
chmod +x post-receive

Nginx

apt install nginx  		//安装nginx
systemctl start nginx //启动nginx
systemctl enable nginx //开机启动
systemctl status nginx //查看nginx运行状态

image-20241203210252768

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

image-20241203210334823

配置nginx

cd /etc/nginx/sites-available //有些是改nginx.conf
# 备份默认配置
cp default default.bak
# 修改配置
vim default
server {
listen 80 default; #默认监听80端口
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

image-20241204174146857

image-20241204174210113