add color, eliminate extraneous debug msgs
This commit is contained in:
226
install.sh
226
install.sh
@@ -30,195 +30,287 @@ nginxlogloc=$logdir"nginx.log"
|
||||
################################################################################
|
||||
# Dependencies
|
||||
# Installs Dependencies automatically
|
||||
#TODO: 1. add success outputs to script
|
||||
################################################################################
|
||||
|
||||
# check if root
|
||||
if [[ $EUID -ne 0 ]]; then
|
||||
echo "This script must be run as root"
|
||||
echo -e "This script must be run as root"
|
||||
exit 1
|
||||
fi
|
||||
cd /root/
|
||||
|
||||
echo "Installing dependencies..."
|
||||
tput setaf 2
|
||||
echo -e "Installing dependencies"
|
||||
tput setaf 0
|
||||
# create necessary dirs
|
||||
if [ ! -d $logdir ] ; then
|
||||
mkdir $logdir
|
||||
fi
|
||||
if [ $install_epel_release = True ] ; then
|
||||
yum -y install epel-release
|
||||
yum -y install epel-release 1>> $yumlogloc 2>> $yumlogloc 3>> $pylogloc
|
||||
fi
|
||||
|
||||
# install dependencies
|
||||
yum -y -q install 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 >> $yumlogloc
|
||||
echo -e "\tInstalling gcc"
|
||||
yum -y install gcc 1>> $yumlogloc 2>> $yumlogloc 3>> $yumlogloc
|
||||
if [ $? -ne 0 ] ; then
|
||||
echo "yum failed to install a dependency. $yumlogmsg"
|
||||
echo -e "yum failed to install gcc. $yumlogmsg"
|
||||
exit 1
|
||||
fi
|
||||
echo -e "\tInstalling wget"
|
||||
yum -y install wget 1>> $yumlogloc 2>> $yumlogloc 3>> $yumlogloc
|
||||
if [ $? -ne 0 ] ; then
|
||||
echo -e "yum failed to install a wget. $yumlogmsg"
|
||||
exit 1
|
||||
fi
|
||||
echo -e "\tInstalling nginx"
|
||||
yum -y install nginx 1>> $yumlogloc 2>> $yumlogloc 3>> $yumlogloc
|
||||
if [ $? -ne 0 ] ; then
|
||||
echo -e "yum failed to install nginx. $yumlogmsg"
|
||||
exit 1
|
||||
fi
|
||||
echo -e "\tInstalling libsqlite3x-devel.x86_64"
|
||||
yum -y install libsqlite3x-devel.x86_64 1>> $yumlogloc 2>> $yumlogloc 3>> $yumlogloc
|
||||
if [ $? -ne 0 ] ; then
|
||||
echo -e "yum failed to install libsqlite3x-devel.x86_64 . $yumlogmsg"
|
||||
exit 1
|
||||
fi
|
||||
echo -e "\tInstalling postgresql-server"
|
||||
yum -y install postgresql-server 1>> $yumlogloc 2>> $yumlogloc 3>> $yumlogloc
|
||||
if [ $? -ne 0 ] ; then
|
||||
echo -e "yum failed to install postgresql-server. $yumlogmsg"
|
||||
exit 1
|
||||
fi
|
||||
echo -e "\tInstalling postgresql-devel"
|
||||
yum -y install postgresql-devel 1>> $yumlogloc 2>> $yumlogloc 3>> $yumlogloc
|
||||
if [ $? -ne 0 ] ; then
|
||||
echo -e "yum failed to install postgresql-devel. $yumlogmsg"
|
||||
exit 1
|
||||
fi
|
||||
echo -e "\tInstalling postgresql-contrib"
|
||||
yum -y install postgresql-contrib 1>> $yumlogloc 2>> $yumlogloc 3>> $yumlogloc
|
||||
if [ $? -ne 0 ] ; then
|
||||
echo -e "yum failed to install postgresql-contrib. $yumlogmsg"
|
||||
exit 1
|
||||
fi
|
||||
echo -e "\tInstalling bzip2-devel"
|
||||
yum -y install bzip2-devel 1>> $yumlogloc 2>> $yumlogloc 3>> $yumlogloc
|
||||
if [ $? -ne 0 ] ; then
|
||||
echo -e "yum failed to install bzip2-devel. $yumlogmsg"
|
||||
exit 1
|
||||
fi
|
||||
echo -e "\tInstalling zlib-devel"
|
||||
yum -y install zlib-devel 1>> $yumlogloc 2>> $yumlogloc 3>> $yumlogloc
|
||||
if [ $? -ne 0 ] ; then
|
||||
echo -e "yum failed to install zlib-devel. $yumlogmsg"
|
||||
exit 1
|
||||
fi
|
||||
echo -e "\tInstalling ibffi-devel"
|
||||
yum -y install libffi-devel 1>> $yumlogloc 2>> $yumlogloc 3>> $yumlogloc
|
||||
if [ $? -ne 0 ] ; then
|
||||
echo -e "yum failed to install libffi-devel. $yumlogmsg"
|
||||
exit 1
|
||||
fi
|
||||
echo -e "\tInstalling openssl-devel"
|
||||
yum -y install openssl-devel 1>> $yumlogloc 2>> $yumlogloc 3>> $yumlogloc
|
||||
if [ $? -ne 0 ] ; then
|
||||
echo -e "yum failed to install openssl-devel. $yumlogmsg"
|
||||
exit 1
|
||||
fi
|
||||
echo -e "\tInstalling policycoreutils-python.x86_64"
|
||||
yum -y install policycoreutils-python.x86_64 1>> $yumlogloc 2>> $yumlogloc 3>> $yumlogloc
|
||||
if [ $? -ne 0 ] ; then
|
||||
echo -e "yum failed to install policycoreutils-python.x86_64. $yumlogmsg"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# set firewall
|
||||
echo "firewall-cmd --zone=public --add-port=80/tcp --permanent" > $firelogloc
|
||||
echo -e "firewall-cmd --zone=public --add-port=80/tcp --permanent" > $firelogloc
|
||||
firewall-cmd --zone=public --add-port=80/tcp --permanent >> $firelogloc
|
||||
if [ $? -ne 0 ] ; then
|
||||
echo "firewall failed to update port 80 correctly (this may not be an issue). $firelogmsg"
|
||||
echo -e "firewall failed to update port 80 correctly (this may not be an issue). $firelogmsg"
|
||||
fi
|
||||
|
||||
echo "firewall-cmd --zone=public --add-port=443/tcp --permanent" >> $firelogloc
|
||||
echo -e "firewall-cmd --zone=public --add-port=443/tcp --permanent" >> $firelogloc
|
||||
firewall-cmd --zone=public --add-port=443/tcp --permanent >> $firelogloc
|
||||
if [ $? -ne 0 ] ; then
|
||||
echo "firewall failed to update port 443 correctly, (this may not be an issue). $firelogmsg"
|
||||
echo -e "firewall failed to update port 443 correctly, (this may not be an issue). $firelogmsg"
|
||||
fi
|
||||
|
||||
echo "firewall-cmd --reload" >> $firelogloc
|
||||
echo -e "firewall-cmd --reload" >> $firelogloc
|
||||
firewall-cmd --reload >> $firelogloc
|
||||
if [ $? -ne 0 ] ; then
|
||||
echo "firewall failed to reload, (this may not be an issue). $firelogmsg"
|
||||
echo -e "firewall failed to reload, (this may not be an issue). $firelogmsg"
|
||||
fi
|
||||
|
||||
echo "semanage permissive -a httpd_t" >> $firelogloc
|
||||
echo -e "semanage permissive -a httpd_t" >> $firelogloc
|
||||
semanage permissive -a httpd_t >> $firelogloc
|
||||
if [ $? -ne 0 ] ; then
|
||||
echo "semanage failed to set permissive. See $firelogmsg"
|
||||
echo -e "semanage failed to set permissive. See $firelogmsg"
|
||||
exit 1
|
||||
fi
|
||||
echo "Done."
|
||||
|
||||
################################################################################
|
||||
# Python
|
||||
# Download and setup Python and modules
|
||||
# TODO: 1.
|
||||
################################################################################
|
||||
echo "Installing python..."
|
||||
wget -q $pylink > $pylogloc
|
||||
tput setaf 2
|
||||
echo -e "Installing Python"
|
||||
tput setaf 0
|
||||
wget $pylink 1> $pylogloc 2>> $pylogloc
|
||||
if [ $? -ne 0 ] ; then
|
||||
echo "Failed to fetch python, make sure wget is installed and $pylink is what you're after. $pylogmsg"
|
||||
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 >> $pylogloc
|
||||
if [ $? -ne 0 ] ; then
|
||||
echo "Failed to unzip python. $pylogmsg"
|
||||
echo -e "Failed to unzip python. $pylogmsg"
|
||||
exit 1
|
||||
fi
|
||||
cd Python-3.7.0
|
||||
if [ $? -ne 0 ] ; then
|
||||
echo "Missing python directory. $pylogmsg"
|
||||
echo -e "Missing python directory. $pylogmsg"
|
||||
exit 1
|
||||
fi
|
||||
./configure --prefix /usr/src/python37 >> $pylogloc
|
||||
echo -e "\tConfigure"
|
||||
./configure --prefix /usr/src/python37 1>> $pylogloc 2>> $pylogloc
|
||||
if [ $? -ne 0 ] ; then
|
||||
echo "./configure failed. $pylogmsg"
|
||||
echo -e "./configure failed. $pylogmsg"
|
||||
exit 1
|
||||
fi
|
||||
make --quiet >> $pylogloc
|
||||
echo -e "\tMake"
|
||||
make 1>> $pylogloc 2>> $pylogloc
|
||||
if [ $? -ne 0 ] ; then
|
||||
echo "make failed. $pylogmsg"
|
||||
echo -e "make failed. $pylogmsg"
|
||||
exit 1
|
||||
fi
|
||||
make --quiet altinstall >> $pylogloc
|
||||
echo -e "\tMake altinstall"
|
||||
make altinstall 1>> $pylogloc 2>> $pylogloc
|
||||
if [ $? -ne 0 ] ; then
|
||||
echo "make altinstall failed. $pylogmsg"
|
||||
echo -e "make altinstall failed. $pylogmsg"
|
||||
exit 1
|
||||
fi
|
||||
/usr/src/python37/bin/python3.7 -m pip install --upgrade pip >> $pylogloc
|
||||
echo -e "\tUpgrading pip"
|
||||
/usr/src/python37/bin/python3.7 -m pip install --upgrade pip 1>> $pylogloc 2>> $pylogloc
|
||||
if [ $? -ne 0 ] ; then
|
||||
echo "pip upgrade failed. $pylogmsg"
|
||||
echo -e "pip upgrade failed. $pylogmsg"
|
||||
exit 1
|
||||
fi
|
||||
/usr/src/python37/bin/python3.7 -m pip install virtualenv >> $pylogloc
|
||||
echo -e "\tInstalling virtualenv"
|
||||
/usr/src/python37/bin/python3.7 -m pip install virtualenv 1>> $pylogloc 2>> $pylogloc
|
||||
if [ $? -ne 0 ] ; then
|
||||
echo "installing virtualenv failed. $pylogmsg"
|
||||
echo -e "installing virtualenv failed. $pylogmsg"
|
||||
exit 1
|
||||
fi
|
||||
cd /root/
|
||||
rm Python-3.7.0.tar.xz >> $pylogloc
|
||||
if [ $? -ne 0 ] ; then
|
||||
echo "Failed to remove Python tar file. $pylogmsg"
|
||||
echo -e "Failed to remove Python tar file. $pylogmsg"
|
||||
fi
|
||||
echo "Done."
|
||||
|
||||
################################################################################
|
||||
# Django
|
||||
# Download, setup and configure Django
|
||||
# TODO: 1.
|
||||
################################################################################
|
||||
echo "Starting Django project..."
|
||||
tput setaf 2
|
||||
echo -e "Starting Django project"
|
||||
tput setaf 0
|
||||
if [ ! -d "/home/$user" ] ; then
|
||||
mkdir /home/$user
|
||||
chown -R $user:$user /home/$user
|
||||
fi
|
||||
mkdir /home/$user/$projectname
|
||||
if [ $? -ne 0 ] ; then
|
||||
echo "Failed to create $projectname directory. $djamsg"
|
||||
echo -e "Failed to create $projectname directory. $djamsg"
|
||||
exit 1
|
||||
fi
|
||||
echo -e "\tCreating venv"
|
||||
cd /home/$user/
|
||||
/usr/src/python37/bin/python3.7 -m virtualenv $projectname/venv >> $djaloglo
|
||||
/usr/src/python37/bin/python3.7 -m virtualenv $projectname/venv 1>> $djalogloc 2>> $djalogloc
|
||||
if [ $? -ne 0 ] ; then
|
||||
echo "Failed to create virtual environment. $djamsg"
|
||||
echo -e "Failed to create virtual environment. $djamsg"
|
||||
exit 1
|
||||
fi
|
||||
source $projectname/venv/bin/activate >> $djalogloc
|
||||
if [ $? -ne 0 ] ; then
|
||||
echo "Failed to source virtual environment. $djamsg"
|
||||
echo -e "Failed to source virtual environment. $djamsg"
|
||||
exit 1
|
||||
fi
|
||||
pip install django gunicorn psycopg2-binary >> $djalogloc
|
||||
echo -e "\tInstalling django"
|
||||
pip install django >> $djalogloc
|
||||
if [ $? -ne 0 ] ; then
|
||||
echo "Failed to install pip dependencies. $djamsg"
|
||||
echo -e "Failed to install pip dependencies. $djamsg"
|
||||
exit 1
|
||||
fi
|
||||
echo -e "\tInstalling gunicorn"
|
||||
pip install gunicorn >> $djalogloc
|
||||
if [ $? -ne 0 ] ; then
|
||||
echo -e "Failed to install pip dependencies. $djamsg"
|
||||
exit 1
|
||||
fi
|
||||
echo -e "\tInstalling psycopg2-binary"
|
||||
pip install psycopg2-binary >> $djalogloc
|
||||
if [ $? -ne 0 ] ; then
|
||||
echo -e "Failed to install pip dependencies. $djamsg"
|
||||
exit 1
|
||||
fi
|
||||
echo -e "\tStarting django project"
|
||||
cd $projectname
|
||||
django-admin startproject $projectname >> $djalogloc
|
||||
if [ $? -ne 0 ] ; then
|
||||
echo "Failed to start project $projectname with django-admin. $djamsg"
|
||||
echo -e "Failed to start project $projectname with django-admin. $djamsg"
|
||||
exit 1
|
||||
fi
|
||||
cd /home/$user/
|
||||
echo "echo sed -i 's/ALLOWED_HOSTS = []/ALLOWED_HOSTS = [\"$hostname\"]/' $projectname/$projectname/$projectname/settings.py" >> $djamsg
|
||||
echo -e "echo -e sed -i 's/ALLOWED_HOSTS = []/ALLOWED_HOSTS = [\"$hostname\"]/' $projectname/$projectname/$projectname/settings.py" >> $djalogloc
|
||||
sed -i "s/ALLOWED_HOSTS = \[\]/ALLOWED_HOSTS = \[\"$hostname\"\]/" $projectname/$projectname/$projectname/settings.py
|
||||
if [ $? -ne 0 ] ; then
|
||||
echo "Failed to change ALLOWED_HOSTS. $djamsg"
|
||||
echo -e "Failed to change ALLOWED_HOSTS. $djamsg"
|
||||
exit 1
|
||||
fi
|
||||
echo "echo STATIC_ROOT = os.path.join(BASE_DIR, 'static') >> $projectname/$projectname/$projectname/settings.py"
|
||||
echo "STATIC_ROOT = os.path.join(BASE_DIR, 'static')" >> $projectname/$projectname/$projectname/settings.py
|
||||
echo -e "echo -e STATIC_ROOT = os.path.join(BASE_DIR, 'static') >> $projectname/$projectname/$projectname/settings.py" >> $djalogloc
|
||||
echo -e "STATIC_ROOT = os.path.join(BASE_DIR, 'static')" >> $projectname/$projectname/$projectname/settings.py
|
||||
if [ $? -ne 0 ] ; then
|
||||
echo "Failed to append STATIC_ROOT. $djamsg"
|
||||
echo -e "Failed to append STATIC_ROOT. $djamsg"
|
||||
exit 1
|
||||
fi
|
||||
python $projectname/$projectname/manage.py collectstatic
|
||||
echo -e "\tCollecting static"
|
||||
python $projectname/$projectname/manage.py collectstatic >> $djalogloc
|
||||
if [ $? -ne 0 ] ; then
|
||||
echo "Failed to collect static files. $djamsg"
|
||||
echo -e "Failed to collect static files. $djamsg"
|
||||
exit 1
|
||||
fi
|
||||
python $projectname/$projectname/manage.py makemigrations
|
||||
echo -e "\tMaking migrations"
|
||||
python $projectname/$projectname/manage.py makemigrations >> $djalogloc
|
||||
if [ $? -ne 0 ] ; then
|
||||
echo "Failed to make migrations. $djamsg"
|
||||
echo -e "Failed to make migrations. $djamsg"
|
||||
exit 1
|
||||
fi
|
||||
python $projectname/$projectname/manage.py migrate
|
||||
echo -e "\tMigrating"
|
||||
python $projectname/$projectname/manage.py migrate >> $djalogloc
|
||||
if [ $? -ne 0 ] ; then
|
||||
echo "Failed to migrate. You do not survive the winter. $djamsg"
|
||||
echo -e "Failed to migrate. You do not survive the winter. $djamsg"
|
||||
exit 1
|
||||
fi
|
||||
deactivate
|
||||
if [ $? -ne 0 ] ; then
|
||||
echo "Failed to deactivate virtual environment, (this may not be an issue). $djamsg"
|
||||
echo -e "Failed to deactivate virtual environment, (this may not be an issue). $djamsg"
|
||||
fi
|
||||
chown -R $user:$user $projectname
|
||||
if [ $? -ne 0 ] ; then
|
||||
echo "Failed to change permissions of $projectname. $djamsg"
|
||||
echo -e "Failed to change permissions of $projectname. $djamsg"
|
||||
exit 1
|
||||
fi
|
||||
cd /root/
|
||||
echo "Done."
|
||||
|
||||
################################################################################
|
||||
# Gunicorn
|
||||
# configure gunicorn.conf file
|
||||
################################################################################
|
||||
echo "Setting up gunicorn..."
|
||||
echo "
|
||||
tput setaf 2
|
||||
echo -e "Setting up gunicorn"
|
||||
tput setaf 0
|
||||
echo -e "
|
||||
[Unit]
|
||||
Description=gunicorn daemon
|
||||
After=network.target
|
||||
@@ -231,16 +323,20 @@ ExecStart=/home/$user/$projectname/venv/bin/gunicorn --workers 3 --bind unix:/ho
|
||||
|
||||
[Install]
|
||||
WantedBy=multi-user.target" > /etc/systemd/system/gunicorn.service
|
||||
echo -e "\tStarting gunicorn"
|
||||
systemctl start gunicorn > $gunicornlogloc
|
||||
systemctl status gunicorn >> $gunicornlogloc
|
||||
echo "Done."
|
||||
echo -e "\tEnabling gunicorn at startup"
|
||||
systemctl enable gunicorn 1>> $gunicornlogloc 2>> $gunicornlogloc
|
||||
|
||||
################################################################################
|
||||
# Nginx
|
||||
# configure nginx
|
||||
################################################################################
|
||||
echo "Configuring Nginx..."
|
||||
echo "
|
||||
tput setaf 2
|
||||
echo -e "Configuring Nginx"
|
||||
tput setaf 0
|
||||
echo -e "
|
||||
server {
|
||||
listen 80;
|
||||
server_name $hostname;
|
||||
@@ -262,7 +358,13 @@ server {
|
||||
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
|
||||
|
||||
echo "Done. Logs can be found in $logdir"
|
||||
tput setaf 2
|
||||
echo -e "Done! Navigate to $hostname to access the site. Logs can be found in $logdir"
|
||||
tput setaf 0
|
||||
exit 0
|
||||
Reference in New Issue
Block a user