diff --git a/.gitignore b/.gitignore index 36e073a..b16ace6 100644 --- a/.gitignore +++ b/.gitignore @@ -1,3 +1,3 @@ centos_django.step .vscode -teste* \ No newline at end of file +test_.* \ No newline at end of file diff --git a/README.md b/README.md index 3c11fc4..338e0ad 100644 --- a/README.md +++ b/README.md @@ -1,2 +1,80 @@ -# django_centos_deploy +![image](./django-centos.png) +# Django to CentOS +[![The MIT License](https://img.shields.io/badge/license-MIT-orange.svg?style=flat-square)](https://git.lucasf.dev/publico/django-to-centos/-/blob/main/LICENSE) + + +Centos to Django is a bash script for deploy your django applications on CentOS servers. + +## How to use + +1. Clone this project into your server: + + ```shell + https://git.lucasf.dev/public/django-to-centos.git + ``` + +2. Fill in the variables from centos.conf file. + + ```bash + # ATENÇÃO, NÃO DEVE HAVER SEPARAÇÃO ENTRE O NOME DA VARIÁVEL E O VALOR DA VARIÁVEL APÓS O SINAL DE IGUALDADE + # ATTENTION, NO SPACES BETWEEN VAR NAME AND VAR CONTENT + + # Nome do usuário no sistema + # Sistem's username + USERNAME="centos" + + # Nome do App no repositório + # Application name in repository + APP="app" + + # Nome do ambiente virtual python + # Virtual environment name + VENV=".venv" + + # Nome de usuário do repositório ou grupo + # Git username or group + GIT_USER="username" + + # Endereço do projeto no repositório + # Git project url + GITURL="https://repo.com/$GIT_USER/$APP.git" + + # IP público ou domínio. Se deixar em branco o script vai capturar o endereço de IP com o comando hostname + # Public IP address or domain. If you leave it blank, the script'll catch the IP address with hostname command + PUB_IP="" + + # Nome da pasta que está no mesmo nível do arquivo wsgi.py + # Folder name that is at the same level as wsgi.py file + WSGI_FOLDER_NAME="appdirname" + + # Nome desejado para o serviço no Systemctl + # Systemctl desirable name + SERVICE="app.service" + + # Descrição do serviço no Systemctl + # Systemctl service description + DESCRIPTION="Django VPS uWSGI Emperor" + + # Adicionar o certificado digital na aplicação com Certbot. Escreva sim, se já possuir um domínio na internet + # Apply certbot ssl certificate, hit yes if you already have a domain + CERTBOT="no" + + # Adicionar renovação do certbot no crontab. Escreva sim, apenas se já possuir um domínio na internet + # Create a renew certbot cron job, hit yes if you already have a domain + CRON_CERTBOT="no" + + # Incrementar IP em ALLOWED_HOSTS no arquivo .env caso não tenha incrementado + # Increase ALLOWED_HOSTS IP on .env file + IP_INCRE="yes" + + # Mensagens em Português Brasil + # PT_BR messages + PTBR="no" + ``` + +3. Execute script: + + ```shell + sh run.sh + ``` diff --git a/centos.conf b/centos.conf index 09eb297..602685b 100755 --- a/centos.conf +++ b/centos.conf @@ -6,7 +6,7 @@ USERNAME="centos" # Nome do App no repositório -# App name on repo +# Application name in repository APP="app" # Nome do ambiente virtual python @@ -21,8 +21,8 @@ GIT_USER="username" # Git project url GITURL="https://repo.com/$GIT_USER/$APP.git" -# IP público ou domínio -# Public IP address or domain +# IP público ou domínio. Se deixar em branco o script vai capturar o endereço de IP com o comando hostname +# Public IP address or domain. If you leave it blank, the script'll catch the IP address with hostname command PUB_IP="" # Nome da pasta que está no mesmo nível do arquivo wsgi.py diff --git a/django-centos.png b/django-centos.png new file mode 100644 index 0000000..40162c6 Binary files /dev/null and b/django-centos.png differ diff --git a/run.sh b/run.sh index 3f07e58..0e4cb2f 100755 --- a/run.sh +++ b/run.sh @@ -18,7 +18,7 @@ ARQ_CONF="centos.conf" USERNAME="centos" # Nome do App no repositório -# App name on repo +# Application name in repository APP="appname" # Nome do ambiente virtual python @@ -33,8 +33,8 @@ GIT_USER="username" # Git project url GITURL="https://repo.com/$GIT_USER/$APP.git" -# IP público ou domínio -# Public IP address or domain +# IP público ou domínio. Se deixar em branco o script vai capturar o endereço de IP com o comando hostname +# Public IP address or domain. If you leave it blank, the script'll catch the IP address with hostname command PUB_IP="" # Nome da pasta que está no mesmo nível do arquivo wsgi.py @@ -130,7 +130,7 @@ fi if [[ -f "$SCRIPT_STEP_FILE" ]]; then . "$SCRIPT_STEP_FILE" fi -echo "step>$STEP" + # Verifica se deve exibir as mensagens em português do Brasil # Check if the language pt_br has been chosen if [[ ${PTBR,,} == "yes" ]] || [[ ${PTBR,,} == "sim" ]]; then @@ -166,10 +166,12 @@ fi # Obtém o IP # Get IP address -if [[ -n $(man hostname | awk '{RS="";FS="\n"} /-i,/ {print}') ]];then - PUB_IP=$(hostname -i | cut -d" " -f1) -else - PUB_IP=$(hostname -I | cut -d" " -f1) +if [[ ! -n $PUB_IP ]]; then + if [[ -n $(man hostname | awk '{RS="";FS="\n"} /-i,/ {print}') ]]; then + PUB_IP=$(hostname -i | cut -d" " -f1) + else + PUB_IP=$(hostname -I | cut -d" " -f1) + fi fi update_step_error() { @@ -292,6 +294,7 @@ install_packages() { yum -y install python3-devel && yum -y install gcc && yum -y install nginx && + yum -y install net-tools && yum -y install policycoreutils-python-utils.noarch && dnf update if [[ $? -ge 1 ]]; then @@ -325,7 +328,7 @@ execute_collec_mig_createsup() { if [[ -d /home/$USERNAME/$APP/staticfiles ]]; then mkdir -p /home/$USERNAME/$APP/staticfiles fi - /home/$USERNAME/$APP/$VENV/bin/python3 /manage.py collectstatic && + /home/$USERNAME/$APP/$VENV/bin/python3 /manage.py collectstatic --noinput && /home/$USERNAME/$APP/$VENV/bin/python3 /manage.py migrate && /home/$USERNAME/$APP/$VENV/bin/python3 /manage.py createsuperuser } @@ -502,6 +505,7 @@ fi # Start service run_service() { chmod -R 751 /home/$USERNAME + chmod -R 755 /home/$USERNAME/$APP chmod 664 /etc/systemd/system/$SERVICE && chown -R $USERNAME:$USERNAME /home/$USERNAME && systemctl daemon-reload && @@ -571,6 +575,7 @@ else echo "${commands[$x]}_$x" ${commands[$x]} $x done + echo "\033[32m${MSGS[done]}\033[0m" fi fi fi