1. 靜態文件html
當Django運行在生產模式時,將再也不提供靜態文件的支持,須要將靜態文件交給靜態文件服務器。python
咱們先收集全部靜態文件。項目中的靜態文件除了咱們使用的front_end_pc中以外,django自己還有本身的靜態文件,若是rest_framework、xadmin、admin、ckeditor等。咱們須要收集這些靜態文件,集中一塊兒放到靜態文件服務器中。nginx
咱們要將收集的靜態文件放到front_end_pc目錄下的static目錄中,因此先建立目錄static。web
Django提供了收集靜態文件的方法。先在配置文件中配置收集以後存放的目錄shell
# 收集靜態文件 STATIC_ROOT = os.path.join(os.path.dirname(os.path.dirname(BASE_DIR)), 'front_end_pc/static')
而後執行收集命令django
python manage.py collectstatic
咱們使用Nginx服務器做爲靜態文件服務器vim
打開Nginx的配置文件api
sudo vim /usr/local/nginx/conf/nginx.conf
在server部分中配置服務器
server {
listen 80;
server_name www.meiduo.site;
location / {
root /home/python/Desktop/front_end_pc;
index index.html index.htm;
}
# 餘下省略
}
重啓Nginx服務器socket
sudo /usr/local/nginx/sbin/nginx -s reload
首次啓動nginx服務器
sudo /usr/local/nginx/sbin/nginx中止nginx服務器
sudo /usr/local/nginx/sbin/nginx -s stop
在項目中複製開發配置文件dev.py 到生產配置prod.py
修改配置文件prod.py中
DEBUG = True
ALLOWED_HOSTS = [..., 'www.meiduo.site'] # 添加www.meiduo.site
CORS_ORIGIN_WHITELIST = (
'127.0.0.1:8080',
'localhost:8080',
'www.meiduo.site:8080',
'api.meiduo.site:8000',
'www.meiduo.site', # 添加
)
修改wsgi.py文件
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "meiduo_mall.settings.prod")
django的程序一般使用uwsgi服務器來運行
安裝uwsgi
pip install uwsgi
在項目目錄/meiduo_mall 下建立uwsgi配置文件 uwsgi.ini
[uwsgi] #使用nginx鏈接時使用,Django程序所在服務器地址 socket=10.211.55.2:8001 #直接作web服務器使用,Django程序所在服務器地址 #http=10.211.55.2:8001 #項目目錄 chdir=/Users/delron/Desktop/meiduo/meiduo_mall #項目中wsgi.py文件的目錄,相對於項目目錄 wsgi-file=meiduo_mall/wsgi.py # 進程數 processes=4 # 線程數 threads=2 # uwsgi服務器的角色 master=True # 存放進程編號的文件 pidfile=uwsgi.pid # 日誌文件,由於uwsgi能夠脫離終端在後臺運行,日誌看不見。咱們之前的runserver是依賴終端的 daemonize=uwsgi.log # 指定依賴的虛擬環境 virtualenv=/Users/delron/.virtualenv/meiduo
啓動uwsgi服務器
uwsgi --ini uwsgi.ini
注意若是想要中止服務器,除了可使用kill命令以外,還能夠經過
uwsgi --stop uwsgi.pid
修改Nginx配置文件,讓Nginx接收到請求後轉發給uwsgi服務器
upstream meiduo {
server 10.211.55.2:8001; # 此處爲uwsgi運行的ip地址和端口號
# 若是有多臺服務器,能夠在此處繼續添加服務器地址
}
#gzip on;
server {
listen 8000;
server_name api.meiduo.site;
location / {
include uwsgi_params;
uwsgi_pass meiduo;
}
}
server {
listen 80;
server_name www.meiduo.site;
#charset koi8-r;
#access_log logs/host.access.log main;
location /xadmin {
include uwsgi_params;
uwsgi_pass meiduo;
}
location /ckeditor {
include uwsgi_params;
uwsgi_pass meiduo;
}
location / {
root /home/python/Desktop/front_end_pc;
index index.html index.htm;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
}
重啓nginx
sudo /usr/local/nginx/sbin/nginx -s reload