下面是“用uWSGI和Nginx部署Flask项目的方法示例”的完整攻略:
第一条示例:使用uWSGI和Nginx部署Flask项目
准备工作
在开始部署Flask项目前,你需要做以下准备工作:
- 在服务器上安装Nginx
- 在服务器上安装uWSGI
- 建立Flask项目
配置uWSGI
- 在Flask项目目录下创建一个uwsgi.ini文件,用于配置uWSGI。
[uwsgi]
module = wsgi:app
master = true
processes = 5
socket = myproject.sock
chmod-socket = 660
vacuum = true
die-on-term = true
具体配置项请参考uWSGI官方文档。
- 启动uWSGI服务器。
uwsgi --ini uwsgi.ini
如果服务器没有权限可以在前面加sudo。
- 测试项目是否运行正常。
curl http://localhost:5000
- 配置uWSGI的systemd服务。
```
[Unit]
Description=uWSGI instance to serve myproject
After=network.target
[Service]
User=
Group=www-data
WorkingDirectory=/home/
Environment="PATH=/home/
ExecStart=/home/
[Install]
WantedBy=multi-user.target
```
具体配置项请参考systemd文档。
配置Nginx
- 在/etc/nginx/sites-available/目录下创建一个myproject文件,用于配置Nginx。
```
server {
listen 80;
server_name example.com;
location / {
include uwsgi_params;
uwsgi_pass unix:/home/alex/myproject/myproject.sock;
}
}
```
- 开启网站文件。
sudo ln -s /etc/nginx/sites-available/myproject /etc/nginx/sites-enabled
- 测试Nginx配置文件是否正确。
sudo nginx -t
- 重启Nginx。
sudo systemctl restart nginx
完成部署
现在你就可以访问你的Flask项目了。在浏览器中访问http://example.com,你应该可以看到你的Flask项目的欢迎页面了。
第二条示例:使用Docker、Nginx和uWSGI部署Flask项目
准备工作
在开始部署Flask项目前,你需要做以下准备工作:
- 在服务器上安装Docker
配置Docker
- 在Flask项目下创建一个Dockerfile文件。
```
# Use official Python runtime as a parent image
FROM python:2.7-slim
# Set the working directory to /app
WORKDIR /app
# Copy the current directory contents into the container at /app
ADD . /app
# Install the required packages
RUN pip install --trusted-host pypi.python.org -r requirements.txt
# Make port 80 available to the world outside this container
EXPOSE 80
# Define environment variable
ENV NAME World
# Run app.py when the container launches
CMD ["python", "app.py"]
```
- 构建Docker镜像。
docker build . -t myproject
- 启动Docker容器。
docker run -d -p 80:80 myproject
- 测试项目是否运行正常。
curl http://localhost:80
配置Nginx和uWSGI
- 创建一个nginx.conf文件,用于配置Nginx。
```
worker_processes 1;
events {
worker_connections 1024;
}
http {
sendfile on;
upstream flask {
server myproject:8080;
keepalive 16;
}
server {
listen 80 default_server;
server_name _;
location / {
proxy_pass http://flask;
proxy_redirect off;
proxy_set_header Host $http_host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root /usr/share/nginx/html;
}
}
}
```
- 启动Nginx和uWSGI容器。
docker run -d --name myproject -v /path/to/app:/src --expose 8080 myproject
docker run -d --name nginx --volumes-from myproject -p 80:80 nginx /usr/sbin/nginx -c /src/nginx.conf
完成部署
现在你就可以访问你的Flask项目了。在浏览器中访问http://localhost,你应该可以看到你的Flask项目的欢迎页面了。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:用uWSGI和Nginx部署Flask项目的方法示例 - Python技术站