Oracle Cloud
Em maio de 2023 criei uma instância na Oracle Cloud para fazer deploy de aplicações python. Minha instância usa Oracle Linux 9, baseada em RHEL.
Tudo começou quando vi o vídeo Deploying a Flask app to a Virtual Machine - Learning Flask Series Pt. 23
Para fazer deploy das aplicações em python optei por utilizar o NGINX
Para instalar o NGINX instância, segue os procedimentos descritos em Installing NGINX Open Source. Abri as portas da VM conforme descrito em Chapter 2. Setting up and configuring NGINX
sudo su
firewall-cmd --permanent --add-port={80/tcp,443/tcp}
firewall-cmd --reload
Lendo os posts e blogs notei que o NGINX, quando instalado no RHEL (ou Oracle Linux), não vem, por padrão, com algumas configurações padrão que vem no Ubuntu (motivo pelo qual alguns sugerem o Ubuntu).
Dentre essas configurações está a ausência das pastas abaixo. Como elas não vem, por padrão, é necessário cria-las, conforme é mencionado nesse post StackOverflow: nginx missing sites-available directory
sudo mkdir /etc/nginx/sites-available
sudo mkdir /etc/nginx/sites-enabled
Of course, all the files will be inside sites-available, and you’d create a symlink for them inside sites-enabled for those you want enabled.
Uma vez criadas, é necessário indicar, nas configurações do NGIX, que é preciso que ele olhe o conteúdo das pastas.
# Edita as configurações
sudo nano /etc/nginx/nginx.conf
# E coloca essa linha nos includes
include /etc/nginx/sites-enabled/\*;
Tentei iniciar a aplicação…
sudo systemctl status nginx
sudo systemctl enable nginx
sudo systemctl start nginx
sudo systemctl stop nginx
sudo systemctl restart nginx
sudo nginx -s reload
Por algum momento não deu certo pois a porta 80 estava em uso. Comandos para avalir o que está em uso. Descobri o que era e fechei.
sudo fuser -k 443/tcp
sudo fuser -k 80/tcp
De acordo com o artigo 2.2. Configuring NGINX as a web server that provides different content for different domains, é indicado que se use o código abaixo para carreegar a página inicial.
server {
listen 80 default_server;
listen [::]:80 default_server;
server_name _;
root /usr/share/nginx/html;
}
Eu customize e inseri esse conteúdo no arquivo default:
sudo nano /etc/nginx/sites-available/default
E criei um link para
# Cria link
sudo ln -s /etc/nginx/sites-available/default /etc/nginx/sites-enabled
# Para remover link
sudo unlink /etc/nginx/sites-enabled/default
Edita esse arquivo, conforme
server {
listen 80;
listen [::]:80;
server_name localhost;
client_max_body_size 10M;
#charset koi8-r;
#access_log logs/host.access.log main;
location / {
# root html;
# index index.html;
proxy_pass http://127.0.0.1:5000;
proxy_redirect off;
proxy_set_header Host $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;
}
Após bater cabeça, vi que a Virtual Private Network, na infra do Oracle, podria estar bloqueando o tráfego… corrigi com auxílio desse artigo Opening up port 80 and 443 for Oracle Cloud servers
Referências
- Is is possible to run multiple apps in one VM instance?
- Como instalar e configurar Nginx on CentOS 7, comecei a seguir e parei, após criar arquivo html.
- How To Serve Flask Applications with uWSGI and Nginx on Ubuntu 18.04
Deixe um comentário