Ubuntu16.04使用nginx+uwsgi 部署Django项目
1.修改settings配置
DEBUG = False
ALLOWED_HOSTS = ['*']
2.收集项目静态文件
当Django运行在生产环境时,将不再提供静态文件的支持,需要将静态文件交给静态文件服务器。
我们需要收集项目中静态文件,并放到静态文件服务器中。
我们使用Nginx服务器作为静态文件服务器。
-
收集项目静态文件
-
配置收集静态文件存放的目录
# STATIC_ROOT = os.path.join(os.path.dirname(BASE_DIR), 'static') STATIC_ROOT='/home/zhao/python_django/static' # 收集到指定的文件夹,随便一个文件夹都行
-
执行收集静态文件命令
python manage.py collectstatic
-
-
安装Nginx:
上nginx官网:http://nginx.org/
点击右边的download
最下边的 :Linux packages for stable and mainline versions.
看到:Ubuntu,按照流程进行下载安装就行
安装好了就使用一下命令启动nginx# nginx文件路径: 使用 nginx -t (检查文件) # 首次启动 如果不行就带参文件路径 $ sudo nginx # 重启 $ sudo nginx -s reload # 停止 $ sudo nginx -s stop
-
部署Nginx服务器提供静态数据(使用sudo nginx -t 查看位置)
-
方法一:进入nginx的目录 找到nginx.conf 打开并且编辑:
user nginx; worker_processes 1; error_log /var/log/nginx/error.log warn; pid /var/run/nginx.pid; events { worker_connections 1024; } http { include /etc/nginx/mime.types; default_type application/octet-stream; log_format main '$remote_addr - $remote_user [$time_local] "$request" ' '$status $body_bytes_sent "$http_referer" ' '"$http_user_agent" "$http_x_forwarded_for"'; access_log /var/log/nginx/access.log main; sendfile on; #tcp_nopush on; keepalive_timeout 65; #gzip on; # include /etc/nginx/conf.d/*.conf; # include servers/*; # 加入这个server 一个server就是一个项目 server { listen 80; server_name www.diamon.cn; # 虚拟域名 location /static { alias /home/zhao/python_django/static; # 静态文件路径 } location / { uwsgi_pass 0.0.0.0:9999; # 与稍后的uwsgi配置一致 include uwsgi_params; } } }
-
方法二:在nginx.conf文件最后一行加上: include servers/*; 意思是会加载在servers文件里的所有配置文件.
进入servers目录新建配置文件
diaminds.conf
-
配置如下 一个server就是一个项目
server { listen 80; server_name www.diamon.cn; # 虚拟域名 location /static { alias /home/zhao/python_django/static; # 静态文件路径 } location / { uwsgi_pass 0.0.0.0:9999; # 与稍后的uwsgi配置一致 include uwsgi_params; } }
-
修改
/etc/hosts
文件, 新增如下配置 window的hosts在: windows/system32/drivers/etc/hosts127.0.0.1 www.diamon.cn
-
启动Nginx服务器
# 检查配置文件 如果说找不打文件就指定nginx的目录 $ sudo nginx -t # 首次启动 $ sudo /nginx # 重启 $ sudo nginx -s reload # 停止 $ sudo /nginx -s stop
-
uWSGI服务器配置
-
进入虚拟环境安装uwsgi包
pip3 install uwsgi
-
准备uwsgi服务器配置文件, 在项目根目录创建 uwsgi.ini
# uwsgi.ini [uwsgi] # 使用Nginx连接时使用,Django程序所在服务器地址 socket=0.0.0.0:9999 # 直接做web服务器使用,Django程序所在服务器地址 # http=127.0.0.1:9999 # 项目目录 chdir=/home/zhao/桌面/diamonds # 项目中wsgi.py文件的目录,相对于项目目录 wsgi-file=diamonds/wsgi.py # 进程数 processes=4 # 线程数 threads=2 # uwsgi服务器的角色 master=True # 存放进程编号的文件 pidfile=uwsgi.pid # 日志文件 daemonize=uwsgi.log # 虚拟环境路径 virtualenv=/home/zhao/.virtualenvs/diamonds
-
启动
uwsgi服务器
# 启动 $ uwsgi --ini uwsgi.ini 产看是否启动: ps -ef | grep uwsgi # 会看到指定进程的服务个数 # 关闭 $ uwsgi --stop uwsgi.pid
部署Nginx服务器反向代理(在上边以有,在这个只是为了说明)
- 修改Nginx服务器配置文件
server {
listen 80;
server_name www.diamon.cn;
......
location / {
uwsgi_pass 0.0.0.0:9999;
include uwsgi_params;
}
}
-
启动Nginx服务器
# 检查配置文件 $ sudo /usr/local/nginx/sbin/nginx -t # 重启 sudo /usr/local/nginx/sbin/nginx -s reload
所有配置都设置好了就重启检查nginx配置与启动nginx,启动uwsgi
sudo nginx -t
sudo nginx -s reload
# 进入项目跟目录启动uwsgi
uwsgi --ini uwsgi.ini
ps -ef | grep uwsgi # 查看是否启动了指定的进程数的uwsgi服务
如图: