配置git开发环境(自动部署)

2018-09-14  本文已影响35人  悟器大叔

本文没有整理的很通顺,抱歉。

Step1 服务器添加ssh的pubkey实现无密码登陆服务器

1 本机:ssh-keygen -t rsa 生成钥匙对
2 复制 生成的 id_rsa.pub(默认)到服务器的 ~/.ssh/authorized_keys文件中
3 测试直接 ssh username@xxxx.xxxx.xxx

Step2 参考网上的文章构建两个库

  1. 版本管理用的 bare库,git init --bare --shared
  2. 服务文件夹在的库 git add --all

Step 3 实现本地推送之后根据不同的分支名更新不同的文件夹

1.在bare库的hooks文件夹下找到post-update.sample并去掉.sample

  1. 输入以下代码
#!/bin/sh
#
# An example hook script to prepare a packed repository for use over
# dumb transports.
#
# To enable this hook, rename this file to "post-update".
# 获取当前提交代码的人的分支名
branch=$(git rev-parse --symbolic --abbrev-ref $1)

# 如果为master主分支就cd到html的服务环境,
# 其他分支的就根据branch名称来确定去相应的文件夹
if [ "master" = "$branch" ]; then
     cd /var/www/html
else
     cd /var/www/$branch
fi

# 在相应的开发文件夹下pull 远端的相应分支到自己的master下
unset GIT_DIR
git pull origin $branch:master

exec git update-server-info

附录 设置服务器的虚拟域名以映射到相应的文件夹下

由于本来我的这台服务器就开了ssl所以我要做的就是在/etc/apache2/sites-enabled/000-default.conf中加入相应的设置,

<VirtualHost *:80>
        ServerName test.yourserver.com
        ServerAlias *.test.yourserver.com

        ServerAdmin webmaster@localhost
      
        VirtualDocumentRoot /var/www/%1
        <Directory /var/www/%1/hotel_price>
                Options FollowSymLinks ExecCGI
                AllowOverride All
        </Directory>
</VirtualHost>

网站根目录在/var/www下,其中有很多git的仓库,比如有个/var/www/try文件夹,然后访问网址的时候就用的是 try.test.yourserver.com
为了能够解析这个网址,在域名商处需要配置一下,CNAME 解析 *.test

ps 这个解答里提供了另一种方法,针对不同的用户登陆https://stackoverflow.com/questions/26734933/how-to-set-up-git-over-http

pps 这里有ssl设置的方法https://www.digicert.com/csr-ssl-installation/apache-openssl.htm#ssl_certificate_install

上一篇下一篇

猜你喜欢

热点阅读