阿里云服务器部署python项目

一. 部署python项目的方式

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

其他参考资料:

区分wsgi、uWSGI、uwsgi、php-fpm、CGI、FastCGI的概念

阿里云部署django网站教程(Ngnix +Uwsgi + virtualenv)

使用 Nginx 和 Gunicorn 部署 Django 博客

请先建立如下常见概念:

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文件路径

}

}

启动nginx

nginx 或者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;

}

}

第三步,启动nginx

nginx 或者nginx目录下 ./nginx

nginx -s reload 重启

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

pip install Gunicorn

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

第五步,启动gunicorn

命令行中执行

gunicorn YourProject.wsgi

第六步,检查结果

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 204,189评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,577评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,857评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,703评论 1 276
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,705评论 5 366
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,620评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,995评论 3 396
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,656评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,898评论 1 298
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,639评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,720评论 1 330
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,395评论 4 319
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,982评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,953评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,195评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 44,907评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,472评论 2 342

推荐阅读更多精彩内容