如何在apache服务器上托管python Flask应用程序?

时间:2019-12-29 22:08:19

标签: python apache ubuntu flask web-hosting

我有一个flask应用程序,我想将其托管在ubuntu Amazon AWS实例上运行的Apache服务器上。我遵循了许多Deploying a Python app on a Linux/Unix production server之类的在线说明,但没有成功

我遇到类似 Invalid command 'PassengerAppRoot', perhaps misspelled or defined by a module not included in the server configuration

的错误

那么,有没有一个清楚的为什么要这样做,并会说明步骤。

1 个答案:

答案 0 :(得分:0)

安装python,pip和mod_wsgi;

apt install python3-dev python3-pip libapache2-mod-wsgi

重新启动apache2服务并验证是否已加载wsgi模块:sudo apache2ctl -M | grep -i wsgi

在您的项目中创建一个projectname.wsgi文件:

import sys
sys.path.insert(0, '/path/to/project')

from app import app as application
application.root_path = '/path/to/project'

在/ etc / apache2 / sites-available下为您的项目创建一个配置文件(projectname.conf-.conf扩展名是Apache的新版本):

<VirtualHost *:<PORT>>
   ServerName <DOMAIN.NAME>
   WSGIDaemonProcess <projectname> user=<user> group=www-data threads=2
   WSGIScriptAlias / /path/to/project/projectname.wsgi
   <Directory /path/to/project>
     WSGIProcessGroup <projectname>
     WSGIApplicationGroup %{GLOBAL}
     Order deny,allow
     Allow from all
   </Directory>
   Alias "/static/" "/path/to/project/static/"
   <Directory /path/to/project/static/>
     Order allow,deny
     Allow from all
   </Directory>
   ErrorLog /path/to/logs/error.log
   CustomLog /path/to/logs/access.log combined
</VirtualHost>

将配置文件链接到启用的文件夹:

cd ../sites-enabled&ln -s ../sites-available/projectname.conf projectname.conf。

重新加载apache2服务并检查网站是否在线。