项目部署
基于ubuntu 16.04系统,使用 Gunicorn + Nginx 进行布署,云服务器为阿里云
学习目标
- 能够理解 Nginx 服务器的作用
- 能够使用 Gunicorn + Nginx 实现简单的 helloworld 程序部署
阿里云服务器
![]()
- 进入控制台,查看实例创建情况
![]()
- 给安全组配置规则,添加5000端口(一并加上5001端口)
![]()
![]()
![]()
- 利用命令行进行远程服务器登录
相关环境安装
以下操作都在远程服务器上进行操作 (ubuntu 16.04)
| apt-get install mysql-server |
| apt-get install libmysqlclient-dev |
| sudo apt-get install redis-server |
| pip install virtualenv |
| pip install virtualenvwrapper |
- 使得安装的virtualenvwrapper生效,编辑~/.bashrc文件,内容如下:
| export WORKON_HOME=$HOME/.virtualenvs |
| export PROJECT_HOME=$HOME/workspace |
| source /usr/local/bin/virtualenvwrapper.sh |
requirements文件
Python 项目中可以包含一个 requirements.txt 文件,用于记录所有依赖包及其精确的版本号,以便在新环境中进行部署操作。
- 在虚拟环境使用以下命令将当前虚拟环境中的依赖包以版本号生成至文件中:
| pip freeze > requirements.txt |
- 当需要创建这个虚拟环境的完全副本,可以创建一个新的虚拟环境,并在其上运行以下命令:
| pip install -r requirements.txt |
- 在安装 Flask-MySQLdb 的时候可能会报错,可能是依赖包没有安装,执行以下命令安装依赖包:
| sudo apt-get build-dep python-mysqldb |
Nginx
相关操作
| $ sudo apt-get install nginx |
| /etc/init.d/nginx start |
| /etc/init.d/nginx stop |
- 配置文件
- 编辑文件:/etc/nginx/sites-available/default
| |
| |
| upstream flask { |
| server 127.0.0.1:5000; |
| server 127.0.0.1:5001; |
| } |
| server { |
| |
| listen 80 default_server; |
| listen [::]:80 default_server; |
| |
| root /var/www/html; |
| |
| index index.html index.htm index.nginx-debian.html; |
| |
| server_name _; |
| |
| location / { |
| |
| proxy_pass http://127.0.0.1:5000; |
| |
| |
| |
| proxy_set_header Host $host; |
| |
| proxy_set_header X-Real-IP $remote_addr; |
| } |
| } |
Gunicorn
- Gunicorn(绿色独角兽)是一个Python WSGI的HTTP服务器
- 从Ruby的独角兽(Unicorn )项目移植
- 该Gunicorn服务器与各种Web框架兼容,实现非常简单,轻量级的资源消耗
- Gunicorn直接用命令启动,不需要编写配置文件
相关操作
| |
| gunicorn -w 2 -b 127.0.0.1:5000 运行文件名称:Flask程序实例名 |
参考阅读: Gunicorn相关配置:https://blog.csdn.net/y472360651/article/details/78538188
其他操作
| scp -r 本地文件路径 root@39.106.21.198:远程保存路径 |
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?