apache+flask+virtualenv https://blog.csdn.net/yuzw_zw/article/details/83154633

文章来源:https://blog.csdn.net/yuzw_zw/article/details/83154633

 

一、安装Apache
# yum install -y httpd httpd-devel


# systemctl start httpd.service # 启动
# systemctl stop httpd.service # 关闭
# systemctl restart httpd.service # 重启
# systemctl enable httpd.service # 开机自启
防火墙开放80端口

 

上面的命令可能不管用,可以用 /bin/systemctl start httpd.service  ,这里我最容易犯的错误就是在命令前面加了个点,这是多余的,而且这个错误比较难发现;

 

# firewall-cmd --zone=public --add-port=80/tcp --permanent
# firewall-cmd --reload
开启Apache,外网已经可以通过ip访问Apache的默认页面了

 

二、安装Python36、pip3、virtualenv
# yum install -y epel-release
# yum install -y python36
# python36 -V
Python 3.6.6
 

# yum install -y python36-setuptools
# easy_install-3.6 pip
# pip3 -V
pip 18.1 from /usr/local/lib/python3.6/site-packages/pip-18.1-py3.6.egg/pip (python 3.6)
 

# pip3 install virtualenv
 

三、创建项目
创建flask项目(最简单的,一个项目文件夹、一个启动文件)

# mkdir /var/www/flask_test # 项目文件夹
# vi /var/www/flask_test/app.py # 启动文件
启动文件例子: 

from flask import Flask, request

app = Flask(__name__)

@app.route('/')
def hello_world():
return 'Hello World'

@app.route('/hello')
def hello():
name = request.args.get('name','')
return 'Hello ' + name + '!'

if __name__ == '__main__':
app.run()
在项目文件夹下创建虚拟环境,安装flask

# cd /var/www/flask_test
# virtualenv py3env # 创建虚拟环境
# source py3env/bin/activate # 进入虚拟环境

(py3env) # pip install flask # 安装flask
(py3env) # deactivate # 退出虚拟环境
 

四、在虚拟环境中用pip安装mod_wsgi
# yum install -y python36-devel.x86_64 # 一个依赖,不安装的话,下面pip会报错。。
# source py3env/bin/activate # 进入虚拟环境
(py3env) # pip install mod_wsgi # 安装mod_wsgi
(py3env) # mod_wsgi-express install-module # 执行该命令,把输出内容复制下来
LoadModule wsgi_module "/usr/lib64/httpd/modules/mod_wsgi-py36.cpython-36m-x86_64-linux-gnu.so"
WSGIPythonHome "/var/www/flask_test/py3env"

(py3env) # deactivate # 退出虚拟环境
 修改Apache的配置

# vi /etc/httpd/conf/httpd.conf
复制上面得到的这行内容,添加到配置文件的最后

LoadModule wsgi_module "/usr/lib64/httpd/modules/mod_wsgi-py36.cpython-36m-x86_64-linux-gnu.so"
五、配置mod_wsgi
# vi /var/www/html/flask_test/app.wsgi
写入以下内容(根据:https://dormousehole.readthedocs.io/en/latest/deploying/mod_wsgi.html)

activate_this = '/var/www/flask_test/py3env/bin/activate_this.py'
with open(activate_this) as file_:
exec(file_.read(), dict(__file__=activate_this))

import sys
sys.path.insert(0, '/var/www/flask_test')
from app import app as application
配置Apache

# vi /etc/httpd/conf/httpd.conf
写入以下内容(根据:https://dormousehole.readthedocs.io/en/latest/deploying/mod_wsgi.html#id1)

<VirtualHost *:80>
ServerName example.com
WSGIScriptAlias / /var/www/flask_test/app.wsgi
<Directory /var/www/flask_test>
Require all granted
</Directory>
</VirtualHost>
 

OK了,启动Apache,通过这台服务器的ip就能访问网页了
测试一些app.py里面写的两个路径

posted @ 2019-06-30 16:37  braveheart007  阅读(238)  评论(0编辑  收藏  举报