splitted vhost, added gitbarerepo creation
This commit is contained in:
parent
e15e231cc5
commit
6e5433b041
25
assets/deploy-drupal.sh
Executable file
25
assets/deploy-drupal.sh
Executable file
@ -0,0 +1,25 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
echo "updating drupal 8"
|
||||||
|
echo "Switching to project docroot."
|
||||||
|
cd ./public_html
|
||||||
|
echo ""
|
||||||
|
echo "Pulling down latest code."
|
||||||
|
git pull --ff-only origin prod
|
||||||
|
echo ""
|
||||||
|
echo "Clearing drush caches."
|
||||||
|
drush cache-clear drush
|
||||||
|
echo ""
|
||||||
|
echo "Composer install."
|
||||||
|
composer install --no-dev
|
||||||
|
echo ""
|
||||||
|
echo "Running database updates."
|
||||||
|
drush updb -y
|
||||||
|
echo ""
|
||||||
|
echo "Importing configuration."
|
||||||
|
drush config-import -y
|
||||||
|
echo ""
|
||||||
|
echo "Clearing caches."
|
||||||
|
drush cr
|
||||||
|
echo ""
|
||||||
|
echo "Deployment complete."
|
10
assets/deploy-simple.sh
Normal file
10
assets/deploy-simple.sh
Normal file
@ -0,0 +1,10 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
echo "updating"
|
||||||
|
echo "Switching to project docroot."
|
||||||
|
cd ./public_html
|
||||||
|
echo ""
|
||||||
|
echo "Pulling down latest code."
|
||||||
|
git pull --ff-only origin prod
|
||||||
|
echo ""
|
||||||
|
echo "Deployment complete."
|
@ -10,9 +10,11 @@ if [ $refname = "refs/heads/prod" ]; then
|
|||||||
unset GIT_DIR
|
unset GIT_DIR
|
||||||
cd ~
|
cd ~
|
||||||
cd $PRODDIR
|
cd $PRODDIR
|
||||||
git pull --ff-only origin prod
|
# git pull --ff-only origin prod
|
||||||
|
# run deploy script instead
|
||||||
|
. deploy.sh
|
||||||
echo $?
|
echo $?
|
||||||
echo "====== OK ====="
|
echo "====== OK ====="
|
||||||
else
|
else
|
||||||
echo "Warning Commit not deployed, please use prod branch"
|
echo "Warning Commit not deployed, please use prod branch"
|
||||||
fi
|
fi
|
||||||
|
@ -1,6 +1,7 @@
|
|||||||
#!/bin/bash
|
#!/bin/bash
|
||||||
#hook/pre-receive
|
#hook/pre-receive
|
||||||
#CONFIG
|
#CONFIG
|
||||||
|
|
||||||
PRODDIR="www"
|
PRODDIR="www"
|
||||||
|
|
||||||
read oldrev newrev refname
|
read oldrev newrev refname
|
||||||
@ -14,4 +15,4 @@ if [ $refname = "refs/heads/prod" ]; then
|
|||||||
echo "====== OK ====="
|
echo "====== OK ====="
|
||||||
else
|
else
|
||||||
echo "Warning Commit not deployed, please use prod branch"
|
echo "Warning Commit not deployed, please use prod branch"
|
||||||
fi
|
fi
|
||||||
|
@ -4,6 +4,7 @@
|
|||||||
[SSH]
|
[SSH]
|
||||||
sequence = 7000,8000,9000
|
sequence = 7000,8000,9000
|
||||||
seq_timeout = 5
|
seq_timeout = 5
|
||||||
|
# TODO do not limit port 22 to the ip as it don't work with 4G connection
|
||||||
start_command = ufw allow from %IP% to any port 22
|
start_command = ufw allow from %IP% to any port 22
|
||||||
tcpflags = syn
|
tcpflags = syn
|
||||||
cmd_timeout = 10
|
cmd_timeout = 10
|
||||||
|
@ -7,7 +7,7 @@ _cwd="$(pwd)"
|
|||||||
|
|
||||||
while [ "$_bare_name" = "" ]
|
while [ "$_bare_name" = "" ]
|
||||||
do
|
do
|
||||||
read -p "enter the bare repos folder name ? " _host_name
|
read -p "enter the bare repos folder name ? " _bare_name
|
||||||
if [ "$_bare_name" != "" ]; then
|
if [ "$_bare_name" != "" ]; then
|
||||||
read -p "is bare folder name $_bare_name correcte [y|n] " validated
|
read -p "is bare folder name $_bare_name correcte [y|n] " validated
|
||||||
if [ "$validated" = "y" ]; then
|
if [ "$validated" = "y" ]; then
|
||||||
@ -18,11 +18,11 @@ if [ "$_bare_name" != "" ]; then
|
|||||||
fi
|
fi
|
||||||
done
|
done
|
||||||
|
|
||||||
|
|
||||||
while [ "$_prod_folder_path" = "" ]
|
while [ "$_prod_folder_path" = "" ]
|
||||||
do
|
do
|
||||||
read -p "enter the prod folder path folder name ? " _host_name
|
read -p "enter the prod folder path (must be a public_html parent's) ? " _prod_folder_path
|
||||||
if [ "$_bare_name" != "" ]; then
|
if [ "$_prod_folder_path" != "" ]; then
|
||||||
|
# TODO check if path exists
|
||||||
read -p "is prod folder path $_prod_folder_path correcte [y|n] " validated
|
read -p "is prod folder path $_prod_folder_path correcte [y|n] " validated
|
||||||
if [ "$validated" = "y" ]; then
|
if [ "$validated" = "y" ]; then
|
||||||
break
|
break
|
||||||
@ -32,14 +32,26 @@ if [ "$_bare_name" != "" ]; then
|
|||||||
fi
|
fi
|
||||||
done
|
done
|
||||||
|
|
||||||
|
# ask for simple php conf or drupal conf
|
||||||
|
while [ "$_drupal" != "yes" ] && [ "$_drupal" != "no" ]
|
||||||
|
do
|
||||||
|
echo -n "Is your site is a drupal one? [yes|no] "
|
||||||
|
read _drupal
|
||||||
|
done
|
||||||
|
|
||||||
# setup bare repositorie to push to
|
# setup bare repositorie to push to
|
||||||
|
|
||||||
mkdir ~/git-repositories
|
mkdir ~/git-repositories
|
||||||
mkdir ~/git-repositories/"$_bare_name".git
|
mkdir ~/git-repositories/"$_bare_name".git
|
||||||
cd ~/git-repositories/"$_bare_name".git
|
cd ~/git-repositories/"$_bare_name".git
|
||||||
git init --bare
|
git init --bare
|
||||||
|
|
||||||
|
# add deploy script
|
||||||
|
if [ "$_drupal" = "yes" ]; then
|
||||||
|
cp "$_cwd"/assets/deploy-drupal.sh "$_prod_folder_path"/deploy.sh
|
||||||
|
else
|
||||||
|
cp "$_cwd"/assets/deploy-simple.sh "$_prod_folder_path"/deploy.sh
|
||||||
|
fi
|
||||||
|
|
||||||
# setup git repo on site folder
|
# setup git repo on site folder
|
||||||
cd "$_prod_folder_path"
|
cd "$_prod_folder_path"
|
||||||
git init
|
git init
|
||||||
@ -51,14 +63,14 @@ cd ~
|
|||||||
cp "$_cwd"/assets/git-pre-receive /home/"$USER"/git-repositories/"$_bare_name".git/hooks/pre-receive
|
cp "$_cwd"/assets/git-pre-receive /home/"$USER"/git-repositories/"$_bare_name".git/hooks/pre-receive
|
||||||
cp "$_cwd"/assets/git-post-receive /home/"$USER"/git-repositories/"$_bare_name".git/hooks/post-receive
|
cp "$_cwd"/assets/git-post-receive /home/"$USER"/git-repositories/"$_bare_name".git/hooks/post-receive
|
||||||
|
|
||||||
sed -ir "s/PRODDIR=\"www\"/PRODDIR=\/srv\/www\/$_bare_name\/public_html/g" /home/"$USER"/git-repositories/"$_bare_name".git/hooks/pre-receive
|
sed -ir "s/PRODDIR=\"www\"/PRODDIR=$_prod_folder_path/g" /home/"$USER"/git-repositories/"$_bare_name".git/hooks/pre-receive
|
||||||
sed -ir "s/PRODDIR=\"www\"/PRODDIR=\/srv\/www\/$_bare_name\/public_html/g" /home/"$USER"/git-repositories/"$_bare_name".git/hooks/post-receive
|
sed -ir "s/PRODDIR=\"www\"/PRODDIR=$_prod_folder_path/g" /home/"$USER"/git-repositories/"$_bare_name".git/hooks/post-receive
|
||||||
|
|
||||||
cd /home/"$USER"/git-repositories/"$_bare_name".git/hooks/
|
cd /home/"$USER"/git-repositories/"$_bare_name".git/hooks/
|
||||||
chmod +x post-receive pre-receive
|
chmod +x post-receive pre-receive
|
||||||
|
|
||||||
# done
|
# done
|
||||||
echo "git repos for $_bare_name install succeed"
|
echo "git repos for $_bare_name install succeed"
|
||||||
echo "your site stay now to /home/$USER/www/$_bare_name"
|
echo "your site stay now to $_prod_folder_path"
|
||||||
echo "you can push updates on prod branch through $USER@IP.IP.IP.IP:git-repositories/$_bare_name.git"
|
echo "you can push updates on prod branch through $USER@IP.IP.IP.IP:git-repositories/$_bare_name.git"
|
||||||
echo "* * *"
|
echo "* * *"
|
||||||
|
@ -25,7 +25,11 @@ echo -n "define a sequence number for opening ssh (as 7000,8000,9000) : "
|
|||||||
read sq
|
read sq
|
||||||
sed -i "s/7000,8000,9000/$sq/g" /etc/knockd.conf
|
sed -i "s/7000,8000,9000/$sq/g" /etc/knockd.conf
|
||||||
sed -i 's/START_KNOCKD=0/START_KNOCKD=1/g' /etc/default/knockd
|
sed -i 's/START_KNOCKD=0/START_KNOCKD=1/g' /etc/default/knockd
|
||||||
/etc/init.d/knockd start
|
# /etc/init.d/knockd start
|
||||||
|
systemctl start knockd
|
||||||
|
# patch https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=868015
|
||||||
|
# systemctl enable knockd
|
||||||
|
|
||||||
echo "\033[92;1mknockd installed and configured\033[Om"
|
echo "\033[92;1mknockd installed and configured\033[Om"
|
||||||
echo "\033[92;1mplease note this sequence for future ssh knocking\033[Om"
|
echo "\033[92;1mplease note this sequence for future ssh knocking\033[Om"
|
||||||
echo "$sq1"
|
echo "$sq1"
|
||||||
|
97
bin/lemp.sh
97
bin/lemp.sh
@ -154,103 +154,6 @@ chmod +x /usr/local/bin/drush
|
|||||||
echo "\033[92;1mDrush and DrupalConsoleinstalled\033[Om"
|
echo "\033[92;1mDrush and DrupalConsoleinstalled\033[Om"
|
||||||
|
|
||||||
|
|
||||||
echo '\033[35m
|
|
||||||
__ __
|
|
||||||
_ __/ /_ ____ _____/ /_
|
|
||||||
| | / / __ \/ __ \/ ___/ __/
|
|
||||||
| |/ / / / / /_/ (__ ) /_
|
|
||||||
|___/_/ /_/\____/____/\__/
|
|
||||||
\033[0m'
|
|
||||||
echo "\033[35;1mVHOST install \033[0m"
|
|
||||||
while [ "$vh" != "y" ] && [ "$vh" != "n" ]
|
|
||||||
do
|
|
||||||
echo -n "Should we install a vhost? [y|n] "
|
|
||||||
read vh
|
|
||||||
# vh=${vh:-y}
|
|
||||||
done
|
|
||||||
if [ "$vh" = "y" ]; then
|
|
||||||
|
|
||||||
while [ "$_domain" = "" ]
|
|
||||||
do
|
|
||||||
read -p "enter a hostname ? " _domain
|
|
||||||
if [ "$_domain" != "" ]; then
|
|
||||||
read -p "is hostname $_domain correcte [y|n] " validated
|
|
||||||
if [ "$validated" = "y" ]; then
|
|
||||||
break
|
|
||||||
else
|
|
||||||
_domain=""
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
done
|
|
||||||
# ask for simple php conf or drupal conf
|
|
||||||
while [ "$_drupal" != "yes" ] && [ "$_drupal" != "no" ]
|
|
||||||
do
|
|
||||||
echo -n "Is your site is a drupal one? [yes|no] "
|
|
||||||
read _drupal
|
|
||||||
done
|
|
||||||
# ask for let's encrypt
|
|
||||||
while [ "$_letsencrypt" != "yes" ] && [ "$_letsencrypt" != "no" ]
|
|
||||||
do
|
|
||||||
echo "Let's encrypt"
|
|
||||||
echo "Let's encrypt needs a public registered domain name with proper DNS records ( A records or CNAME records for subdomains pointing to your server)."
|
|
||||||
echo -n "Should we install let's encrypt certificate with $_domain? [yes|no] "
|
|
||||||
read _letsencrypt
|
|
||||||
done
|
|
||||||
|
|
||||||
# lets'encrypt
|
|
||||||
# https://certbot.eff.org/lets-encrypt/debianstretch-nginx
|
|
||||||
if [ "$_letsencrypt" = "yes" ]; then
|
|
||||||
apt-get install certbot
|
|
||||||
certbot certonly --cert-name "$_domain" --standalone –d "$_domain"
|
|
||||||
openssl dhparam –out /etc/nginx/dhparam.pem 2048
|
|
||||||
# TODO renewing
|
|
||||||
touch /var/spool/crontab/root
|
|
||||||
crontab -l > mycron
|
|
||||||
echo "0 3 * * * certbot renew --pre-hook 'systemctl stop nginx' --post-hook 'systemctl start nginx' --cert-name $_domain" >> mycron
|
|
||||||
crontab mycron
|
|
||||||
rm mycron
|
|
||||||
fi
|
|
||||||
|
|
||||||
if [ "$_drupal" = "yes" ]; then
|
|
||||||
if [ "$_letsencrypt" = "yes" ]; then
|
|
||||||
_conffile = "drupal-ssl.nginxconf"
|
|
||||||
else
|
|
||||||
_conffile = "drupal.nginxconf"
|
|
||||||
fi
|
|
||||||
else
|
|
||||||
if [ "$_letsencrypt" = "yes" ]; then
|
|
||||||
_conffile = "simple-phpfpm-ssl.nginxconf"
|
|
||||||
else
|
|
||||||
_conffile = "simple-phpfpm.nginxconf"
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
|
|
||||||
cp "$_cwd"/assets/"$_conffile" /etc/nginx/sites-available/"$_domain".conf
|
|
||||||
sed -ir "s/DOMAIN\.LTD/$_domain/g" /etc/nginx/sites-available/"$_domain".conf
|
|
||||||
|
|
||||||
mkdir -p /var/www/"$_domain"/public_html
|
|
||||||
mkdir /var/www/"$_domain"/logs
|
|
||||||
#set proper right to user will handle the app
|
|
||||||
chown -R root:admin /var/www/"$_domain"/
|
|
||||||
chmod -R g+w /var/www/"$_domain"/
|
|
||||||
chmod -R g+r /var/www/"$_domain"/
|
|
||||||
|
|
||||||
# create a shortcut to the site
|
|
||||||
# TODO ask for $user name if not existing
|
|
||||||
mkdir /home/"$user"/www/
|
|
||||||
chown "$user":admin /home/"$user"/www/
|
|
||||||
ln -s /var/www/"$_domain" /home/"$user"/www/"$_domain"
|
|
||||||
|
|
||||||
# activate the vhost
|
|
||||||
ln -s /etc/nginx/sites-available/"$_domain".conf /etc/nginx/sites-enabled/"$_domain".conf
|
|
||||||
|
|
||||||
# restart nginx
|
|
||||||
systemctl restart nginx
|
|
||||||
echo "\033[92;1mvhost $_domain configured\033[Om"
|
|
||||||
else
|
|
||||||
echo "Vhost installation aborted"
|
|
||||||
fi
|
|
||||||
|
|
||||||
|
|
||||||
# TODO supervising
|
# TODO supervising
|
||||||
# echo '\033[35m
|
# echo '\033[35m
|
||||||
|
99
bin/vhost.sh
Normal file
99
bin/vhost.sh
Normal file
@ -0,0 +1,99 @@
|
|||||||
|
|
||||||
|
echo '\033[35m
|
||||||
|
__ __
|
||||||
|
_ __/ /_ ____ _____/ /_
|
||||||
|
| | / / __ \/ __ \/ ___/ __/
|
||||||
|
| |/ / / / / /_/ (__ ) /_
|
||||||
|
|___/_/ /_/\____/____/\__/
|
||||||
|
\033[0m'
|
||||||
|
echo "\033[35;1mNginx VHOST install \033[0m"
|
||||||
|
while [ "$vh" != "y" ] && [ "$vh" != "n" ]
|
||||||
|
do
|
||||||
|
echo -n "Should we install a vhost? [y|n] "
|
||||||
|
read vh
|
||||||
|
# vh=${vh:-y}
|
||||||
|
done
|
||||||
|
if [ "$vh" = "y" ]; then
|
||||||
|
|
||||||
|
while [ "$_domain" = "" ]
|
||||||
|
do
|
||||||
|
read -p "enter a hostname ? " _domain
|
||||||
|
if [ "$_domain" != "" ]; then
|
||||||
|
read -p "is hostname $_domain correcte [y|n] " validated
|
||||||
|
if [ "$validated" = "y" ]; then
|
||||||
|
break
|
||||||
|
else
|
||||||
|
_domain=""
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
|
||||||
|
# ask for simple php conf or drupal conf
|
||||||
|
while [ "$_drupal" != "yes" ] && [ "$_drupal" != "no" ]
|
||||||
|
do
|
||||||
|
echo -n "Is your site is a drupal one? [yes|no] "
|
||||||
|
read _drupal
|
||||||
|
done
|
||||||
|
|
||||||
|
# ask for let's encrypt
|
||||||
|
while [ "$_letsencrypt" != "yes" ] && [ "$_letsencrypt" != "no" ]
|
||||||
|
do
|
||||||
|
echo "Let's encrypt"
|
||||||
|
echo "Let's encrypt needs a public registered domain name with proper DNS records ( A records or CNAME records for subdomains pointing to your server)."
|
||||||
|
echo -n "Should we install let's encrypt certificate with $_domain? [yes|no] "
|
||||||
|
read _letsencrypt
|
||||||
|
done
|
||||||
|
|
||||||
|
# lets'encrypt
|
||||||
|
# https://certbot.eff.org/lets-encrypt/debianstretch-nginx
|
||||||
|
if [ "$_letsencrypt" = "yes" ]; then
|
||||||
|
apt-get install certbot
|
||||||
|
certbot certonly --cert-name "$_domain" --standalone –d "$_domain"
|
||||||
|
openssl dhparam –out /etc/nginx/dhparam.pem 2048
|
||||||
|
# TODO renewing
|
||||||
|
touch /var/spool/crontab/root
|
||||||
|
crontab -l > mycron
|
||||||
|
echo "0 3 * * * certbot renew --pre-hook 'systemctl stop nginx' --post-hook 'systemctl start nginx' --cert-name $_domain" >> mycron
|
||||||
|
crontab mycron
|
||||||
|
rm mycron
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ "$_drupal" = "yes" ]; then
|
||||||
|
if [ "$_letsencrypt" = "yes" ]; then
|
||||||
|
_conffile = "drupal-ssl.nginxconf"
|
||||||
|
else
|
||||||
|
_conffile = "drupal.nginxconf"
|
||||||
|
fi
|
||||||
|
else
|
||||||
|
if [ "$_letsencrypt" = "yes" ]; then
|
||||||
|
_conffile = "simple-phpfpm-ssl.nginxconf"
|
||||||
|
else
|
||||||
|
_conffile = "simple-phpfpm.nginxconf"
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
|
cp "$_cwd"/assets/"$_conffile" /etc/nginx/sites-available/"$_domain".conf
|
||||||
|
sed -ir "s/DOMAIN\.LTD/$_domain/g" /etc/nginx/sites-available/"$_domain".conf
|
||||||
|
|
||||||
|
mkdir -p /var/www/"$_domain"/public_html
|
||||||
|
mkdir /var/www/"$_domain"/logs
|
||||||
|
#set proper right to user will handle the app
|
||||||
|
chown -R root:admin /var/www/"$_domain"/
|
||||||
|
chmod -R g+w /var/www/"$_domain"/
|
||||||
|
chmod -R g+r /var/www/"$_domain"/
|
||||||
|
|
||||||
|
# create a shortcut to the site
|
||||||
|
# TODO ask for $user name if not existing
|
||||||
|
mkdir /home/"$user"/www/
|
||||||
|
chown "$user":admin /home/"$user"/www/
|
||||||
|
ln -s /var/www/"$_domain" /home/"$user"/www/"$_domain"
|
||||||
|
|
||||||
|
# activate the vhost
|
||||||
|
ln -s /etc/nginx/sites-available/"$_domain".conf /etc/nginx/sites-enabled/"$_domain".conf
|
||||||
|
|
||||||
|
# restart nginx
|
||||||
|
systemctl restart nginx
|
||||||
|
echo "\033[92;1mvhost $_domain configured\033[Om"
|
||||||
|
else
|
||||||
|
echo "Vhost installation aborted"
|
||||||
|
fi
|
@ -72,6 +72,8 @@ else
|
|||||||
echo 'lemp server not installed'
|
echo 'lemp server not installed'
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
. bin/vhost.sh
|
||||||
|
|
||||||
. bin/dotfiles.sh
|
. bin/dotfiles.sh
|
||||||
. bin/autoupdate.sh
|
. bin/autoupdate.sh
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user