阿里云ECS服务器部署django的方法


Posted in Python onAugust 29, 2019

参考

服务器安装的是Centos 系统。

uwsgi是使用pip安装的。

nginx是使用yum install nginx安装。

python 2.7, mysql 5.5使用 yum安装。

它们之间的逻辑关系如下:

the web client <-> the web server <-> the socket <-> uwsgi <-> Django

uswgi负责从Django拿内容,通过socket传给 web server如nginx, 最后显示到 网页浏览器。

在django的项目下,建文件 uswgi.ini,可以不用在uswgi后面写一串选项。

# uwsgi.ini file
[uwsgi]
 
# Django-related settings
# the base directory (full path)
chdir   = /var/www/html/
# Django's wsgi file
module   = app.wsgi:application
# process-related settings
# master
master   = true
# maximum number of worker processes
processes  = 10
# the socket (use the full path to be safe
#socket   = 127.0.0.1:8001
socket = /tmp/site.sock
# ... with appropriate permissions - may be needed
chmod-socket = 666
# clear environment on exit
vacuum   = true
process = 4
threads = 2

# Django's wsgi file这个对应你自己Django项目的就好。 chdir就是Django的所在目录,和manage.py同一目录。

其他可以默认。

同样建立nginx.conf

# nginx.conf
 
# the upstream component nginx needs to connect to
upstream django {
 server unix:///tmp/site.sock; # for a file socket
 #server 127.0.0.1:8001; # for a web port socket (we'll use this first)
}
 
# configuration of the server
server {
 # the port your site will be served on
 listen  80;
 # the domain name it will serve for
 server_name demo.mmm.com; # substitute your machine's IP address or FQDN
 charset  utf-8;
 
 # max upload size
 client_max_body_size 128M; # adjust to taste
 
 # Django media
 location /media {
  alias /var/www/html/media; # your Django project's media files - amend as required
 }
 
 location /static {
  alias /var/www/html/static; # your Django project's static files - amend as required
 }
 
 # Finally, send all non-media requests to the Django server.
 location / {
  uwsgi_pass django;
  include  /var/www/html/uwsgi_params; # the uwsgi_params file you installed
 }
}

uwsgi_pass django; 中的django和upstream django 相对应。

两头的socket名字要一样。uwsgi里要改sock的权限为666,默认的664,nginx会连不上,在/var/log/nginx/error.log里可以看到connect is denied。

据说使用socket比端口要好,注意unix://这个前缀,加上后面sock的路径,是3个///,看起来不好看。

无论使用socket还是TCP端口,uwsgi的socket和nginx的server值要对应,否则没法接通路径。

server_name demo.mmm.com; 看文章时,把server_name这个词看成域名,给修改掉,结果nginx启动失败。可以用域名或者IP。

ln -s /var/www/html/nginx.conf /etc/nginx/conf.d/

链接后,这样在conf.d 配置目录里会有Django下建立的nginx.conf,比较方便。

uwsgi_params文件在/etc/nginx下面有,老外说是拷贝到Django目录下,不知道直接使用会有什么区别。

最后:

使用chkconfig nginx on 把nginx设置成自启动服务。

在/etc/rc.local里加一行 uwsgi /var/www/html/uwsgi.ini --uid www --gid www

我没加uid和gid,以root运行uwsgi会被警告的。

原来是打算用apache的,所以有个/var/www/html目录。mod-python报错后,不知道怎么处理。

系统自带Python2.6,mod-python就是调用的2.6。

nginx不能从uwsgi获得数据时,就会输出nginx的默认页面。还会输出 Bad Gateway提示。

linux最大的麻烦是,程序和配置文件分散,装好一个程序,都不知道它在哪里。

