master no longer holds an installer
This commit is contained in:
305
install.sh
305
install.sh
@@ -1,305 +0,0 @@
|
|||||||
################################################################################s
|
|
||||||
# Dependencies
|
|
||||||
# Installs Dependencies automatically
|
|
||||||
################################################################################
|
|
||||||
|
|
||||||
# source vars
|
|
||||||
source ./vars
|
|
||||||
|
|
||||||
# check if root
|
|
||||||
if [[ $EUID -ne 0 ]]; then
|
|
||||||
echo -e "This script must be run as root"
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
cd /root/
|
|
||||||
|
|
||||||
tput setaf 2
|
|
||||||
echo -e "Installing dependencies"
|
|
||||||
tput setaf 9
|
|
||||||
# create necessary dirs
|
|
||||||
if [ ! -d $logdir ] ; then
|
|
||||||
mkdir $logdir
|
|
||||||
fi
|
|
||||||
|
|
||||||
if [ $install_epel_release=True ] ; then
|
|
||||||
yum -y install epel-release 1>> $yumlogloc 2>> $yumlogloc 3>> $yumlogloc
|
|
||||||
fi
|
|
||||||
|
|
||||||
# install dependencies
|
|
||||||
packages=(gcc wget nginx libsqlite3x-devel.x86_64 postgresql-server postgresql-devel postgresql-contrib bzip2-devel zlib-devel libffi-devel openssl-devel policycoreutils-python.x86_64)
|
|
||||||
for package in ${packages[@]};
|
|
||||||
do
|
|
||||||
echo -e "\tInstalling $package"
|
|
||||||
yum -y install $package 1>> $yumlogloc 2>> $yumlogloc 3>> $yumlogloc
|
|
||||||
if [ $? -ne 0 ] ; then
|
|
||||||
echo -e "yum failed to install $package. $yumlogmsg"
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
done
|
|
||||||
|
|
||||||
# firewall
|
|
||||||
ports=(80 443)
|
|
||||||
for port in ${ports[@]};
|
|
||||||
do
|
|
||||||
echo -e "firewall-cmd --zone=public --add-port=$port/tcp --permanent" > $firelogloc
|
|
||||||
firewall-cmd --zone=public --add-port=$port/tcp --permanent 1>> $firelogloc 2>> $firelogloc
|
|
||||||
if [ $? -ne 0 ] ; then
|
|
||||||
echo -e "\tfirewall failed to update port $port correctly (this may not be an issue). $firelogmsg"
|
|
||||||
fi
|
|
||||||
done
|
|
||||||
|
|
||||||
echo -e "firewall-cmd --reload" >> $firelogloc
|
|
||||||
firewall-cmd --reload 1>> $firelogloc 2>> $firelogloc
|
|
||||||
if [ $? -ne 0 ] ; then
|
|
||||||
echo -e "\tfirewall failed to reload, (this may not be an issue). $firelogmsg"
|
|
||||||
fi
|
|
||||||
|
|
||||||
echo -e "semanage permissive -a httpd_t" >> $firelogloc
|
|
||||||
semanage permissive -a httpd_t >> $firelogloc
|
|
||||||
if [ $? -ne 0 ] ; then
|
|
||||||
echo -e "semanage failed to set permissive. See $firelogmsg"
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
|
|
||||||
################################################################################
|
|
||||||
# Python
|
|
||||||
# Download and setup Python and modules
|
|
||||||
################################################################################
|
|
||||||
tput setaf 2
|
|
||||||
echo -e "Installing Python"
|
|
||||||
tput setaf 9
|
|
||||||
|
|
||||||
# fetch Python
|
|
||||||
if [ ! -d $pyinstalldir ] ; then # if we already installed python
|
|
||||||
wget $pylink 1> $pylogloc 2>> $pylogloc 3>> $pylogloc
|
|
||||||
if [ $? -ne 0 ] ; then
|
|
||||||
echo -e "Failed to fetch python, make sure wget is installed and $pylink is what you're after. $pylogmsg"
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
tar xf Python-3.7.0.tar.xz 1>> $pylogloc 2>> $pylogloc 3>> $pylogloc
|
|
||||||
if [ $? -ne 0 ] ; then
|
|
||||||
echo -e "Failed to unzip python. $pylogmsg"
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
cd Python-3.7.0
|
|
||||||
if [ $? -ne 0 ] ; then
|
|
||||||
echo -e "Missing python directory. $pylogmsg"
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
|
|
||||||
# install Python
|
|
||||||
echo -e "\tConfigure"
|
|
||||||
./configure --prefix $pyinstalldir 1>> $pylogloc 2>> $pylogloc 3>> $pylogloc
|
|
||||||
if [ $? -ne 0 ] ; then
|
|
||||||
echo -e "./configure failed. $pylogmsg"
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
echo -e "\tMake"
|
|
||||||
make 1>> $pylogloc 2>> $pylogloc 3>> $pylogloc
|
|
||||||
if [ $? -ne 0 ] ; then
|
|
||||||
echo -e "make failed. $pylogmsg"
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
echo -e "\tMake altinstall"
|
|
||||||
make altinstall 1>> $pylogloc 2>> $pylogloc 3>> $pylogloc
|
|
||||||
if [ $? -ne 0 ] ; then
|
|
||||||
echo -e "make altinstall failed. $pylogmsg"
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
# upgrade pip and install virtualenv
|
|
||||||
echo -e "\tUpgrading pip"
|
|
||||||
/usr/src/python37/bin/python3.7 -m pip install --upgrade pip 1>> $pylogloc 2>> $pylogloc 3>> $pylogloc
|
|
||||||
if [ $? -ne 0 ] ; then
|
|
||||||
echo -e "pip upgrade failed. $pylogmsg"
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
echo -e "\tInstalling virtualenv"
|
|
||||||
/usr/src/python37/bin/python3.7 -m pip install virtualenv 1>> $pylogloc 2>> $pylogloc 3>> $pylogloc
|
|
||||||
if [ $? -ne 0 ] ; then
|
|
||||||
echo -e "installing virtualenv failed. $pylogmsg"
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
cd /root/
|
|
||||||
rm Python-3.7.0.tar.xz 1>> $pylogloc 2>> $pylogloc
|
|
||||||
rm -rf Python-3.7.0 1>> $pylogloc 2>> $pylogloc
|
|
||||||
if [ $? -ne 0 ] ; then
|
|
||||||
echo -e "Failed to remove Python install files. $pylogmsg"
|
|
||||||
fi
|
|
||||||
|
|
||||||
################################################################################
|
|
||||||
# Django
|
|
||||||
# Download, setup and configure Django
|
|
||||||
################################################################################
|
|
||||||
tput setaf 2
|
|
||||||
echo -e "Starting Django project"
|
|
||||||
tput setaf 9
|
|
||||||
|
|
||||||
adduser $user 1> /dev/null 2> /dev/null 3> /dev/null
|
|
||||||
if [ ! -d "/home/$user" ] ; then
|
|
||||||
mkdir /home/$user
|
|
||||||
chown -R $user:$user /home/$user
|
|
||||||
fi
|
|
||||||
mkdir /home/$user/$projectname
|
|
||||||
if [ $? -ne 0 ] ; then
|
|
||||||
echo -e "Failed to create $projectname directory. $djamsg"
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
|
|
||||||
# virtual environment
|
|
||||||
echo -e "\tCreating venv"
|
|
||||||
cd /home/$user/$projectname
|
|
||||||
/usr/src/python37/bin/python3.7 -m virtualenv venv 1>> $djalogloc 2>> $djalogloc 3>> $djalogloc
|
|
||||||
if [ $? -ne 0 ] ; then
|
|
||||||
echo -e "Failed to create virtual environment. $djamsg"
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
source venv/bin/activate 1>> $djalogloc 2>> $djalogloc 3>> $djalogloc
|
|
||||||
if [ $? -ne 0 ] ; then
|
|
||||||
echo -e "Failed to source virtual environment. $djamsg"
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
|
|
||||||
# pip installs
|
|
||||||
pips=(django gunicorn psycopg2-binary)
|
|
||||||
for pip in ${pips[@]};
|
|
||||||
do
|
|
||||||
echo -e "\tInstalling $pip"
|
|
||||||
pip install $pip 1>> $djalogloc 2>> $djalogloc 3>> $djalogloc
|
|
||||||
if [ $? -ne 0 ] ; then
|
|
||||||
echo -e "Failed to install $pip. $djamsg"
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
done
|
|
||||||
|
|
||||||
if [ $usegit = False ] ; then
|
|
||||||
# start django project in the project directory
|
|
||||||
echo -e "\tStarting django project"
|
|
||||||
django-admin startproject config . 1>> $djalogloc 2>> $djalogloc 3>> $djalogloc
|
|
||||||
if [ $? -ne 0 ] ; then
|
|
||||||
echo -e "Failed to start project $projectname with django-admin. $djamsg"
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
|
|
||||||
# update allowed hosts
|
|
||||||
echo -e "echo -e sed -i 's/ALLOWED_HOSTS = []/ALLOWED_HOSTS = ['localhost', os.environ.get('HOST')'] config/settings.py" >> $djalogloc
|
|
||||||
# | FROM | TO |
|
|
||||||
sed -i "s/ALLOWED_HOSTS = \[\]/ALLOWED_HOSTS = \['localhost', os.environ.get('HOST')\]/" config/settings.py
|
|
||||||
if [ $? -ne 0 ] ; then
|
|
||||||
echo -e "Failed to change ALLOWED_HOSTS. $djamsg"
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
echo -e "echo -e STATIC_ROOT = os.path.join(BASE_DIR, 'static') >> config//settings.py" >> $djalogloc
|
|
||||||
echo -e "STATIC_ROOT = os.path.join(BASE_DIR, 'static')" >> config/settings.py
|
|
||||||
if [ $? -ne 0 ] ; then
|
|
||||||
echo -e "Failed to append STATIC_ROOT. $djamsg"
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
|
|
||||||
if [ $usegit = True ] ; then
|
|
||||||
echo -e "\tCloning django project"
|
|
||||||
ssh-agent bash -c 'ssh-add $gitkey 1>> $gitlogloc 2>> $gitlogloc 3>> $gitlogloc;
|
|
||||||
git init 1>> $gitlogloc 2>> $gitlogloc 3>> $gitlogloc;
|
|
||||||
git remote add origin $giturl 1>> $gitlogloc 2>> $gitlogloc 3>> $gitlogloc;
|
|
||||||
git pull origin master 1>> $gitlogloc 2>> $gitlogloc 3>> $gitlogloc;'
|
|
||||||
echo -e "\tInstalling pip requirements"
|
|
||||||
pip install -r requirements.txt 1>> $gitlogloc 2>> $gitlogloc 3>> $gitlogloc
|
|
||||||
fi
|
|
||||||
|
|
||||||
# collect static, migrate
|
|
||||||
echo -e "\tCollecting static"
|
|
||||||
python manage.py collectstatic 1>> $djalogloc 2>> $djalogloc 3>> $djalogloc
|
|
||||||
if [ $? -ne 0 ] ; then
|
|
||||||
echo -e "Failed to collect static files. $djamsg"
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
echo -e "\tMaking migrations"
|
|
||||||
python manage.py makemigrations 1>> $djalogloc 2>> $djalogloc 3>> $djalogloc
|
|
||||||
if [ $? -ne 0 ] ; then
|
|
||||||
echo -e "Failed to make migrations. $djamsg"
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
echo -e "\tMigrating"
|
|
||||||
python manage.py migrate 1>> $djalogloc 2>> $djalogloc 3>> $djalogloc
|
|
||||||
if [ $? -ne 0 ] ; then
|
|
||||||
echo -e "Failed to migrate. You do not survive the winter. $djamsg"
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
deactivate
|
|
||||||
if [ $? -ne 0 ] ; then
|
|
||||||
echo -e "Failed to deactivate virtual environment, (this may not be an issue). $djamsg"
|
|
||||||
fi
|
|
||||||
chown -R $user:$user .
|
|
||||||
if [ $? -ne 0 ] ; then
|
|
||||||
echo -e "Failed to change permissions of $projectname. $djamsg"
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
|
|
||||||
################################################################################
|
|
||||||
# Gunicorn
|
|
||||||
# configure gunicorn.conf file
|
|
||||||
################################################################################
|
|
||||||
tput setaf 2
|
|
||||||
echo -e "Setting up gunicorn"
|
|
||||||
tput setaf 9
|
|
||||||
echo -e "
|
|
||||||
[Unit]
|
|
||||||
Description=gunicorn daemon
|
|
||||||
After=network.target
|
|
||||||
|
|
||||||
[Service]
|
|
||||||
User=$user
|
|
||||||
Group=nginx
|
|
||||||
WorkingDirectory=/home/$user/$projectname
|
|
||||||
ExecStart=/home/$user/$projectname/venv/bin/gunicorn --workers 3 --bind unix:/home/$user/$projectname/$projectname.sock config.wsgi:application
|
|
||||||
Environment=HOST=$hostname
|
|
||||||
|
|
||||||
[Install]
|
|
||||||
WantedBy=multi-user.target" > /etc/systemd/system/gunicorn.service
|
|
||||||
echo -e "\tStarting gunicorn"
|
|
||||||
systemctl daemon-reload > $gunicornlogloc
|
|
||||||
systemctl start gunicorn >> $gunicornlogloc
|
|
||||||
systemctl status gunicorn >> $gunicornlogloc
|
|
||||||
echo -e "\tEnabling gunicorn at startup"
|
|
||||||
systemctl enable gunicorn 1>> $gunicornlogloc 2>> $gunicornlogloc
|
|
||||||
|
|
||||||
################################################################################
|
|
||||||
# Nginx
|
|
||||||
# configure nginx
|
|
||||||
################################################################################
|
|
||||||
tput setaf 2
|
|
||||||
echo -e "Configuring Nginx"
|
|
||||||
tput setaf 9
|
|
||||||
echo -e "
|
|
||||||
server {
|
|
||||||
listen 80;
|
|
||||||
server_name $hostname;
|
|
||||||
|
|
||||||
location = /favicon.ico { access_log off; log_not_found off; }
|
|
||||||
location /static/ {
|
|
||||||
root /home/$user/$projectname;
|
|
||||||
}
|
|
||||||
|
|
||||||
location / {
|
|
||||||
proxy_set_header Host \$http_host;
|
|
||||||
proxy_set_header X-Real-IP \$remote_addr;
|
|
||||||
proxy_set_header X-Forwarded-For \$proxy_add_x_forwarded_for;
|
|
||||||
proxy_set_header X-Forwarded-Proto \$scheme;
|
|
||||||
proxy_pass http://unix:/home/$user/$projectname/$projectname.sock;
|
|
||||||
}
|
|
||||||
}" > /etc/nginx/conf.d/$projectname.conf
|
|
||||||
# set the nginx user
|
|
||||||
if [ ! $user = "nginx" ] ; then
|
|
||||||
sed -i "s/user nginx/user $user nginx/" /etc/nginx/nginx.conf
|
|
||||||
fi
|
|
||||||
echo -e "\tStarting nginx"
|
|
||||||
systemctl restart nginx >> $nginxlogloc
|
|
||||||
systemctl status nginx >> $nginxlogloc
|
|
||||||
echo -e "\tEnabling nginx"
|
|
||||||
systemctl enable nginx 1>> $nginxlogloc 2>> $nginxlogloc
|
|
||||||
|
|
||||||
tput setaf 2
|
|
||||||
echo -e "Done! Navigate to $hostname to access the site. Logs can be found in $logdir"
|
|
||||||
tput setaf 9
|
|
||||||
exit 0
|
|
||||||
30
reset.sh
30
reset.sh
@@ -1,30 +0,0 @@
|
|||||||
################################################################################
|
|
||||||
# Performs a QUICK uninstall #
|
|
||||||
# - Does not uninstall dependencies #
|
|
||||||
# - Does not remove python #
|
|
||||||
################################################################################
|
|
||||||
|
|
||||||
# source vars
|
|
||||||
source ./vars
|
|
||||||
|
|
||||||
# remove nginx conf
|
|
||||||
tput setaf 2
|
|
||||||
echo "Disabling nginx"
|
|
||||||
tput setaf 9
|
|
||||||
systemctl stop nginx 1> /dev/null 2> /dev/null
|
|
||||||
systemctl disable nginx 1> /dev/null 2> /dev/null
|
|
||||||
rm -f /etc/nginx/conf.d/$projectname.conf
|
|
||||||
|
|
||||||
# remove gunicorn
|
|
||||||
tput setaf 2
|
|
||||||
echo "Uninstalling gunicorn"
|
|
||||||
tput setaf 9
|
|
||||||
systemctl disable gunicorn 1> /dev/null 2> /dev/null
|
|
||||||
systemctl stop gunicorn 1> /dev/null 2> /dev/null
|
|
||||||
rm -f /etc/systemd/system/gunicorn.service
|
|
||||||
|
|
||||||
# remove project
|
|
||||||
tput setaf 2
|
|
||||||
echo "Removing Django project"
|
|
||||||
tput setaf 9
|
|
||||||
rm -rf /home/$user/$projectname
|
|
||||||
48
uninstall.sh
48
uninstall.sh
@@ -1,48 +0,0 @@
|
|||||||
################################################################################
|
|
||||||
# Performs a FULL uninstall #
|
|
||||||
################################################################################
|
|
||||||
|
|
||||||
# source vars
|
|
||||||
source ./vars
|
|
||||||
|
|
||||||
# remove nginx conf
|
|
||||||
tput setaf 2
|
|
||||||
echo "Disabling nginx"
|
|
||||||
tput setaf 9
|
|
||||||
systemctl stop nginx 1> /dev/null 2> /dev/null
|
|
||||||
systemctl disable nginx 1> /dev/null 2> /dev/null
|
|
||||||
rm -f /etc/nginx/conf.d/$projectname.conf
|
|
||||||
|
|
||||||
# remove gunicorn
|
|
||||||
tput setaf 2
|
|
||||||
echo "Uninstalling gunicorn"
|
|
||||||
tput setaf 9
|
|
||||||
systemctl disable gunicorn 1> /dev/null 2> /dev/null
|
|
||||||
systemctl stop gunicorn 1> /dev/null 2> /dev/null
|
|
||||||
rm -f /etc/systemd/system/gunicorn.service
|
|
||||||
|
|
||||||
# remove project
|
|
||||||
tput setaf 2
|
|
||||||
echo "Removing Django project"
|
|
||||||
tput setaf 9
|
|
||||||
rm -rf /home/$user/$projectname
|
|
||||||
|
|
||||||
# remove python
|
|
||||||
tput setaf 2
|
|
||||||
echo "Uninstalling python"
|
|
||||||
tput setaf 9
|
|
||||||
rm -rf $pyinstalldir
|
|
||||||
|
|
||||||
# remove yum dependencies
|
|
||||||
tput setaf 2
|
|
||||||
echo "Uninstalling dependencies"
|
|
||||||
tput setaf 9
|
|
||||||
packages=(gcc wget nginx libsqlite3x-devel.x86_64 postgresql-server postgresql-devel postgresql-contrib bzip2-devel zlib-devel libffi-devel openssl-devel policycoreutils-python.x86_64)
|
|
||||||
for package in ${packages[@]};
|
|
||||||
do
|
|
||||||
echo -e "\tRemoving $package"
|
|
||||||
yum -y erase $package 1>> /dev/null 2>> /dev/null 3>> /dev/null
|
|
||||||
if [ $? -ne 0 ] ; then
|
|
||||||
echo -e "\tyum failed to remove $package."
|
|
||||||
fi
|
|
||||||
done
|
|
||||||
27
vars
27
vars
@@ -1,27 +0,0 @@
|
|||||||
# django project settings
|
|
||||||
export user=""
|
|
||||||
export projectname=""
|
|
||||||
export hostname=""
|
|
||||||
export usegit=False # if you have a django git project
|
|
||||||
export giturl="" # url for git project
|
|
||||||
export gitkey="" # IdentityFile
|
|
||||||
install_epel_release=False
|
|
||||||
|
|
||||||
# general install settings
|
|
||||||
export logdir="/var/log/djangosetup/"
|
|
||||||
export yumlogloc=$logdir"yum.log"
|
|
||||||
export yumlogmsg="See $yumlogloc for more info."
|
|
||||||
export firelogloc=$logdir"firewall.log"
|
|
||||||
export firelogmsg="See $firelogloc for more info."
|
|
||||||
export pylogloc=$logdir"python.log"
|
|
||||||
export pylogmsg="See $pylogloc for more info."
|
|
||||||
export djalogloc=$logdir"django.log"
|
|
||||||
export djamsg="See $djalogloc for more info."
|
|
||||||
export gunicornlogloc=$logdir"gunicorn.log"
|
|
||||||
export nginxlogloc=$logdir"nginx.log"
|
|
||||||
export gitlogloc=$logdir"git.log"
|
|
||||||
export gitlogmsg="See $gitlogloc for more info."
|
|
||||||
|
|
||||||
# python settings
|
|
||||||
export pylink="https://www.python.org/ftp/python/3.7.0/Python-3.7.0.tar.xz"
|
|
||||||
export pyinstalldir="/usr/src/python37"
|
|
||||||
Reference in New Issue
Block a user