这里是详细的“centos 7.0 使用Nginx部署flask应用教程”的完整攻略,其中包含两个示例说明。
环境准备
在开始我们的攻略之前,请确保你的服务器已经安装了Centos 7.0以及Nginx。
安装Python虚拟环境
我们首先需要创建一个Python虚拟环境,可以使用虚拟环境隔离来自不同项目的Python包。
我们可以使用以下命令安装虚拟环境:
yum install python-pip
pip install virtualenv
安装Flask应用
我们使用以下命令安装Flask应用:
pip install flask
例一:部署单个Flask应用
我们将在这个例子中演示如何部署单个Flask应用。我们将使用以下文件作为Flask应用的代码:
from flask import Flask
app = Flask(__name__)
@app.route('/')
def index():
return "Hello world!"
if __name__ == '__main__':
app.run()
使用以下命令创建一个Python虚拟环境并激活它:
virtualenv venv
source venv/bin/activate
使用以下命令运行Flask应用:
export FLASK_APP=app.py
flask run
现在我们已经成功运行了Flask应用,请按CTRL+C终止应用程序。
使用以下命令安装gunicorn:
pip install gunicorn
现在我们已经安装了gunicorn,接下来我们将使用gunicorn来运行Flask应用。
使用以下命令运行Flask应用:
gunicorn app:app
现在我们的Flask应用已经在gunicorn服务器上运行。默认情况下,gunicorn服务器将侦听8000端口,因此可以通过浏览器访问服务器的IP地址来访问Flask应用。
配置使用Nginx反向代理
在配置Nginx反向代理之前,我们需要更改gunicorn服务器的默认设置。我们将使用以下gunicorn命令运行Flask应用:
gunicorn app:app -b localhost:8000
现在我们已经将gunicorn服务器绑定到localhost上,接下来我们将配置Nginx反向代理。
在/etc/nginx/conf.d/目录中创建一个新文件,例如:
sudo vi /etc/nginx/conf.d/flask.conf
将以下内容添加到文件中:
server {
listen 80;
server_name example.com;
location / {
proxy_pass http://localhost:8000;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
}
}
以实际使用的域名替换“example.com”字符串,并将文件保存并关闭。
现在,我们要重新启动Nginx服务器以使更改生效。
使用以下命令重新启动Nginx服务器:
sudo systemctl restart nginx
现在我们已经成功地通过Nginx反向代理运行了我们的Flask应用,可以通过访问服务器的IP地址或域名来访问它。
例二:部署多个Flask应用
在这个例子中,我们将演示如何在同一服务器上部署多个Flask应用。
安装Flask应用
我们将使用以下两个文件作为两个Flask应用的代码:
file1.py:
from flask import Flask
app = Flask(__name__)
@app.route('/app1')
def index():
return "Hello world from app1!"
if __name__ == '__main__':
app.run()
file2.py:
from flask import Flask
app = Flask(__name__)
@app.route('/app2')
def index():
return "Hello world from app2!"
if __name__ == '__main__':
app.run()
使用以下命令创建两个Python虚拟环境,并分别使用以下命令激活它们:
virtualenv venv1
source venv1/bin/activate
pip install flask
pip install gunicorn
virtualenv venv2
source venv2/bin/activate
pip install flask
pip install gunicorn
分别使用以下命令运行两个Flask应用:
export FLASK_APP=file1.py
flask run
export FLASK_APP=file2.py
flask run
现在我们已经成功运行了两个Flask应用,请按CTRL+C终止应用程序。
使用以下命令安装Nginx:
sudo yum install nginx
配置Nginx反向代理
在配置Nginx反向代理之前,我们需要更改gunicorn服务器的默认设置,以将其绑定到其他端口。为此,将以下内容添加到每个虚拟环境的激活脚本中:
export APP_PORT=8000
然后,对每个Flask应用使用以下命令运行gunicorn服务器:
gunicorn ${FLASK_APP}:app -b localhost:$APP_PORT
现在我们已经将gunicorn服务器绑定到localhost上,接下来我们将配置Nginx反向代理。
在/etc/nginx/conf.d/目录中创建一个新文件,例如:
sudo vi /etc/nginx/conf.d/flask.conf
将以下内容添加到文件中:
server {
listen 80;
server_name example.com;
location /app1 {
proxy_pass http://localhost:8000;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
}
location /app2 {
proxy_pass http://localhost:8001;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
}
}
以实际使用的域名替换“example.com”字符串,并将文件保存并关闭。
现在,我们要重新启动Nginx服务器以使更改生效。
使用以下命令重新启动Nginx服务器:
sudo systemctl restart nginx
现在我们已经成功地通过Nginx反向代理运行了我们的多个Flask应用,可以通过访问服务器的IP地址或域名来访问它们。例如,我们可以访问http://example.com/app1和http://example.com/app2来分别访问两个不同的应用。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:centos 7.0 使用Nginx部署flask应用教程 - Python技术站