阿里云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中的__slots__缓存资源以节省内存开销的方法
Apr 02 Python
使用Python脚本在Linux下实现部分Bash Shell的教程
Apr 17 Python
利用Python实现简单的相似图片搜索的教程
Apr 23 Python
Python中函数参数调用方式分析
Aug 09 Python
Python3.5字符串常用操作实例详解
May 01 Python
python中使用while循环的实例
Aug 05 Python
Python一键查找iOS项目中未使用的图片、音频、视频资源
Aug 12 Python
快速解决docker-py api版本不兼容的问题
Aug 30 Python
Python循环实现n的全排列功能
Sep 16 Python
python实现将字符串中的数字提取出来然后求和
Apr 02 Python
pycharm 激活码及使用方式的详细教程
May 12 Python
VSCODE配置Markdown及Markdown基础语法详解
Jan 19 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
php实现上传图片保存到数据库的方法
2015/02/11 PHP
php生成HTML文件的类方法
2019/10/11 PHP
Laravel6.2中用于用户登录的新密码确认流程详解
2019/10/16 PHP
枚举JavaScript对象的函数
2006/12/22 Javascript
10个基于jQuery或JavaScript的WYSIWYG 编辑器整理
2010/05/06 Javascript
Colortip基于jquery的信息提示框插件在IE6下面的显示问题修正方法
2010/12/06 Javascript
javaScript 计算两个日期的天数相差(示例代码)
2013/12/27 Javascript
jQuery实现异步获取json数据的2种方式
2014/08/29 Javascript
提高jQuery性能优化的技巧
2015/08/03 Javascript
jQuery属性选择器用法示例
2016/09/09 Javascript
微信小程序 swiper组件详解及实例代码
2016/10/25 Javascript
JavaScript中使用webuploader实现上传视频功能(demo)
2017/04/10 Javascript
基于node.js制作简单爬虫教程
2017/06/29 Javascript
vue项目实现表单登录页保存账号和密码到cookie功能
2018/08/31 Javascript
JavaScript检查数据中是否存在相同的元素(两种方法)
2018/10/07 Javascript
vue data恢复初始化数据的实现方法
2019/10/31 Javascript
vuex存值与取值的实例
2019/11/06 Javascript
vue-router的hooks用法详解
2020/06/08 Javascript
微信小程序报错: thirdScriptError的错误问题
2020/06/19 Javascript
vue 导航锚点_点击平滑滚动,导航栏对应变化详解
2020/08/10 Javascript
使用Python来编写HTTP服务器的超级指南
2016/02/18 Python
Python 列表(List) 的三种遍历方法实例 详解
2017/04/15 Python
Python基于Matplotlib库简单绘制折线图的方法示例
2017/08/14 Python
疯狂上涨的Python 开发者应从2.x还是3.x着手?
2017/11/16 Python
python解决pandas处理缺失值为空字符串的问题
2018/04/08 Python
python Tkinter版学生管理系统
2019/02/20 Python
python读取当前目录下的CSV文件数据
2020/03/11 Python
pandas.DataFrame.drop_duplicates 用法介绍
2020/07/06 Python
Pycharm常用快捷键总结及配置方法
2020/11/14 Python
UNIX文件系统常用命令
2012/05/25 面试题
初中生考试作弊检讨书
2014/12/14 职场文书
感谢信格式范文
2015/01/22 职场文书
综合管理员岗位职责
2015/02/11 职场文书
小学见习报告
2015/06/23 职场文书
Python 批量下载阴阳师网站壁纸
2021/05/19 Python
解析mybatis-plus中的resultMap简单使用
2021/11/23 Java/Android