From 4e89aa2035d46f38e09c1494bff946abf4a7db29 Mon Sep 17 00:00:00 2001 From: ducoterra Date: Tue, 16 Apr 2019 17:05:49 -0400 Subject: [PATCH] test install --- install.sh | 460 +++++++++++++++++++++++++++++------------------------ update.sh | 0 2 files changed, 256 insertions(+), 204 deletions(-) create mode 100644 update.sh diff --git a/install.sh b/install.sh index 07b112d..b400d6b 100755 --- a/install.sh +++ b/install.sh @@ -36,7 +36,7 @@ if [ ! -d $logdir ] ; then fi; # install dependencies -packages=(gcc wget nginx ufw make sqlite3 bzip2 openssl libffi-dev libssl-dev libsqlite3-dev zlib1g-dev libbz2-dev libpq-dev); +packages=(gcc wget nginx ufw make bzip2 openssl libffi-dev libssl-dev libsqlite3-dev zlib1g-dev libbz2-dev libpq-dev); echo -e "\tRunning apt update"; apt update 1> $aptlogloc 2>> $aptlogloc 3>> $aptlogloc; for package in ${packages[@]}; @@ -63,6 +63,56 @@ done echo -e "\tEnabling ufw" ufw --force enable 1>> $firelogloc 2>> $firelogloc +############################################################################### +# Sqlite3 +# Download and setup Sqlite3 and modules +################################################################################ +tput setaf 2 +echo -e "Install Sqlite3" +tput setaf 9 + +# fetch Sqlite +wget https://sqlite.org/2019/sqlite-autoconf-3280000.tar.gz sqlite.tar.gz 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 + +tar xf sqlite.tar.xz 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 + + ################################################################################ # Python # Download and setup Python and modules @@ -71,237 +121,239 @@ 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 +wget $pylink python.tar.gz 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.tar.xz 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" -/usr/src/python37/bin/python3.7 -m pip install --upgrade pip 1>> $pylogloc 2>> $pylogloc 3>> $pylogloc +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" -/usr/src/python37/bin/python3.7 -m pip install virtualenv 1>> $pylogloc 2>> $pylogloc 3>> $pylogloc +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 /root/ -rm Python-3.7.0.tar.xz 1>> $pylogloc 2>> $pylogloc -rm -rf Python-3.7.0 1>> $pylogloc 2>> $pylogloc +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 -################################################################################ -# Django -# Download, setup and configure Django -################################################################################ -tput setaf 2 -echo -e "Starting Django project" -tput setaf 9 +# ################################################################################ +# # 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 +# 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 +# # 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 +# # 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 +# 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 +# # 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" - git init 1>> $gitlogloc 2>> $gitlogloc 3>> $gitlogloc; - git remote add origin $giturl 1>> $gitlogloc 2>> $gitlogloc 3>> $gitlogloc; - ssh-agent bash -c 'ssh-add $gitkey 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 +# if [ $usegit = True ] ; then +# echo -e "\tCloning django project" +# git init 1>> $gitlogloc 2>> $gitlogloc 3>> $gitlogloc; +# git remote add origin $giturl 1>> $gitlogloc 2>> $gitlogloc 3>> $gitlogloc; +# ssh-agent bash -c 'ssh-add $gitkey 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 +# # 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 +# ################################################################################ +# # 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 +# [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 +# [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; +# ################################################################################ +# # 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 = /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 +# 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 \ No newline at end of file +# tput setaf 2 +# echo -e "Done! Navigate to $hostname to access the site. Logs can be found in $logdir" +# tput setaf 9 +# exit 0 \ No newline at end of file diff --git a/update.sh b/update.sh new file mode 100644 index 0000000..e69de29