我开始在 Ubuntu 16.04(虚拟机)上的 venv 中运行带有 0.12 瓶的 python3.5.2。
@Graham 指出从 WSGI 脚本文件激活 venv 不是首选方式。更多信息在这里:http://modwsgi.readthedocs.io/en/develop/user-guides/virtual-environments.html
我将把你所有的步骤放在一起,仅供其他人寻找相关信息:
注意:我的应用名称是 blazing,路径 ~/jan/blazing。用你自己的替换它们。
sudo apt install python3-pip
sudo apt-get install python3-venv
python3 -m venv ~/blazing/venv
source /home/jan/blazing/venv/bin/activate
pip3 install --upgrade pip
pip3 install Flask
sudo apt-get install apache2-dev
(venv) pip3 install mod_wsgi
(venv) sudo venv3/bin/mod_wsgi-express install-module
输出:
LoadModule wsgi_module "/usr/lib/apache2/modules/mod_wsgi-py35.cpython-35m-x86_64-linux-gnu.so"
WSGIPythonHome "/home/jan/blazing/venv"
sudo vim /etc/apache2/mods-available/wsgi_express.load
添加:LoadModule wsgi_module "/usr/lib/apache2/modules/mod_wsgi-py35.cpython-35m-x86_64-linux-gnu.so"
sudo vim /etc/apache2/mods-available/wsgi_express.conf
添加:
WSGIPythonHome "/home/jan/blazing/venv"
WSGIPythonPath /home/jan/blazing/venv/lib/python3.x/site-packages
然后
sudo a2enmod wsgi_express
vim /home/jan/blazing/project/flaskapp.wsgi
添加:
import os, sys
PROJECT_DIR = '/home/jan/blazing' sys.path.insert(0, PROJECT_DIR)
activate_this = os.path.join( PROJECT_DIR, 'venv/bin', 'activate_this.py' )
with open(activate_this) as file_:
exec(file_.read(), dict(__file__=activate_this)
from piFlask import app as application application.debug = True
和
vim /etc/apache2/sites-available/flask.conf
添加:
WSGIDaemonProcess flaskProcess user=www-data group=www-data threads=5
WSGIScriptAlias /flask /home/jan/blazing/project/flaskapp.wsgi
ErrorLog ${APACHE_LOG_DIR}/error_flask.log #you can see the errors here..
CustomLog ${APACHE_LOG_DIR}/access_flask.log combined
<Location /flask>
WSGIProcessGroup flaskProcess
WSGIApplicationGroup %{GLOBAL}
Require all granted
</Location>
或者,如果您有其他站点正在运行并且希望将 flask 作为虚拟主机之一,您可以使用这个 conf 文件:
<VirtualHost *>
ServerName flask.ubuntuws
ErrorLog ${APACHE_LOG_DIR}/error_flask.log
CustomLog ${APACHE_LOG_DIR}/access_flask.log combined
WSGIDaemonProcess flaskProcess user=www-data group=www-data threads=5
WSGIScriptAlias / /home/jan/blazing/project/flaskapp.wsgi
<Location />
WSGIProcessGroup flaskProcess
WSGIApplicationGroup %{GLOBAL}
Require all granted
</Location>
</VirtualHost>
并确保flaskapp.wsgi 中的PROJECT_DIR 指向您的PROJECT_NAME.py。
启用虚拟站点并重新加载 apache:
最后:
sudo a2ensite flask.conf
sudo service apache2 reload