python项目部署阿里云服务器有时候接口没有响应_阿里云服务器部署python项目

本文介绍了两种在阿里云服务器上部署Django项目的方案:一是使用Nginx+uWSGI,详细阐述了从创建虚拟环境到配置uwsgi.ini和nginx的过程;二是采用Nginx+Gunicorn,讲解了从安装Gunicorn到启动服务的步骤。通过这些方法,可以将Python项目成功部署到云服务器。
摘要由CSDN通过智能技术生成

一. 部署python项目的方式

python web项目的部署方式,根据网上资料有9种,请参考资料,本文不做详细描述。仅根据网上找到的资料进行部署测试。

其他参考资料:

请先建立如下常见概念:

web服务器:nginx,apache,uWSGI,tornado,flup

协议:wsgi(用于web服务器和python的web程序间通讯)

uwsgi(专用于uWSGI这种python web服务器)

cgi(一种通用的web标准,规定web服务器传送数据的标准格式,为了实现cgi协议,而启动的进程就是cgi进程了)

fastcgi(对cgi协议的性能优化协议,实现cgi的进程会反复启动进程,php解释器反复初始化,浪费资源,对此fastcgi规定一个master进程负责调度,后续的php-cgi,php-fpm都是这一协议的产物)

php-fpm(可以视为php-cgi的升级优化,之所以还有php-cgi,因为windows不支持php-fpm啊,绝望的windows,一种实现fastcgi协议的进程管理器)

模块:mod_wsgi(可视为apache服务器的扩展模块,支持wsgi协议,小白的说,你当他是apache服务器的翻译器,将Apache送出的数据,按照wsgi协议标准化后发送给python web程序处理)

关于cgi,fastcgi,php-cgi,php-fpm的关系,可参考讨论资料

二. 以下为本人尝试的部署方式:

1. nginx+uWSGI部署Django网站

首先:原理理解

nginx,uWSGI,virtualenv,django四者之间的是怎样进行工作的?

首先,Nginx负责接受外部客户端请求并对其htpp请求进行解包,若请求是静态文件则根据设置好的静态文件路径返回对应内容。若请求是动态内容则将请求交给uWSGI服务器(nginx和uWSGI使用socket通信)。

然后,uWSGI服务器根据wsgi协议解析并回调virtualenv中的django应用。

接着,django则根据请求进行数据库查找和模版渲染等工作(总之就是返回一个响应内容)然后再逆方向返回到Nginx

最后,Nginx将响应交给客户端。

具体部署的操作步骤:

第一步,创建一个简单的Django web程序DeployTest,设置与静态文件static_url,static_root;媒体文件media_url,media_root;一串secure相关的settings文件设置,

第二步,检查web项目deploy,参数是否设置完毕。manager.py check --deploy

第三步,生成requirements.txt文件,描述项目的依赖包pip freeze>requirements.txt

第四步,scp命令将本地文件上传给阿里云服务器,本人这里使用了/website/DeployTest作为项目目录scp  -r   /Users/yujin/PycharmProjects/DeployTest    root@目标IP:/website/DeployTest

第五步,/website/DeployTest,linux生成项目依赖pyenv local virtualenv  创建虚拟环境

pip install -r requirements.txt  解决环境和项目依赖问题

ls -al /root/.pyenv/versions/VirtualenvForDeployTest/lib/python3.6/site-packages/ 查看下你的虚拟环境安装的第三方包情况,是否满足邀请

第六步,安装nginx服务器yum install nginx

第七步,安装uWSGI服务器pip install uWSGI

第八步,增加配置,将uWSGI和django web程序集成写配置文件,随意命名为uwsgi.ini文件

注意大坑,#号不是注释,直接复制粘贴,导致uwgsi启动失败。另外错误信息中缺乏的文件,可以locate 文件名,或者直接新建的方式解决。

[uwsgi] #配置

socket=127.0.0.1:8080  #uWSGI服务器启动占用的地址和端口

static-map=/static=/website/DeployTest/collected_static    #设置django静态文件夹的路径

chdir=/website/DeployTest  #设置django的路径

module=DeployTest.wsgi:application

;virtualenv = /home/aihunter  #设置虚拟环境路径,不设置的话在会找不到django

master=true  #设置是否允许主进程存在

process=5  #设置进程数量

harakiri=30  #客户端请求超过设置

vacuum=true  #设置服务器退出时自动清理环境

pidfile=/tmp/project-master.pid

max-requests=5000

daemonize=/var/log/uwsgi/yourproject.log

第九步:启动nginx服务server {

listen 80;  #设置nginx服务器开启的端口号

server_name www.aihunter.cc;  #这里填写你自己的域名

charset utf-8;

client_max_body_size 75M;

location /static {

alias home/virtuweb/testproject/testmodel/static;  #设置django静态文件路径

}

location / {

uwsgi_pass 127.0.0.1:8080; #设置为uwsgi服务器开启的端口

include /etc/nginx/uwsgi_params;  #设置uwsgi_params文件路径

}

}

启动nginxnginx 或者nginx目录下 ./nginx

nginx -s reload 重启

第十步:启动uwsgi服务:uwsgi  --ini testproject_uwsgi.ini

第十一步:自行访问网址验证了。

2. nginx+Gunicorn部署Django网站

第一步,安装nginx,不再描述

第二步,修改配置文件server {

listen 80;

server_name  #这里写你的域名;

location / {

proxy_pass http://127.0.0.1:8000;

proxy_set_header Host $host;

proxy_set_header X-Real_IP $remote_addr;

proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

}

}

第三步,启动nginxnginx 或者nginx目录下 ./nginx

nginx -s reload 重启

第四步,安装gunicorn,在项目目录下执行,保证所使用的python虚拟环境pip install Gunicorn

在settings文件中,INSTALLED_APPS选项,增加'gunicorn'

第五步,启动gunicorn

命令行中执行

gunicorn YourProject.wsgi

第六步,检查结果

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值