Page 1 of 1

On vestacp, apache2, mod_wsgi, python web app (bottle framework)

Posted: Wed Feb 10, 2021 10:42 am
by annahernandez99
I am trying to deploy a bottle application using the vestacp panel. I keep getting a 500 error, and apparently this is due to incorrect server settings. I have three configuration files:

wsgi.sh (for this file I did not find configuration information, apparently it is not correctly configured, for django by default)
# Adding php wrapper
user="$1"
domain="$2"
ip="$3"
home_dir="$4"
docroot="$5"

echo "# Wsgi template
AddHandler wsgi-script .wsgi

RewriteEngine On

RewriteCond %{HTTP_HOST} ^www.$2\.ru\$ [NC]
RewriteRule ^(.*)\$ http://$2/\$1 [R=301,L]

RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)\$ /django.wsgi/\$1 [QSA,PT,L]
" > $docroot/.htaccess
chown $user:$user $docroot/.htaccess


echo "import os, sys
sys.path.insert(0, '$home_dir/$user/web/$domain/private/django/$domain/env/lib/python2.6/site-packages')
sys.path.insert(0, '$home_dir/$user/web/$domain/private/django/$domain/project/src/shared/')
sys.path.insert(0, '$home_dir/$user/web/$domain/private/django/$domain/project/src/')

os.environ['DJANGO_SETTINGS_MODULE'] = 'main.settings'
import django.core.handlers.wsgi
application = django.core.handlers.wsgi.WSGIHandler()" > $docroot/django.wsgi
chown $user:$user $docroot/django.wsgi

exit 0
wsgi.stpl (I tried to edit this file but was unsuccessful)
<VirtualHost %ip%:%web_ssl_port%>

ServerName %domain_idn%
%alias_string%
ServerAdmin %email%
DocumentRoot %sdocroot%
ScriptAlias /cgi-bin/ %home%/%user%/web/%domain%/cgi-bin/
Alias /vstats/ %home%/%user%/web/%domain%/stats/
Alias /error/ %home%/%user%/web/%domain%/document_errors/
SuexecUserGroup %user% %group%
CustomLog /var/log/%web_system%/domains/%domain%.bytes bytes
CustomLog /var/log/%web_system%/domains/%domain%.log combined
ErrorLog /var/log/%web_system%/domains/%domain%.error.log
<Directory %home%/%user%/web/%domain%/stats>
AllowOverride All
</Directory>
SSLEngine on
SSLVerifyClient none
SSLCertificateFile %ssl_crt%
SSLCertificateKeyFile %ssl_key%
%ssl_ca_str%SSLCertificateChainFile %ssl_ca%

<IfModule mod_ruid2.c>
RMode config
RUidGid %user% %group%
RGroups www-data
</IfModule>
<IfModule itk.c>
AssignUserID %user% %group%
</IfModule>
<IfModule mod_wsgi.c>
WSGIDaemonProcess apx-s$domain% user=%user% group=%user% processes=1 threads=5 display-name=%{GROUP} python-path=%home%/%user%/web/%domain%$
WSGIProcessGroup apx-idea
WSGIApplicationGroup %{GLOBAL}
</IfModule>

<Directory %sdocroot%>
AllowOverride FileInfo
Options ExecCGI Indexes
MultiviewsMatch Handlers
Options +FollowSymLinks
Order allow,deny
Allow from all
</Directory>

IncludeOptional %home%/%user%/conf/web/s%web_system%.%domain%.conf*

</VirtualHost>
wsgi.tpl
<VirtualHost %ip%:%web_port%>

ServerName %domain_idn%
%alias_string%
ServerAdmin %email%
DocumentRoot %docroot%
ScriptAlias /cgi-bin/ %home%/%user%/web/%domain%/cgi-bin/
Alias /vstats/ %home%/%user%/web/%domain%/stats/
Alias /error/ %home%/%user%/web/%domain%/document_errors/
SuexecUserGroup %user% %group%
CustomLog /var/log/%web_system%/domains/%domain%.bytes bytes
CustomLog /var/log/%web_system%/domains/%domain%.log combined
ErrorLog /var/log/%web_system%/domains/%domain%.error.log
<Directory %home%/%user%/web/%domain%/stats>
AllowOverride All
</Directory>

<IfModule mod_ruid2.c>
RMode config
RUidGid %user% %group%
RGroups www-data
</IfModule>
<IfModule itk.c>
AssignUserID %user% %group%
</IfModule>
<Directory %docroot%>
AllowOverride FileInfo
Options ExecCGI Indexes
MultiviewsMatch Handlers
Options +FollowSymLinks
Order allow,deny
Allow from all
</Directory>

Include %home%/%user%/conf/web/%web_system%.%domain%.conf*

</VirtualHost>
the application launch file (wsgi.py) looks like this:

#!/usr/bin/env python
# -*- coding: utf-8 -*-

import bottle
import os
import sys

sys.path.append(os.path.dirname(os.path.abspath(__file__)))
os.chdir(os.path.dirname(os.path.abspath(__file__)))

"""С этого файла запускается программа"""
application = bottle.default_app()
Ожидается что настройка конфигурации приведет к сообщению о том что нет определенной директории "/", а не к ошибки 500.

Error: 404 Not Found
Sorry, the requested URL 'https://some.url/' caused an error:

Not found: '/'