nginx项目部署
1、概念
1、Django项目(Web应用)
2、web服务
1、nginx
2、Apache
LNMP -> Linux Nginx MySQL Python/PHP/Perl
LAMP -> Linux Apache MySQL Python/PHP/Perl
3、uwsgi
是WEB服务器和WEB框架之间一种简单而通用的接口
2、单项目部署(nginx+uwsgi+Django)
1、确保django项目能够运行
2、安装nginx
1、安装:sudo pip3 install nginx
2、启动:sudo /etc/init.d/nginx restart
3、验证:127.0.0.1:80
3、安装uwsgi
1、安装:sudo pip3 install uwsgi
2、验证(用uwsgi直接启动django项目)
uwsgi --http :9998 --chdir /home/tarena/myproject/fruit/ --module fruit.wsgi
3、再使用配置文件测试
[uwsgi] #套接字方式的IP地址:端口号(此模式需要有nginx) # socket = 0.0.0.0:8181 # http通信方式的IP地址:端口号 http = 0.0.0.0:8181 # 项目当前工作目录 chdir = /code # 项目中wsgi.py文件的目录,相对于当前工作目录 wsgi-file = demo/wsgi.py # 进程数(与cp核数取最小值) processes = 4 # 线程数(不是越多越好) thread = 2 # 进程文件 pidfile=uwsgi.pid # 后台启动时日志存放的位置 daemonize=uwsgi.log # 开启主进程管理模式(kill 进程后会自动重启) master=true # 启动uwsgi 进入到uwsgi配置文件所在目录 # uwsgi --ini uwsgi.ini # 停止uwsgi 进入到uwsgi配置文件所在目录 # uwsgi --stop uwsgi.pid
4、部署
1、配置uwsgi(配置文件)
1、mkdir uwsgi
2、cd /home/tarena/uwsgi
3、vi fruit_uwsgi.ini
1、设置和nginx通信的端口
socket = 127.0.0.1:8001
2、项目路径
chdir = /home/tarena/myproject/fruit
3、wsgi.py路径
wsgi-file = fruit/wsgi.py
4、进程数
processes = 4
5、线程数
thread = 2
6、本项目占用uwsgi端口
stats = 127.0.0.1:8081
2、配置nginx(配置文件)
1、sudo -i
2、cd /etc/nginx/sites-enabled/
3、vi project_nginx.conf
server{
listen 8201;#浏览器访问项目的端口
server_name fruit.com;
charset utf-8;
client_max_body_size 75M;
location /static{
alias /home/tarena/myproject/fruit/static
}
# 和uwsgi进行通信,1、nginx下uwsgi_params文件 2,端口
location /{
include uwsgi_params;
uwsgi_pass 127.0.0.1:8001;
}
}
4、拷贝uwsgi_params文件到项目目录
sudo cp /etc/nginx/uwsgi_params /home/tarena/myproject/fruit
5、重启nginx服务
sudo /etc/init.d/nginx restart
3、收集静态文件
1、settings.py文件,添加路径
STATIC_ROOT = '/home/tarena/myproject/fruit/static/'
2、收集静态文件
python3 manage.py collectstatic
4、uwsgi启动项目
uwsgi --ini fruit_uwsgi.ini
3、多项目部署
1、uwsgi:每个项目需要单独创建uwsgi配置文件,选用不同端口
2、nginx配置文件,1个就可以,添加server{}
项目2:个人博客
浏览器访问端口:8202 ,listen 8202
uwsgi和nginx通信端口:8002,socket=127.0.0.1:8002
uwsgi占用端口:8082
4、访问流程