diff --git a/example.org.conf b/example.org.conf new file mode 100644 index 0000000..085b0e6 --- /dev/null +++ b/example.org.conf @@ -0,0 +1,8 @@ + + ServerAdmin webmaster@example.org + ServerName example.org + ServerAlias www.example.org + DocumentRoot /srv/www/example.org/public_html/ + ErrorLog /srv/www/example.org/logs/error.log + CustomLog /srv/www/example.org/logs/access.log combined + \ No newline at end of file diff --git a/git-post-reveive b/git-post-reveive new file mode 100644 index 0000000..75cafc9 --- /dev/null +++ b/git-post-reveive @@ -0,0 +1,18 @@ +#!/bin/bash +#hook/post-receive +#CONFIG + +PRODDIR="www" + +read oldrev newrev refname +if [ $refname = "refs/heads/prod" ]; then + echo "===== DEPLOYING APP =====" + unset GIT_DIR + cd ~ + cd $PRODDIR + git pull --ff-only origin prod + echo $? + echo "====== OK =====" +else + echo "Warning Commit not deployed, please use prod branch" +fi \ No newline at end of file diff --git a/git-pre-receive b/git-pre-receive new file mode 100644 index 0000000..b378b39 --- /dev/null +++ b/git-pre-receive @@ -0,0 +1,17 @@ +#!/bin/bash +#hook/pre-receive +#CONFIG +PRODDIR="www" + +read oldrev newrev refname +if [ $refname = "refs/heads/prod" ]; then + echo "===== UPDATE REPOSITORY =====" + unset GIT_DIR + cd ~ + cd $PRODDIR + git add . + git commit -m "Auto Commit" + echo "====== OK =====" +else + echo "Warning Commit not deployed, please use prod branch" +fi \ No newline at end of file diff --git a/install-debian-server.sh b/install-debian-server.sh index 3be0eba..82e7a51 100644 --- a/install-debian-server.sh +++ b/install-debian-server.sh @@ -4,10 +4,13 @@ # http://www.debian.org/doc/manuals/securing-debian-howto/ # https://www.thefanclub.co.za/how-to/how-secure-ubuntu-1204-lts-server-part-1-basics # https://www.linode.com/docs/websites/lamp/lamp-server-on-debian-7-wheezy/ +# http://web-74.com/blog/reseaux/gerer-le-deploiement-facilement-avec-git/ # echo "This script has been tested only on Linux Debian 7" +_cwd="$(pwd)" + echo "Installing harden" apt-get install harden @@ -59,5 +62,67 @@ chown www-data /var/log/php apt-get install php5-mysql +echo "installing vhost" +read -p "hostname ? " _host_name +cp "$_cwd"/example.org.conf /etc/apache2/sites-available/"$_host_name".conf +sed -ir "s/example\.org/$_host_name/g" /etc/apache2/sites-available/"$_host_name".conf + +mkdir -p /srv/www/"$_host_name"/public_html +mkdir /srv/www/"$_host_name"/logs +#set proper right to user will handle the app +chown -R root:admin /srv/www/"$_host_name"/ +chmod -R g+w /srv/www/"$_host_name"/ +chmod -R g+r /srv/www/"$_host_name"/ + +# create a shortcut to the site +mkdir /home/"$user"/www/ +chown "$user":admin /home/"$user"/www/ +ln -s /srv/www/"$_host_name" /home/"$user"/www/"$_host_name" + +#activate teh vhost +a2ensite "$_host_name".conf + +#restart apache service apache2 restart +#installing better prompt and some goodies for root +echo "shell prompt" +git clone git://github.com/bachy/dotfiles-server.git ~/.dotfiles-server && cd ~/.dotfiles-server && ./install.sh && cd - + +# setup user environment +echo "$user tasks" +su $user +cd ~ +echo "shell prompt" +git clone git://github.com/bachy/dotfiles-server.git ~/.dotfiles-server && cd ~/.dotfiles-server && ./install.sh && cd - +cd ~ +source .bashrc + +# setup bare repositorie to push to +echo "setup git repositories" +mkdir ~/git-repositories +mkdir ~/git-repositories/"$_host_name".git +cd ~/git-repositories/"$_host_name".git +git init --bare + +# setup git repo on site folder +cd /srv/www/"$_host_name"/public_html/ +git init +# link to the bare repo +git remote add origin ~/git-repositories/"$_host_name".git + +# cerate hooks that will update the site repo +cd ~ +cp "$_cwd"/pre-receive ~/git-repositories/"$_host_name".git/hooks/ +cp "$_cwd"/post-receive ~/git-repositories/"$_host_name".git/hooks/ + +sed -ir "s/PRODDIR=\"www\"/PRODDIR=\/srv\/www\/$_host_name\/public_html/g" ~/git-repositories/"$_host_name".git/hooks/pre-receive +sed -ir "s/PRODDIR=\"www\"/PRODDIR=\/srv\/www\/$_host_name\/public_html/g" ~/git-repositories/"$_host_name".git/hooks/post-receive + +cd ~/git-repositories/"$_host_name".git/hooks/ +chmod +x post-receive pre-receive + +# done +echo "install succeed" +echo "your site stay now to ~/www/$_host_name" +echo "you can push updates on prod branch throug $user@IP.IP.IP.IP:git-repositories/$_host_name.git" diff --git a/readme.md b/readme.md index cca092c..1f3052c 100644 --- a/readme.md +++ b/readme.md @@ -2,10 +2,10 @@ ## how to use it on a fresh install -1 install git +1 install git ``` sudo apt-get git -``` +``` 2 clone the repo ``` @@ -23,8 +23,8 @@ chmod a+x install-debian-server.sh ## ref -http://www.debian.org/doc/manuals/securing-debian-howto/ -https://www.thefanclub.co.za/how-to/how-secure-ubuntu-1204-lts-server-part-1-basics -https://www.linode.com/docs/websites/lamp/lamp-server-on-debian-7-wheezy - +http://www.debian.org/doc/manuals/securing-debian-howto/ +https://www.thefanclub.co.za/how-to/how-secure-ubuntu-1204-lts-server-part-1-basics +https://www.linode.com/docs/websites/lamp/lamp-server-on-debian-7-wheezy +https://www.evernote.com/Home.action#n=28425519-ee9f-4efc-a13b-5426f4b31a78&ses=1&sh=5&sds=5&x=git%2520deploy&