背景:今天又进行了一次项目部署(第N+1次项目部署了),所以决定整理出一份完整的材料,下次直接CTRL+C、CTRL+V就OK了。
一、Django项目配置
项目创建就不多说了,并且个人建议创建虚拟环境。
更改setting.py文件
DEBUG = False
ALLOW_HOSTS = ['*'] #表示可以访问服务器的ip,*表示所有
二、uWSGI配置
-
安装uWSGI
pip install uwsgi
-
在项目目录下新建
uwsgi.ini
用于填写配置文件[uwsgi] socket = 127.0.0.1:8080 # 和nginx通信的端口,直接做web服务器时把socket换成http chdir = /home/nginx_test # 项目路径(我的测试项目叫test) wsgi-file = /home/nginx_test/nginx_test/wsgi.py # wsgi.py文件的路径 processes = 4 threads = 2 master = true pidfile = uwsgi.pid # pid文件,用于脚本启动、停止进程 daemonize = uswgi.log # 日志文件
-
启动uWSGI
启动前注意:
- 启动前最好使用
python manage.py runserver
先测试启动一下,确保没有任何问题 - uwsgi的日志会在
uwsgi.ini
的相对路径下生成,如果有错误可以在此日志(uwsgi.log)里进行查看
启动:uwsgi --ini uwsgi.ini 停止:uwsgi --stop uwsgi.pid 重启:uwsgi --reload uwsgi.pid
如下表示启动成功:
(venv) [root@localhost nginx_test]# uwsgi --ini uwsgi.ini [uWSGI] getting INI configuration from uwsgi.ini (venv) [root@localhost nginx_test]#
- 启动前最好使用
三、Nginx配置
-
安装Nginx
我下载的是nginx-1.9.9,其他的请访问:http://nginx.org/download/
cd /home/ # 找一个目录下载 Nginx yum -y install gcc gcc-c++ make libtool zlib zlib-devel openssl openssl-devel pcre pcre-devel # 安装依赖包 wget http://nginx.org/download/nginx-1.9.9.tar.gz # 下载源码包 tar -zxf nginx-1.9.9.tar.gz # 解压源码包 cd nginx-1.9.9/ # 进入目录 ./configure --prefix=/usr/local/nginx # 安装路径为/usr/local/nginx make && make install # 编译安装
-
启动Nginx
/usr/local/nginx/sbin/nginx # 启动 /usr/local/nginx/sbin/nginx -s stop # 停止 /usr/local/nginx/sbin/nginx -s reload # 重启
没有任何提示说明启动成功
启动后在浏览器上输入虚拟机或服务器的IP测试一下,下图说明Nginx启动成功:如果无法访问可能是防火墙的问题:
关闭防火墙:systemctl stop firewalld.service
禁止防火墙开机自启动:systemctl disable firewalld.service -
配置nginx.conf
打开/usr/local/nginx/conf/nginx.conf
文件,按照下列各式修改或者添加user root; #在文件的开头加上 http { ...... server { listen 80; #需要监控的端口 server_name localhost; location / { include uwsgi_params; uwsgi_pass 127.0.0.1:8080; #与uwsgi中ip:端口相同 uwsgi_send_timeout 600; } #静态文件 location /static { alias /home/nginx_test/static/; #静态文件路径 } } ...... }
修改后的样子(文字太多,没截全,红框为修改的内容):
-
重启Nginx
/usr/local/nginx/sbin/nginx # 启动 /usr/local/nginx/sbin/nginx -s stop # 停止 /usr/local/nginx/sbin/nginx -s reload # 重启
-
测试
80端口可以忽略不写
urls.py:
views.py
四、配置完成报错后如何排查
- ip是否正确
- 端口是否正确(Nginx配置文件中设置的:listen 80)
- Nginx和uwsgi连接是否正确(nginx.conf和uwsgi.ini中连接的ip端口是否一致)
- 项目是否可启动(使用
python manage.py runserver
测试)