利用nginx +uwsgi完成django项目上线,系统环境采用ubantu系统, python3,django==1.1
1. 静态文件
当Django运行在生产模式时,将不再提供静态文件的支持,需要将静态文件交给静态文件服务器,Django提供了收集静态文件的方法。先在配置文件中配置收集之后存放的目录.
在settings文件中添加静态文件目录:
TATIC_ROOT = os.path.join(os.path.dirname(os.path.dirname(BASE_DIR)), 'front_end_pc/static')
然后执行收集命令
python manage.py collectstatic
安装nginx服务器
sudo apt install nginx
打开Nginx的配置文件
sudo vim /etc/nginx/sites-available/default
在server部分中配置
server { listen 80; server_name www.aaaa.com; location / { root /home/python/Desktop/front_end_pc; index index.html index.htm; } }
重启Nginx服务器
sudo service nginx restart
2. 动态接口
修改配置文件settings中
ALLOWED_HOSTS = [..., 'www.aaaa.com'] CORS_ORIGIN_WHITELIST = ( '127.0.0.1:8080', 'localhost:8080', 'www.aaaa.com:8080', 'api.aaaa.com:8000', )
安装uwsgi服务器
pip install uwsgi
在项目目录/meiduo_mall 下创建uwsgi配置文件 uwsgi.ini
[uwsgi] #使用nginx连接时使用,Django程序所在服务器地址 socket=127.0.0.1:8001 #直接做web服务器使用,Django程序所在服务器地址 #http=127.0.0.1:8001 #项目目录 chdir=/Users/delron/Desktop/项目目录 #项目中wsgi.py文件的目录,相对于项目目录 wsgi-file=项目下/wsgi.py # 进程数 processes=4 # 线程数 threads=2 # uwsgi服务器的角色 master=True # 存放进程编号的文件 pidfile=uwsgi.pid # 日志文件,因为uwsgi可以脱离终端在后台运行 daemonize=uwsgi.log # 指定依赖的虚拟环境 virtualenv=/Users/delron/.virtualenv/env
启动uwsgi服务器
uwsgi --ini uwsgi.ini
修改Nginx配置文件,让Nginx接收到请求后转发给uwsgi服务器
upstream xiangmu{ server 127.0.0.1:8001; # 此处为uwsgi运行的ip地址和端口号 # 如果有多台服务器,可以在此处继续添加服务器地址 } server { listen 8000; server_name api.aaaa.com; location / { include uwsgi_params; uwsgi_pass xiangmu; } }
重启nginx
sudo service nginx restart
部署完成启动项目
进入uwsgi.ini文件目录中:
uwsgi --ini uwsgi.ini
成功!!