231 lines
6.3 KiB
Bash
Executable File
231 lines
6.3 KiB
Bash
Executable File
#!/bin/bash
|
|
|
|
################################################################################s
|
|
# Dependencies
|
|
# Installs Dependencies automatically
|
|
################################################################################
|
|
|
|
# check if root
|
|
if [ $EUID -ne 0 ] ; then
|
|
echo -e "This script must be run as root"
|
|
exit 1
|
|
fi
|
|
|
|
# source vars
|
|
source vars
|
|
|
|
echo -e "Installing dependencies"
|
|
# create necessary dirs
|
|
if [ ! -d $logdir ] ; then
|
|
mkdir $logdir
|
|
fi;
|
|
|
|
# install dependencies
|
|
echo -e "\tRunning apt update";
|
|
apt update 1> $aptlogloc 2>> $aptlogloc 3>> $aptlogloc;
|
|
for package in ${packages[@]};
|
|
do
|
|
echo -e "\tInstalling $package"
|
|
apt install -y $package 1>> $aptlogloc 2>> $aptlogloc 3>> $aptlogloc
|
|
if [ $? -ne 0 ] ; then
|
|
echo -e "apt failed to install $package. $aptlogmsg"
|
|
exit 1
|
|
fi
|
|
done
|
|
|
|
###############################################################################
|
|
# Sqlite3
|
|
# Download and setup Sqlite3 and modules
|
|
################################################################################
|
|
echo -e "Installing Sqlite3"
|
|
|
|
# fetch Sqlite
|
|
wget -O sqlite.tar.gz $sqlink 1> $pylogloc 2>> $pylogloc 3>> $pylogloc
|
|
if [ $? -ne 0 ] ; then
|
|
echo -e "Failed to fetch sqlite, make sure wget is installed and $pylink is what you're after. $pylogmsg"
|
|
exit 1
|
|
fi
|
|
|
|
mkdir sqlite
|
|
tar xf sqlite.tar.gz -C sqlite --strip-components=1 1>> $pylogloc 2>> $pylogloc 3>> $pylogloc
|
|
if [ $? -ne 0 ] ; then
|
|
echo -e "Failed to unzip sqlite. $pylogmsg"
|
|
exit 1
|
|
fi
|
|
|
|
cd sqlite
|
|
if [ $? -ne 0 ] ; then
|
|
echo -e "Something went wrong while unzipping. $pylogmsg"
|
|
exit 1
|
|
fi
|
|
|
|
# install Sqlite3
|
|
echo -e "\tConfigure"
|
|
./configure 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 install"
|
|
make install 1>> $pylogloc 2>> $pylogloc 3>> $pylogloc
|
|
if [ $? -ne 0 ] ; then
|
|
echo -e "make install failed. $pylogmsg"
|
|
exit 1
|
|
fi
|
|
|
|
cd ..
|
|
rm sqlite.tar.xz 1>> $pylogloc 2>> $pylogloc
|
|
rm -rf sqlite 1>> $pylogloc 2>> $pylogloc
|
|
if [ $? -ne 0 ] ; then
|
|
echo -e "Failed to remove Sqlite install files. $pylogmsg"
|
|
fi
|
|
|
|
################################################################################
|
|
# Python
|
|
# Download and setup Python and modules
|
|
################################################################################
|
|
echo -e "Installing Python"
|
|
|
|
wget -O python.tar.gz $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
|
|
|
|
mkdir python
|
|
tar xf python.tar.gz -C python --strip-components=1 1>> $pylogloc 2>> $pylogloc 3>> $pylogloc
|
|
if [ $? -ne 0 ] ; then
|
|
echo -e "Failed to unzip python. $pylogmsg"
|
|
exit 1
|
|
fi
|
|
|
|
cd python
|
|
if [ $? -ne 0 ] ; then
|
|
echo -e "Something went wrong while unzipping. $pylogmsg"
|
|
exit 1
|
|
fi
|
|
|
|
# install Python
|
|
echo -e "\tConfigure"
|
|
./configure 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 install"
|
|
make install 1>> $pylogloc 2>> $pylogloc 3>> $pylogloc
|
|
if [ $? -ne 0 ] ; then
|
|
echo -e "make install failed. $pylogmsg"
|
|
exit 1
|
|
fi
|
|
|
|
# upgrade pip and install virtualenv
|
|
echo -e "\tUpgrading pip"
|
|
python3 -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"
|
|
python3 -m pip install virtualenv 1>> $pylogloc 2>> $pylogloc 3>> $pylogloc
|
|
if [ $? -ne 0 ] ; then
|
|
echo -e "installing virtualenv failed. $pylogmsg"
|
|
exit 1
|
|
fi
|
|
|
|
cd ..
|
|
rm python.tar.xz 1>> $pylogloc 2>> $pylogloc
|
|
rm -rf python 1>> $pylogloc 2>> $pylogloc
|
|
if [ $? -ne 0 ] ; then
|
|
echo -e "Failed to remove Python install files. $pylogmsg"
|
|
fi
|
|
|
|
# create the sites directory
|
|
echo -e "\tCreating project directory"
|
|
mkdir /sites/
|
|
|
|
|
|
# ################################################################################
|
|
# # 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=www-data
|
|
# 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 |