服务器搭建个人图床,展示git仓库的图片

设立多location的nginx映射

原来自己的Nginx已经搭建了自己的网站,所以需要配置多个location,用第二个location来展示自己的图片,因此location如果要一个特定的url(不是/的时候)要使用别名,不能用root,alias指定的目录是准确的,直接指向目标文件的物理地址

主要是要注意自己的第二个location下面一定要有对应的目录,然后要启动图片浏览,文件下载,就必须使用autoindex on;

需要添加的location格式如下

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
# 原来的网站的节点
location / {
root /var/www/blog;
index index.html index.htm;
}
# 为了搞自己的图床,2020年3月4日13:56:42 再来折腾
# 一定要在www建立img目录--这是你去访问才能看到绿锁,然后加入index.html才能看到内容
location /img {
#img /var/www/img;
# 好像只能使用alias,不然连nginx -t都过不了
alias /var/www/img;
# index index.html index.htm;
autoindex on;
}

搭建git服务器并添加git-hooks

看完注意点再操作
添加githooks可以看这个 这里要仿造这个链接的教程再在别的目录里面进行git图片仓库的操作,然后自己之后就可以每次像给github提交一样给自己的服务器提交了(看下面我的代码)

linux版本

1
2
3
4
5
6
7
8
# 这个只要做一次
git remote add pic@huaweiyun git@xxxx.32.xxx.17:/home/git/img.git
git push pic@huaweiyun master
# 之后每次的提交
git pull pic@huaweiyun master
git add --all
git commit -m "`date '+%Y-%m-%d %H:%M:%S'`"
git push pic@huaweiyun master

windows版本

1
2
3
4
5
6
7
8
# 这个只要做一次
git remote add pic@huaweiyun git@xxxx.32.xxx.17:/home/git/img.git
git push pic@huaweiyun master
# 之后每次的提交
git pull pic@huaweiyun master
git add --all
git commit -m "%date%"
git push pic@huaweiyun master

注意点

  • 一定要让git/.ssh的所有文件的拥有者是git,否则可能导致无法免密登录
    就是要操作sudo chown -R git:git /home/git/.ssh
  • 还有我们后面要启用githooks,所以不要把git的运行目录降权,否则无法使用
  • 也可以给git添加root权限
    1
    2
    chmod 740 /etc/sudoers
    vim /etc/sudoers
    找到以下内容:
    1
    2
    ## Allow root to run any commands anywhere
    root ALL=(ALL) ALL
    在下面添加一行:git ALL=(ALL) ALL

保存退出后改回权限:chmod 400 /etc/sudoers

思考代码

了解到了裸库上的文件是看不到的,必须通过web转化成可以看见的链接,所以现在就很好理解下面的代码了

1
2
3
4
5
6
7
8
#!/bin/bash
GIT_REPO=/home/git/img.git
TMP_GIT_CLONE=/tmp/img
PUBLIC_WWW=/var/www/img
rm -rf ${TMP_GIT_CLONE}
git clone $GIT_REPO $TMP_GIT_CLONE
rm -rf ${PUBLIC_WWW}/*
cp -rf ${TMP_GIT_CLONE}/* ${PUBLIC_WWW}

成功图展示

爽

nginx配置易错点回顾

  • location如果要一个特定的url要使用别名,不能用root,alias指定的目录是准确的
  • 然后要启动图片浏览,文件下载,就必须使用autoindex on;

参考文章

Nginx一个server配置多个location
搭建Git服务器
添加githooks可以看这个