diff --git a/deploy.sh b/deploy.sh index aca5069..60266b0 100644 --- a/deploy.sh +++ b/deploy.sh @@ -3,6 +3,14 @@ PYTHON_INTERPRETER = "/usr/bin/python3" +printf "\033[0;32m > Installation de MySQL \033[0m\n" +apt-get -y install python3-mysqldb mysql-client mysql-server +printf "\033[0;32m > Installation de Apache \033[0m\n" +apt-get -y install apache2 libapache2-mod-wsgi-py3 +a2enmod ssl +a2enmod wsgi + + printf "\033[0;32m > Création du virtualenv \033[0m\n" virtualenv env_site -p "$PYTHON_INTERPRETER" source env_site/bin/activate @@ -10,7 +18,6 @@ source env_site/bin/activate printf "\033[0;32m > Installation des dépendances \033[0m\n" pip install -r requirements.txt -printf "\033[0;32m > Génération des settings locaux. \033[0m\n" printf "\033[0;32m > Génération de la secret_key \033[0m\n" django_secret_key=$(python -c "import random; print(''.join([random.SystemRandom().choice('abcdefghijklmnopqrstuvwxyz0123456789%=+') for i in range(50)]))") @@ -19,10 +26,18 @@ cp site_tps/settings_local.example.py site_tps/settings_local.py sed -i 's/SUPER_SECRET_KEY/'"$django_secret_key"'/g' site_tps/settings_local.py printf "\033[0;32m > Configuration de MySQL \033[0m\n" -read -p "Hôte > " db_host -read -p "Nom de la base de données > " db_name -read -p "Utilisateur MySQL > " db_user -read -p -s "Mot de passe > " db_pass +sql_name="festart" +sql_login="festart" +sql_host="localhost" +sql_password=$(python -c "import random; print(''.join([random.SystemRandom().choice('abcdefghijklmnopqrstuvwxyz0123456789%=+') for i in range(10)]))") + +mysql_command="CREATE DATABASE $sql_name collate='utf8_general_ci'; +CREATE USER '$sql_login'@'localhost' IDENTIFIED BY '$sql_password'; +GRANT ALL PRIVILEGES ON $sql_name.* TO '$sql_login'@'localhost'; +FLUSH PRIVILEGES;" + +mysql -u root --execute="$mysql_command" + sed -i 's/db_engine/django.db.backends.mysql/g' site_tps/settings_local.py sed -i 's/db_name/'"$db_name"'/g' site_tps/settings_local.py @@ -37,11 +52,26 @@ sed -i 's/db_host/'"$db_host"'/g' site_tps/settings_local.py printf "\033[0;32m > Domaine\033[0m\n" read -p "Domaine autorisé > " url_server -sed -i 's/URL_SERVER/'"$url_server"'/g' site_tps/settings_local.py +sed -i 's,URL_SERVER,'"$url_server"',g' site_tps/settings_local.py printf "\033[0;32m > settings_local.py créé \033[0m\n" + +printf "\033[0;32m > Export du wsgi.py de production \033[0m\n" +cp wsgi_prod.py site_tps/wsgi.py +current_path=$(pwd) +sed -i 's,INSTALL_PATH,'"$current_path"',g' site_tps/wsgi.py + +printf "\033[0;32m > Configuration de Apache \033[0m\n" +cp site_tps.conf /etc/apache2/sites-available +sed -i 's,URL_SERVER,'"$url_server"',g' /etc/apache2/sites-available/site_tps.conf +sed -i 's,INSTALL_PATH,'"$current_path"',g' /etc/apache2/sites-available/site_tps.conf +a2ensite re2o +service apache2 reload + printf "\033[0;32m > Application des migrations \033[0m\n" python manage.py migrate +printf "\033[0;32m > Collecte des statiques \033[0m\n" +python manage.py collectstatic printf "\033[0;32m > Création du groupe admin \033[0m\n" python manage.py create_admin printf "\033[0;32m > Création d'un super utilisateur\033[0m\n" diff --git a/site_tps.conf b/site_tps.conf new file mode 100644 index 0000000..5d03c7b --- /dev/null +++ b/site_tps.conf @@ -0,0 +1,17 @@ + + ServerName URL_SERVER + + LogLevel info + ErrorLog ${APACHE_LOG_DIR}/site_tps-error.log + CustomLog ${APACHE_LOG_DIR}/site_tps-access.log combined + + + Order allow,deny + Allow from all + + Alias /static INSTALL_PATH/static + + WSGIScriptAlias / INSTALL_PATH/site_tps/wsgi.py + WSGIProcessGroup site_tps + WSGIDaemonProcess site_tps processes=2 threads=16 maximum-requests=1000 display-name=site_tps + diff --git a/site_tps/settings_local.example.py b/site_tps/settings_local.example.py index bf92542..53a845a 100644 --- a/site_tps/settings_local.example.py +++ b/site_tps/settings_local.example.py @@ -8,7 +8,7 @@ SECRET_KEY = 'SUPER_SECRET_KEY' DB_PASSWORD = 'db_pass' # SECURITY WARNING: don't run with debug turned on in production! -DEBUG = False +DEBUG = True # ADMINS = [('My Beloved Administrator', 'admin_mail')] diff --git a/wsgi_prod.py b/wsgi_prod.py new file mode 100644 index 0000000..b1396f8 --- /dev/null +++ b/wsgi_prod.py @@ -0,0 +1,17 @@ +import os +import sys + + +# Activation de l'environnement virtuel +activate_env=os.path.join('INSTALL_PATH/env_site', 'bin/activate_this.py') +exec(compile(open(activate_env, "rb").read(), activate_env, 'exec'), {'__file__':activate_env}) + +# Ajout du répertoire du site au PATH +sys.path.append('INSTALL_PATH') +sys.path.append('INSTALL_PATH/site_tps') + +# Les trucs par défaut de Django +from django.core.wsgi import get_wsgi_application + +os.environ.setdefault("DJANGO_SETTINGS_MODULE", "site_tps.settings") +application = get_wsgi_application()