阿里云ECS服务器部署django的方法
参考
服务器安装的是Centos系统。
uwsgi是使用pip安装的。
nginx是使用yuminstallnginx安装。
python2.7,mysql5.5使用yum安装。
它们之间的逻辑关系如下:
thewebclient<->thewebserver<->thesocket<->uwsgi<->Django
uswgi负责从Django拿内容,通过socket传给webserver如nginx,最后显示到网页浏览器。
在django的项目下,建文件uswgi.ini,可以不用在uswgi后面写一串选项。
#uwsgi.inifile [uwsgi] #Django-relatedsettings #thebasedirectory(fullpath) chdir=/var/www/html/ #Django'swsgifile module=app.wsgi:application #process-relatedsettings #master master=true #maximumnumberofworkerprocesses processes=10 #thesocket(usethefullpathtobesafe #socket=127.0.0.1:8001 socket=/tmp/site.sock #...withappropriatepermissions-maybeneeded chmod-socket=666 #clearenvironmentonexit vacuum=true process=4 threads=2
#Django'swsgifile这个对应你自己Django项目的就好。chdir就是Django的所在目录,和manage.py同一目录。
其他可以默认。
同样建立nginx.conf
#nginx.conf #theupstreamcomponentnginxneedstoconnectto upstreamdjango{ serverunix:///tmp/site.sock;#forafilesocket #server127.0.0.1:8001;#forawebportsocket(we'llusethisfirst) } #configurationoftheserver server{ #theportyoursitewillbeservedon listen80; #thedomainnameitwillservefor server_namedemo.mmm.com;#substituteyourmachine'sIPaddressorFQDN charsetutf-8; #maxuploadsize client_max_body_size128M;#adjusttotaste #Djangomedia location/media{ alias/var/www/html/media;#yourDjangoproject'smediafiles-amendasrequired } location/static{ alias/var/www/html/static;#yourDjangoproject'sstaticfiles-amendasrequired } #Finally,sendallnon-mediarequeststotheDjangoserver. location/{ uwsgi_passdjango; include/var/www/html/uwsgi_params;#theuwsgi_paramsfileyouinstalled } }
uwsgi_passdjango;中的django和upstreamdjango相对应。
两头的socket名字要一样。uwsgi里要改sock的权限为666,默认的664,nginx会连不上,在/var/log/nginx/error.log里可以看到connectisdenied。
据说使用socket比端口要好,注意unix://这个前缀,加上后面sock的路径,是3个///,看起来不好看。
无论使用socket还是TCP端口,uwsgi的socket和nginx的server值要对应,否则没法接通路径。
server_namedemo.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目录下,不知道直接使用会有什么区别。
最后:
使用chkconfignginxon把nginx设置成自启动服务。
在/etc/rc.local里加一行uwsgi/var/www/html/uwsgi.ini--uidwww--gidwww
我没加uid和gid,以root运行uwsgi会被警告的。
原来是打算用apache的,所以有个/var/www/html目录。mod-python报错后,不知道怎么处理。
系统自带Python2.6,mod-python就是调用的2.6。
nginx不能从uwsgi获得数据时,就会输出nginx的默认页面。还会输出BadGateway提示。
linux最大的麻烦是,程序和配置文件分散,装好一个程序,都不知道它在哪里。
以上这篇阿里云ECS服务器部署django的方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持毛票票。
声明:本文内容来源于网络,版权归原作者所有,内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:czq8825#qq.com(发邮件时,请将#更换为@)进行举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。