概述
1.下载nginx:sudo apt-get install nginx
2.打开浏览器访问公网ip,如果显示nginx欢迎界面即为安装成功
3.启动项目所在的虚拟环境:source bin/activate
ubuntu16.04ecs有点坑,默认python命令启动的是python2,下载uwsgi时会产生很多问题
问题1:缺少setuptools,全局安装:pip3 install setuptools
问题2:plugins/python/uwsgi_python.h:2:20: fatal error: Python.h: No such file or directory,原因是python命令默认
启动python2,一些东西无法用python2下载,需要用python3,所以干脆把ubuntu的python命令改为默认启动python3
参考链接:https://blog.csdn.net/luhu124541/article/details/81607137
4.在虚拟环境中下载uwsgi:pip3 install uwsgi -I --no-cache-dir
5.假设我的django项目名为mysite,则在mysite/目录下新建一个conf文件夹,然后再conf文件夹下新建两个文件,一个是mysite_nginx.conf文件,用于配置nginx,另外一个是uwsgi.ini,用于配置uwsgi
6.将django配置修改成生产环境:
DEBUG = False
ALLOWED_HOST = ['xx.xx.xx.xx', 'www.lxxxxx.xin'] #该配置项配置的是允许访问本网站的IP,“*”表示允许所有IP,如果项目部署到服务器上了,就填服务器的公网IP,如果部署的时候用了nginx,则该设置项不起作用
#开发模式用STATICFILES_DIRS,部署模式时用STATIC_ROOT
mysite/mysite/settings.py中设置STATIC_ROOT=os.path.join(BASE_DIR, 'static')
然后运行python manage.py collectstatic迁移项目的静态文件,
7.nginx配置:在mysite_nginx.conf中内容如下:
server {
listen 8000; #浏览器中输入的访问端口,需在阿里云上配置对应的安全组。
server_name xx.xx.xx.xx; #你的服务器公网ip
charset utf-8;
client_max_body_size 75M;
location /static {
#django项目的静态文件所在路径,需提前在settings.py中配置好
alias /home/project/Mysite/mysite/static;
}
location / {
uwsgi_pass 127.0.0.1:8002; #与uwsgi对接的端口,需与uwsgi.ini中的socket配置相同。
include /etc/nginx/uwsgi_params;
}
}
8.将mysite_nginx.conf软连接到/etc/nginx/sites-enabled/路径,但是我的Nginx14.2没有sites-enabled文件,
- vim /etc/nginx/nginx.conf
- 在 include /etc/nginx/conf.d/*.conf;语句下面一行添加: include /etc/nginx/sites-enabled/*.conf;
- 在/etc/nginx/目录下新建sites-enabled文件夹
- 将项目的nginx配置文件软链接到sites-enabled,用下面这条命令行
- sudo ln -s /home/project/Mysite/mysite/conf/mysite_nginx.conf /etc/nginx/sites-enabled/
9.配置uwsgi.ini:
[uwsgi]
chdir = /home/project/Mysite/mysite
module = mysite.wsgi:application
socket = 127.0.0.1:8002
master = true
processes = 4
daemonize = /home/project/Mysite/mysite/run.log
disable-logging = true
vacuum = true
10.启动nginx:/etc/init.d/nginx start
启动uwsgi:在mysite/conf/目录下:uwsgi uwsgi.ini
--------------------------------------------------------------
一、网站部署注意事项:
1、如果项目已经部署上线,需要修改nginx.conf的配置,那么需改之后需要
/etc/init.d/nginx restart或者/etc/init.d/nginx reload 才会生效(如果在
nginx.conf中的修改不影响uwsgi,则不需要重新uwsgi uwsg.ini),如果是項目第一次
上线,先用nohup ..... &命令在后台运行该项目,然后配置好conf文件,软链接到
/etc/nginx/site-enabled/目录下,最后再/etc/init.d/nginx reload即可将配置的conf文件
加载,在浏览器访问对应的域名就能显示网站内容。
restart是先stop再start,reload是重新加载配置文件,并检查conf文件的语法,
如果错误会重新使用上一次运行成功的配置,所以已近上线的系统建议使用reload
2、uwsgi uwsgi.ini命令是在虚拟环境中启动的,如果修改了Django项目之后,需要先
在虚拟环境下杀掉uwsgi,先查看uwsgi.ini中配置的uwsgi所占用的端口号,然后lsof -i:port会显示
占用该端口号的uwsgi进程号pid,然后再kill -9 pid 就可以杀掉之前的uwsgi,再uwsgi uwsgi.ini之后刚才的修改才会生效。
3、如果nginx启动了,但是浏览器显示502 Bad GateWay,那么可能就是在非虚拟环境中,把所
有uwsgi进程给杀掉了(uwsgi相当于网关),用source bin/activate 激活虚拟环境,然后虚拟环境下运行uwsgi uwsgi.ini即可
4、浏览器显示Internal Server Error,可能是先在非虚拟环境中把所有uwsgi进程给杀掉了,然后
又在非虚拟环境中启动了uwsgi uwsgi.ini, 解决办法:先在非虚拟环境中killall -9 uwsgi,此时浏
览器会显示Bad GateWay,然后再激活虚拟环境,uwsgi uwsgi.ini启动即可
5、如果采用独立部署+nginx部署的方式,启动nginx之后(nginx中proxy_pass中
配置的端口需要与beego的conf/app.conf文件中httpport配置的端口相同),在后台
不挂断运行beego:nohup bee run &;如果有错误,项目根目录下自动生成的nohub.out文件中
会有错误信息。
6、nginx二级域名配置时,不同项目都市listen 80, server_name + 不同项目对应的域名,
然后proxy_pass转发到项目接受的端口
7、nginx配置server_name时,如果想通过abc.com访问,那么配置为:
server_name abc.com;注意,(.abc.com可以匹配xx.abc.com)。
8、beego出现502 bad gateway,可能是app.conf中的httpport配置项与nginx的conf配置
文件中的转发端口不对应,也有可能是nginx启动了但是项目没正常启动。
二、域名和备案常识
1、主域名可以不用来访问网站,只用分级域名访问网站;
2、主域名备案后,二级域名不需要备案,二级域名访问的网站可以与主域名备案信息不同
3、不论用主域名还是二级域名来访问网站,都需要在网站底部加上备案号,并链接到工信部[http://www.beian.miit.gov.cn]
4、国内服务器,主域名需要备案,主域名备案后,二级域名不需要备案;国外的服务器主域名不需要备案。
5、带www的二级域名访问的网站内容需要与主域名保持一致,其他二级域名可以直接使用。
---------------------------------------------------------------
11.在浏览器中输入:<公网ip:8000>+django项目中的url就可访问了
最后
以上就是俊秀煎蛋为你收集整理的阿里云ubuntu16.04ECS+Nginx+uwsgi部署django项目的全部内容,希望文章能够帮你解决阿里云ubuntu16.04ECS+Nginx+uwsgi部署django项目所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复