利用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
成功!!