以上这篇阿里云ECS服务器部署django的方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
python通过定义一个类实例作为ftp回调方法
May 04 Python
TensorFlow神经网络优化策略学习
Mar 09 Python
使用python脚本实现查询火车票工具
Jul 19 Python
python使用opencv驱动摄像头的方法
Aug 03 Python
为什么str(float)在Python 3中比Python 2返回更多的数字
Oct 16 Python
PyQt打开保存对话框的方法和使用详解
Feb 27 Python
Python 动态变量名定义与调用方法
Feb 09 Python
Python对Tornado请求与响应的数据处理
Feb 12 Python
浅谈Pycharm最有必要改的几个默认设置项
Feb 14 Python
Python实现检测文件的MD5值来查找重复文件案例
Mar 12 Python
python初步实现word2vec操作
Jun 09 Python
获取CSDN文章内容并转换为markdown文本的python
Sep 06 Python
树莓派3 搭建 django 服务器的实例
Aug 29 #Python
使用Django搭建web服务器的例子(最最正确的方式)
Aug 29 #Python
Python处理session的方法整理
Aug 29 #Python
django自带调试服务器的使用详解
Aug 29 #Python
Python中的相关分析correlation analysis的实现
Aug 29 #Python
python中单下划线(_)和双下划线(__)的特殊用法
Aug 29 #Python
python 计算两个列表的相关系数的实现
Aug 29 #Python
You might like
操作Oracle的php类
2006/10/09 PHP
解析php DOMElement 操作xml 文档的实现代码
2013/05/10 PHP
php中最简单的字符串匹配算法
2014/12/16 PHP
php中实现可以返回多个值的函数实例
2015/03/21 PHP
CI框架实现框架前后端分离的方法详解
2016/12/30 PHP
PHP判断是手机端还是PC端 PHP判断是否是微信浏览器
2017/03/15 PHP
php中array_fill函数的实例用法
2021/03/02 PHP
jquery中输入验证中一个不错的效果
2010/08/21 Javascript
基于jquery DOM写的类似微博发布的效果
2012/10/20 Javascript
javascript数组去重方法终极总结
2014/06/05 Javascript
js锁屏解屏通过对$.ajax进行封装实现
2014/07/31 Javascript
JS实现可缩放、拖动、关闭和最小化的浮动窗口完整实例
2015/03/04 Javascript
JavaScript中几种排序算法的简单实现
2015/07/29 Javascript
javascript中if和switch,==和===详解
2015/07/30 Javascript
jQuery实现的数值范围range2dslider选取插件特效多款代码分享
2015/08/27 Javascript
学习JavaScript事件流和事件处理程序
2016/01/25 Javascript
php基于redis处理session的方法
2016/03/14 Javascript
Angularjs结合Bootstrap制作的一个TODO List
2016/08/18 Javascript
node.js缺少mysql模块运行报错的解决方法
2016/11/13 Javascript
vue2组件之select2调用的示例代码
2017/10/12 Javascript
Vue+Mock.js模拟登录和表格的增删改查功能
2018/07/26 Javascript
[03:53]2016国际邀请赛中国区预选赛第三日TOP10精彩集锦
2016/06/29 DOTA
Python爬取京东的商品分类与链接
2016/08/26 Python
在Python 不同级目录之间模块的调用方法
2019/01/19 Python
Python multiprocessing多进程原理与应用示例
2019/02/28 Python
Django框架之中间件MiddleWare的实现
2019/12/30 Python
Python字符串函数strip()原理及用法详解
2020/07/23 Python
党校个人自我鉴定范文
2014/03/28 职场文书
法制宣传标语
2014/06/23 职场文书
英语课外活动总结
2014/08/27 职场文书
门市房租房协议书
2014/12/04 职场文书
巾帼文明岗汇报材料
2014/12/24 职场文书
幼儿园老师个人总结
2015/02/28 职场文书
求职自荐信怎么写
2015/03/04 职场文书
docker-compose部署Yapi的方法
2022/04/08 Servers
如何利用python实现列表嵌套字典取值
2022/06/10 Python