Como configurar o Apache para rodar uma aplicação WSGI básica
Dica publicada em Linux / Introdução
Como configurar o Apache para rodar uma aplicação WSGI básica
Servindo páginas HTML com Python
Instale o httpd e suba o serviço:# yum -y install httpd
# systemctl enable httpd
# systemctl start httpd
Instale o módulo wsgi:
# yum -y install mod_wsgi
Crie um diretório de root do site:
# mkdir /htdocs/wsgi
Crie o documento do site e adicione um Python básico:
# vim /data/wsgi/hello.wsgi
def application(env, start_response):
start_response('200 OK', [('Content-Type','text/html')])
return [b"Hello Linux!!"]
Crie o Virtual Host:
# vim /etc/httpd/conf.d/wsgi.conf
<VirtualHost *:80>
ServerAdmin root@localhost
DocumentRoot "/data/wsgi"
ServerName wsgi.example.com
ServerAlias wsgi.example.com
ErrorLog "/var/log/httpd/wsgi.example.com-error_log"
CustomLog "/var/log/httpd/wsgi.example.com-access_log" combined
WSGIScriptAlias / "/htdocs/wsgi/hello.wsgi"
</VirtualHost>
<Directory "/data/wsgi">
AllowOverride None
Require all granted
</Directory>
ServerAdmin root@localhost
DocumentRoot "/data/wsgi"
ServerName wsgi.example.com
ServerAlias wsgi.example.com
ErrorLog "/var/log/httpd/wsgi.example.com-error_log"
CustomLog "/var/log/httpd/wsgi.example.com-access_log" combined
WSGIScriptAlias / "/htdocs/wsgi/hello.wsgi"
</VirtualHost>
<Directory "/data/wsgi">
AllowOverride None
Require all granted
</Directory>
Desative ou mude o modo do SELunix a fim de não ter problemas. Caso prefira deixar ativado, apenas mude o contexto a estrutura de diretórios do root do site para httpd_sys_content_t.
Para desativar o SELinux, adicione 'disabled' no arquivo de configuração e reboot o sistema:
# vim /etc/selinux/config
SELINUX=disabled
# reboot
Para mudar o modo do SELinux em tempo de execução, marque-o como permissive e verifique se a alteração foi bem sucedida:
setenforce 1
sestatus
sestatus
Se preferir mudar o contexto da estrutura root do site, use os dois comandos abaixo:
# semanage fcontext -a -t httpd_sys_content_t "/htdocs(/.*)?"
# restorecon -Rvvv /htdocs
Restart o servidor httpd:
# systemctl restart httpd
Habilite o serviço no firewalld:
# firewall-cmd --permanent --add-service=http
# firewall-cmd --reload
Adicione uma entrada no hosts.conf para sua máquina resolver o DNS do site para o IP do servidor. Como exemplo, se o IP do servidor for 10.0.0.17:
# echo "10.0.0.17 wsgi.example.com" >> /etc/hosts
Abra o navegador e entre no site:
http://wsgi.example.com