sudo apt install nginx
安装完毕后,Ubuntu终端中,输入nginx -v 显示如下:
nginx version: nginx/1.14.0 (Ubuntu)
安装完成后nginx就开启了,默认会占用80端口,可以输入命令访问一下:curl 127.0.0.1,会出现如下的欢迎界面的前端代码
注意:nginx配置只要修改,就需要进行重启,否则配置不生效
1,修改nginx的配置文件 /etc/nginx/sites-enabled/default
使用sudo vim修改该文件,命令:
sudo vim /etc/nginx/sites-enabled/default
by the way,我这里因为云服务器中的80端口没有开,所以在自己电脑上无法访问,所以只能把nginx的默认端口更换成8000,如下:将两行listen后的端口改成了8000
2,找到location,把其中的 try_files $uri $uri/ =404; 给注释掉
3,手动添加以下两行(记得保持缩进都对齐):
格式为:配置名+空格+对应值+分号
uwsgi_pass 127.0.0.1:8001;
include /etc/nginx/uwsgi_params;
附:uwsgi_pass后面的ip要和下面将要提到的uwsgi中的socket保持一致,否则无法重定向到uwsgi协议(注意这里的ip端口不要和listen监听的端口一样,否则会有各种端口占用问题,我这里也是为了避免一样才用的8001端口)
添加完后应是这样的:
4,保存退出;
重启nginx,命令如下:
sudo /etc/init.d/nginx restart
重启后如果结果显示的是【ok】的话,说明没有问题,可以用命令检查配置文件的语法是否有问题:sudo nginx -t 。如果是以下结果说明没有问题
如果重启nginx报以下错误:
nginx: [error] open() “/run/nginx.pid” failed (2: No such file or directory)
可能是端口被占用了,输入命令:netstat -tnlp,查看一下端口使用情况,kill对应的端口进程即可。
接下来就是修改uwsgi的启动模式:
(建议提前部署好uWSGI,没有部署的小伙伴请移步:Django部署uwsgi)
nginx负责接收请求,并把请求转发给后面的uWSGI
此模式下,uWSGI需要以socket模式启动(
注释掉http,增加socket,注释掉static-map。注意此socket需要与上面nginx配置文件中uwsgi_pass保持一致)
样例:
修改完后,也需要重启一下uwsgi
# 进入到同名项目文件夹下
sudo uwsgi --stop uwsgi.pid
sudo uwsgi --ini uwsgi.ini
如果遇到uwsgi正在运行的线程ID和uwsgi.pid中的线程ID不一致的话,可以直接kill全部uwsgi ini进程 :killall -s INT uwsgi,然后再用 uwsgi --ini uwsgi.ini 重新启动新的uwsgi。
重启后,查看一下uwsgi进程:ps -ef | grep uwsgi,结果像下面一样有两个进程就没错了。http模式的话是三个,而socket模式是两个
此时,nginx监听的是8000,如果要测试效果的话,在终端输入curl 127.0.0.1:8000,会得到一些前端代码,而在外部Windows中的浏览器上输入此服务器的IP地址+8000端口,就会获得具体页面了 以上完成后,配置基本上就完成了
1,访问127.0.0.1:8000地址,502响应
502响应代表nginx反向代理配置成功,但是对应的uWSGI未启动
2,访问127.0.0.1:8000/url 404响应
以上完成后还需要配置nginx静态文件,不然访问的网址无法加载静态文件
1,创建新路径:主要存放Django所有静态文件 如:/home/wanghuimeng/python_SFTP/django_object/zy_ds_files/zyds_static/
2,在Django settings.py中添加配置
STATIC_ROOT = '/home/wanghuimeng/python_SFTP/django_object/zy_ds_files/zyds_static/static'
# 注意 此配置路径为 存放所有正式环境中需要的静态文件
3,进入项目,执行 python manage.py collectstatic 执行该命令后,Django将项目的所有静态文件复制到 STATIC_ROOT 中,包括Django内建的静态文件
执行完后会有类似这样的结果:
静态文件copy完成后,我们需要告诉nginx什么样的请求是静态资源请求以及该请求来了之后nginx该怎么处理。
"""
file : /etc/nginx/sites-enabled/default
新添加location /static 路由配置,重定向到指定的 第一步创建的路径即可
"""
server {
...
location /static {
# root 第一步创建文件夹的绝对路径,如:
root /home/wanghuimeng/python_SFTP/django_object/zy_ds_files/zyds_static
}
}
然后保存退出,重启nginx,然后访问服务器网址,就可以看到加载静态文件后的网页了。
记住,只要有静态文件的添加,就要反复的执行python manage.py collectstatic来同步静态文件
在访问不存在的页面时,手动返回一个好看的报错页面:
首先,settings.py中的DEBUG必须为False,然后在模板文件夹内添加 404.html 模板,
当视图触发Http404异常时将会被显示,也就是说只要报404,它就会显示这个页面
此处省略一百字