inclusão da sugestão de criação do env
This commit is contained in:
parent
f25039bded
commit
9c29d591ec
3 changed files with 121 additions and 38 deletions
4
.gitignore
vendored
4
.gitignore
vendored
|
|
@ -1 +1,3 @@
|
||||||
centos_django.step
|
centos_django.step
|
||||||
|
.vscode
|
||||||
|
teste*
|
||||||
12
centos.conf
12
centos.conf
|
|
@ -3,23 +3,23 @@
|
||||||
|
|
||||||
# Nome do usuário no sistema
|
# Nome do usuário no sistema
|
||||||
# Sistem's username
|
# Sistem's username
|
||||||
USERNAME="lucas"
|
USERNAME="centos"
|
||||||
|
|
||||||
# Nome do App no repositório
|
# Nome do App no repositório
|
||||||
# App name on repo
|
# App name on repo
|
||||||
APP="3m"
|
APP="app"
|
||||||
|
|
||||||
# Nome do ambiente virtual python
|
# Nome do ambiente virtual python
|
||||||
# Virtual environment name
|
# Virtual environment name
|
||||||
VENV=".venv"
|
VENV=".venv"
|
||||||
|
|
||||||
# Nome de usuário do repositório
|
# Nome de usuário do repositório ou grupo
|
||||||
# Git username
|
# Git username or group
|
||||||
GIT_USER="lucas"
|
GIT_USER="username"
|
||||||
|
|
||||||
# Endereço do projeto no repositório
|
# Endereço do projeto no repositório
|
||||||
# Git project url
|
# Git project url
|
||||||
GITURL="https://git.lucasf.dev/$GIT_USER/$APP.git"
|
GITURL="https://repo.com/$GIT_USER/$APP.git"
|
||||||
|
|
||||||
# IP público ou domínio
|
# IP público ou domínio
|
||||||
# Public IP address or domain
|
# Public IP address or domain
|
||||||
|
|
|
||||||
143
run.sh
143
run.sh
|
|
@ -25,13 +25,13 @@ APP="appname"
|
||||||
# Virtual environment name
|
# Virtual environment name
|
||||||
VENV=".venv"
|
VENV=".venv"
|
||||||
|
|
||||||
# Nome de usuário do repositório
|
# Nome de usuário do repositório ou grupo
|
||||||
# Git username
|
# Git username or group
|
||||||
GIT_USER="username"
|
GIT_USER="username"
|
||||||
|
|
||||||
# Endereço do projeto no repositório
|
# Endereço do projeto no repositório
|
||||||
# Git project url
|
# Git project url
|
||||||
GITURL="https://repositório.com/$GIT_USER/$APP.git"
|
GITURL="https://repo.com/$GIT_USER/$APP.git"
|
||||||
|
|
||||||
# IP público ou domínio
|
# IP público ou domínio
|
||||||
# Public IP address or domain
|
# Public IP address or domain
|
||||||
|
|
@ -76,10 +76,14 @@ MSG_PT[entry]="Digite sim ou s para continuar (sim/não): "
|
||||||
MSG_PT[error_root]="Você precisa executar o script como root"
|
MSG_PT[error_root]="Você precisa executar o script como root"
|
||||||
MSG_PT[error_requirements]="Não encontrei o arquivo requirements.txt"
|
MSG_PT[error_requirements]="Não encontrei o arquivo requirements.txt"
|
||||||
MSG_PT[error_env]="Não encontrei o arquivo .env"
|
MSG_PT[error_env]="Não encontrei o arquivo .env"
|
||||||
|
MSG_PT[sugest_env]="Posso criar esse arquivo pra você?
|
||||||
|
Eu criarei com as variáveis [SECRET_KEY, ALLOWED_HOSTS, DEBUG].
|
||||||
|
Sim! vou criar uma SECRET_KEY como Django
|
||||||
|
apenas para dar sequência e testar o servidor, claro que você pode alterar depois."
|
||||||
MSG_PT[error_allwhost]="Não encontrei a variável ALLOWED_HOSTS, você lembrou de extrair do settings.py?"
|
MSG_PT[error_allwhost]="Não encontrei a variável ALLOWED_HOSTS, você lembrou de extrair do settings.py?"
|
||||||
MSG_PT[error_debug]="Não encontrei a variável DEBUG, você lembrou de extrair do settings.py?"
|
MSG_PT[error_debug]="Não encontrei a variável DEBUG, você lembrou de extrair do settings.py?"
|
||||||
MSG_PT[repo]="Por favor verificar o repositório ou suas credenciais"
|
MSG_PT[repo]="Por favor verificar o repositório ou suas credenciais"
|
||||||
MSG_PT[done]="FEITO"
|
MSG_PT[done]="TUDO PRONTO! Só curtir!"
|
||||||
MSG_PT[fail]="FALHOU"
|
MSG_PT[fail]="FALHOU"
|
||||||
|
|
||||||
declare -A MSG_EN
|
declare -A MSG_EN
|
||||||
|
|
@ -89,16 +93,32 @@ MSG_EN[entry]="Shall we proceed? (yes/no): "
|
||||||
MSG_EN[error_root]="You must be root"
|
MSG_EN[error_root]="You must be root"
|
||||||
MSG_EN[error_req]="Can't find requirements.txt file"
|
MSG_EN[error_req]="Can't find requirements.txt file"
|
||||||
MSG_EN[error_env]="Can't find .env file"
|
MSG_EN[error_env]="Can't find .env file"
|
||||||
|
MSG_EN[sugest_env]="Can i create this file for you?
|
||||||
|
I'll create basic variables like [SECRET_KEY, ALLOWED_HOSTS, DEBUG].
|
||||||
|
Yep! i'll create a SECRET_KEY like Django
|
||||||
|
just for continue and test server, although you can change it after."
|
||||||
MSG_EN[error_allwhost]="Can't find ALLOWED_HOSTS variable did you extract it from settings.py?"
|
MSG_EN[error_allwhost]="Can't find ALLOWED_HOSTS variable did you extract it from settings.py?"
|
||||||
MSG_EN[error_debug]="Can't find DEBUG variable did you extract it from settings.py?"
|
MSG_EN[error_debug]="Can't find DEBUG variable did you extract it from settings.py?"
|
||||||
MSG_EN[repo]="Please check your repo or credentials"
|
MSG_EN[repo]="Please check your repo or credentials"
|
||||||
MSG_EN[done]="DONE"
|
MSG_EN[done]="ALL DONE! Enjoy it!"
|
||||||
MSG_EN[fail]="FAIL"
|
MSG_EN[fail]="FAIL"
|
||||||
|
|
||||||
STEP=0
|
STEP=0
|
||||||
SCRIPT_PATH=$(dirname $0)
|
SCRIPT_PATH=$(dirname $0)
|
||||||
SCRIPT_STEP_FILE="$SCRIPT_PATH/centos_django.step"
|
SCRIPT_STEP_FILE="$SCRIPT_PATH/centos_django.step"
|
||||||
|
|
||||||
|
CHARS="abcdefghijklmnopqrstuvwxyz0123456789!@#$%^&*(-_=+)"
|
||||||
|
for ((i=0;i<${#CHARS};i++)); do ARRAY[$i]="${CHARS:i:1}"; done
|
||||||
|
|
||||||
|
# Cria uma sequência de 50 caracteres aleatórios
|
||||||
|
# Create 50 random chars
|
||||||
|
key_gen() {
|
||||||
|
for ((c=1; c<=50; c++)); do
|
||||||
|
KEY="$KEY${ARRAY[$((RANDOM % 50))]}"
|
||||||
|
done
|
||||||
|
echo $KEY
|
||||||
|
}
|
||||||
|
|
||||||
# Lê o arquivo de configuração e atualiza os valores das variáveis
|
# Lê o arquivo de configuração e atualiza os valores das variáveis
|
||||||
# Read config file and set all variables
|
# Read config file and set all variables
|
||||||
if [[ -f "$SCRIPT_PATH/$ARQ_CONF" ]]; then
|
if [[ -f "$SCRIPT_PATH/$ARQ_CONF" ]]; then
|
||||||
|
|
@ -126,16 +146,22 @@ fi
|
||||||
# Verifica se o usuário ativo é o root
|
# Verifica se o usuário ativo é o root
|
||||||
# Verify if is a root user
|
# Verify if is a root user
|
||||||
if [[ "$EUID" -ne 0 ]];then
|
if [[ "$EUID" -ne 0 ]];then
|
||||||
HAS_ERROS="yes"
|
|
||||||
ERRORS+=("${MSGS[error_root]}")
|
ERRORS+=("${MSGS[error_root]}")
|
||||||
|
echo -e "\033[31m${MSGS[error_root]}\033[0m"
|
||||||
|
exit 1
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# Verifica a existência do usuário no sistema
|
# Verifica a existência do usuário no sistema
|
||||||
# Check if user exists
|
# Check if user exists
|
||||||
CNU=$(grep -c $USERNAME /etc/passwd)
|
CNU=$(grep -c $USERNAME /etc/passwd)
|
||||||
if [[ $CNU -lt 1 ]]; then
|
if [[ $CNU -lt 1 ]]; then
|
||||||
echo "precisa criar o usuário"
|
useradd --create-home $USERNAME
|
||||||
#useradd --create-home $USERNAME
|
fi
|
||||||
|
|
||||||
|
# Sanitiza a variável SERVICE
|
||||||
|
# Sanitize SERVICE var
|
||||||
|
if [[ ! $SERVICE =~ ".service" ]]; then
|
||||||
|
SERVICE+=".service"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# Obtém o IP
|
# Obtém o IP
|
||||||
|
|
@ -184,28 +210,44 @@ clone_project() {
|
||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
|
|
||||||
# Verifica a existência dos arquivos requirements.txt e .env
|
# Verifica a existência do arquivo requirements.txt
|
||||||
# Check for existence of requirements.txt and .env files
|
# Check for existence of requirements.txt file
|
||||||
validate_files() {
|
validate_requirements() {
|
||||||
if [[ ! -f "/home/$USERNAME/$APP/requirements.txt" ]]; then
|
if [[ ! -f "/home/$USERNAME/$APP/requirements.txt" ]]; then
|
||||||
HAS_ERROS="yes"
|
echo -e "\033[31m${MSGS[errors]}" &&
|
||||||
ERRORS+=("${MSGS[error_req]}")
|
echo -e "\033[0m - \033[37m${MSGS[error_req]}\033[0m" &&
|
||||||
fi
|
|
||||||
|
|
||||||
if [[ ! -f "/home/$USERNAME/$APP/.env" ]]; then
|
|
||||||
HAS_ERROS="yes"
|
|
||||||
ERRORS+=("${MSGS[error_env]}")
|
|
||||||
fi
|
|
||||||
|
|
||||||
if [[ ${#ERRORS[@]} -ge 1 ]]; then
|
|
||||||
echo -e "\033[31m${MSGS[errors]}"
|
|
||||||
for error in "${ERRORS[@]}"; do
|
|
||||||
echo -e "\033[0m - \033[37m$error\033[0m"
|
|
||||||
done
|
|
||||||
update_step_error "$x"
|
update_step_error "$x"
|
||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
|
|
||||||
|
# Verifica a existência do arquivo .env
|
||||||
|
# Check for existence of .env file
|
||||||
|
validate_env() {
|
||||||
|
if [[ ! -f "/home/$USERNAME/$APP/.env" ]]; then
|
||||||
|
echo -e "\033[31m${MSGS[errors]}"
|
||||||
|
echo -e "\033[0m - \033[37m${MSGS[error_env]}\033[0m" &&
|
||||||
|
echo -e "\n${MSGS[sugest_env]}\n" &&
|
||||||
|
read -p "${MSGS[entry]}" resp_env &&
|
||||||
|
if [[ -n resp_env ]]; then
|
||||||
|
if [[ ${resp_env,,} == "sim" ]] || [[ ${resp_env,,} == "s" ]] || [[ ${resp_env,,} == "yes" ]] || [[ ${resp_env,,} == "y" ]]; then
|
||||||
|
make_env_file
|
||||||
|
fi
|
||||||
|
else
|
||||||
|
update_step_error "$x"
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
# Cria um arquivo .env
|
||||||
|
# Create a .env file
|
||||||
|
make_env_file() {
|
||||||
|
ENV="SECRET_KEY='$(key_gen)'\n
|
||||||
|
ALLOWED_HOSTS=localhost, 127.0.0.1\n
|
||||||
|
DEBUG=False
|
||||||
|
"
|
||||||
|
$(echo -e $ENV | sed -e 's/^[ \t]*//' > /home/$USERNAME/$APP/.env)
|
||||||
|
}
|
||||||
|
|
||||||
# Incrementar IP em ALLOWED_HOSTS no arquivo .env caso não tenha incrementado
|
# Incrementar IP em ALLOWED_HOSTS no arquivo .env caso não tenha incrementado
|
||||||
# Increase ALLOWED_HOSTS IP on .env file if it doesn't exist
|
# Increase ALLOWED_HOSTS IP on .env file if it doesn't exist
|
||||||
increment_ip() {
|
increment_ip() {
|
||||||
|
|
@ -260,7 +302,6 @@ install_packages() {
|
||||||
# Criar o ambiente Virtual
|
# Criar o ambiente Virtual
|
||||||
# Create venv
|
# Create venv
|
||||||
create_venv() {
|
create_venv() {
|
||||||
# python3 -m venv /home/$USERNAME/$APP/$VENV && . /home/$USERNAME/$APP/$VENV/bin/activate
|
|
||||||
python3 -m venv /home/$USERNAME/$APP/$VENV
|
python3 -m venv /home/$USERNAME/$APP/$VENV
|
||||||
if [[ $? -ge 1 ]]; then
|
if [[ $? -ge 1 ]]; then
|
||||||
update_step_error "$x"
|
update_step_error "$x"
|
||||||
|
|
@ -317,6 +358,44 @@ enable_ports() {
|
||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
|
|
||||||
|
# Corrigir a configuração inicial do nginx
|
||||||
|
# Manage default nginx config file
|
||||||
|
manage_default_nginx_file() {
|
||||||
|
mv /etc/nginx/nginx.conf /etc/nginx/nginx.conf~ &&
|
||||||
|
cat > /etc/nginx/nginx.conf <<EOF
|
||||||
|
user nginx;
|
||||||
|
worker_processes auto;
|
||||||
|
error_log /var/log/nginx/error.log;
|
||||||
|
pid /run/nginx.pid;
|
||||||
|
|
||||||
|
|
||||||
|
include /usr/share/nginx/modules/*.conf;
|
||||||
|
|
||||||
|
events {
|
||||||
|
worker_connections 1024;
|
||||||
|
}
|
||||||
|
|
||||||
|
http {
|
||||||
|
log_format main '$remote_addr - $remote_user [$time_local] "$request" '
|
||||||
|
'$status $body_bytes_sent "$http_referer" '
|
||||||
|
'"$http_user_agent" "$http_x_forwarded_for"';
|
||||||
|
|
||||||
|
access_log /var/log/nginx/access.log main;
|
||||||
|
|
||||||
|
sendfile on;
|
||||||
|
tcp_nopush on;
|
||||||
|
tcp_nodelay on;
|
||||||
|
keepalive_timeout 65;
|
||||||
|
types_hash_max_size 2048;
|
||||||
|
|
||||||
|
include /etc/nginx/mime.types;
|
||||||
|
default_type application/octet-stream;
|
||||||
|
|
||||||
|
include /etc/nginx/conf.d/*.conf;
|
||||||
|
}
|
||||||
|
EOF
|
||||||
|
}
|
||||||
|
|
||||||
# Criar o arquivo de configurações do NGINX
|
# Criar o arquivo de configurações do NGINX
|
||||||
# Create nginx config file
|
# Create nginx config file
|
||||||
create_nginx_file() {
|
create_nginx_file() {
|
||||||
|
|
@ -423,16 +502,17 @@ fi
|
||||||
# Start service
|
# Start service
|
||||||
run_service() {
|
run_service() {
|
||||||
chmod -R 751 /home/$USERNAME
|
chmod -R 751 /home/$USERNAME
|
||||||
chmod 664 /etc/systemd/system/$SERVICE.service &&
|
chmod 664 /etc/systemd/system/$SERVICE &&
|
||||||
chown -R $USERNAME:$USERNAME /home/$USERNAME &&
|
chown -R $USERNAME:$USERNAME /home/$USERNAME &&
|
||||||
systemctl daemon-reload &&
|
systemctl daemon-reload &&
|
||||||
systemctl enable nginx &&
|
systemctl enable nginx &&
|
||||||
systemctl start nginx &&
|
systemctl start nginx &&
|
||||||
systemctl enable $SERVICE.service &&
|
systemctl enable $SERVICE &&
|
||||||
systemctl start $SERVICE.service &&
|
systemctl start $SERVICE &&
|
||||||
systemctl restart nginx
|
systemctl restart nginx
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#TODO: Verificar a nova instalação do certbot
|
||||||
# Instalar o Certbot
|
# Instalar o Certbot
|
||||||
# Install Certbot
|
# Install Certbot
|
||||||
certbot() {
|
certbot() {
|
||||||
|
|
@ -456,7 +536,8 @@ crontab_certbot() {
|
||||||
|
|
||||||
declare -a commands=(
|
declare -a commands=(
|
||||||
"clone_project"
|
"clone_project"
|
||||||
"validate_files"
|
"validate_requirements"
|
||||||
|
"validate_env"
|
||||||
"increment_ip"
|
"increment_ip"
|
||||||
"update_debug"
|
"update_debug"
|
||||||
"install_packages"
|
"install_packages"
|
||||||
|
|
@ -464,6 +545,7 @@ declare -a commands=(
|
||||||
"install_dependencies"
|
"install_dependencies"
|
||||||
"install_firewall"
|
"install_firewall"
|
||||||
"enable_ports"
|
"enable_ports"
|
||||||
|
"manage_default_nginx_file"
|
||||||
"create_nginx_file"
|
"create_nginx_file"
|
||||||
"create_uwsgi_ini_file"
|
"create_uwsgi_ini_file"
|
||||||
"criar_emperor_uwsgi"
|
"criar_emperor_uwsgi"
|
||||||
|
|
@ -472,7 +554,6 @@ declare -a commands=(
|
||||||
"run_service"
|
"run_service"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
REPORT=()
|
REPORT=()
|
||||||
|
|
||||||
if [[ ${#ERRORS[@]} -ge 1 ]]; then
|
if [[ ${#ERRORS[@]} -ge 1 ]]; then
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue