Turn your VPS into a git repository

Environment

  • Ubuntu 17.04
  • Apache 2.4.25
  • Git 2.11.0

Tạo user deploy

Từ user root tạo mới và login vào user deploy

useradd --create-home -s /bin/bash deploy

su -l deploy

Config ssh

mkdir ~/.ssh

touch ~/.ssh/authorized_keys

chmod 700 ~/.ssh

chmod 600 ~/.ssh/authorized_keys

Thêm khóa id_rsa.pub của bạn vào file authorized_keys

Login vào user root, mở file /etc/ssh/sshd_config thêm

Match Group deploy
PasswordAuthentication no
#ChallengeResponseAuthentication no (chỉ chuyển sang no nếu là yes)

Restart ssh server

service ssh restart

Tạo source code directory

Tạo thư mục chứa source code và chuyển quyền owner cho user deploy

mkdir /var/www/ccn

chown -hR deploy:deploy /var/www/ccn

Thêm user www-data vào group deploy

usermod -a -G deploy www-data

Tạo git hook

Login vào user deploy, tạo git directory

git init --bare coconut.git

cd ~/coconut.git/hooks

Tạo file post-receive với nội dung sau

#!/bin/sh

SOURCE_DIR="/var/www/ccn"
GIT_DIR="/home/deploy/coconut.git"

while read oldrev newrev refname
do
branch=$(git rev-parse --symbolic --abbrev-ref $refname)
git --work-tree=$SOURCE_DIR --git-dir=$GIT_DIR checkout -f $branch
done

Cấp quyền thực thi cho file post-receive

chmod +x post-receive

Push source code

Push source code lên vps và cài đặt vendor

cd /var/www/ccn

composer install --optimize-autoloader --no-dev

Đổi quyền

find /var/www/ccn -type d -exec chmod 755 {} +

find /var/www/ccn -type f -exec chmod 644 {} +

Done!!!

Comments