由於項目緣由,學習了react,Django,完成react開發項目事後,打包(作好了代碼分割、壓縮)放入Django中,在本地運行速度很快,結果放到服務器中,雖然某些js文件很小(只有一百多kb),可是下載速度很是慢,須要3-6秒,這樣致使頁面加載速度很慢,經過查詢,經過gzip壓縮,可使項目js文件進行進一步壓縮,極大的加快項目運行速度。現將完整的流程分享以下:javascript
1、確保項目在服務器中運行成功(暫不作任何處理):css
好比我購買騰訊雲服務,在服務器中啓動Django項目,python manage.py runserver 0.0.0.0:80 (騰訊雲服務公網ip會映射到此地址),在本機使用公網ip確保能訪問html
2、在centos中安裝uwsgijava
直接使用如下命令完成安裝:python
pip install uwsgi
1.配置uwsgi:在Django項目的根目錄下,新建兩個文件,uwsgi.ini( 配置文件)和run.log(日誌文件)react
2.在uwsgi.ini配置以下:nginx
[uwsgi] chdir = /home/myweb ----->項目根目錄 module = myweb.wsgi:application ----->項目myweb/myweb/wsgi.py socket = 127.0.0.1:8000 ----->nginx與uwsgi通訊端口,與nginx配置文件中一直,下面會說 master = true ----->容許主線程存在(true) processes=4 ----->開啓的進程數量(這裏是開啓4個進程) max-requests=5000 ----->最大請求數 daemonize = /home/myweb/run.log ----->上面建立的日誌文件 disable-logging = true ----->表示不記錄正常信息,只記錄錯誤信息 wsgi-file = /home/myweb/myweb/wsgi.py ----->項目myweb/myweb/wsgi.py pidfile=/home/myweb/uwsgi.pid ----->uWSGI運行後自動生成的,裏面記錄了uWSGI的進程號,能夠用來重啓uWSGI vacuum=true ----->當服務器退出的時候自動清理環境,刪除unix socket文件和pid文件
4.在項目根目錄中運行如下命令進行static文件收集,這個提供ngnix靜態文件c++
python manage.py collectstatic
3.uwsgi.ini操做web
啓動:uwsgi --ini uwsgi.ini 中止:uwsgi --stop uwsgi.pid 重啓:uwsgi --reload uwsgi.pid
3、centos安裝nginxcentos
安裝依賴
1.yum install gcc-c++
2.yum install pcre pcre-devel
3.yum install zlib zlib-devel
4.yum install openssl openssl--devel
下載nginx
wget http://nginx.org/download/nginx-1.12.0.tar.gz
解壓縮
tar -zxvf nginx-1.12.0.tar.gz
進入目錄
cd nginx-1.12.0
安裝
./configure
make
make install
centos默認安裝路徑:/usr/local/nginx
進入此目錄:cd /usr/local/nginx/sbin
輸入命令啓動nginx(測試是否安裝成功):./nginx
若是成功會顯示如下界面:
進行nginx配置
cd /usr/local/nginx/conf
vi nginx.conf進行編輯
插入:
gzip on; ----->啓動gzip壓縮 gzip_min_length 1k; ----->最小壓縮爲1k gzip_buffers 4 16k; ----->以16k爲單位,按照原始數據大小以16k爲單位的4倍申請內存 #gzip_http_version 1.0; ----->識別http協議的版本,早起瀏覽器可能不支持gzip自解壓,用戶會看到亂碼 gzip_comp_level 4; ----->等級1-9 最小的壓縮最快 可是消耗cpu gzip_types text/plain application/javascript application/x-javascript text/css text/javascript image/jpeg image/gif image/png; ------>壓縮格式,這個很重要,只有對應格式才壓縮 gzip_disable "MSIE [1-6]\."; ----->指定哪些不須要gzip壓縮的瀏覽器 gzip_proxied any; ------>nginx作爲反向代理時啓用,off(關閉全部代理結果的數據的壓縮),expired(啓用壓縮,若是header頭中包括"Expires"頭信息),no-cache(啓用壓縮,header頭中包含"Cache-Control:no-cache"),no-store(啓用壓縮,header頭中包含"Cache-Control:no-store"),private(啓用壓縮,header頭中包含"Cache-Control:private"),no_last_modefied(啓用壓縮,header頭中不包含"Last-Modified"),no_etag(啓用壓縮,若是header頭中不包含"Etag"頭信息),auth(啓用壓縮,若是header頭中包含"Authorization"頭信息)
gzip_vary on; ------>啓用應答頭"Vary: Accept-Encoding"
繼續編輯在server裏編輯
charset utf-8; ----->設置字符編碼 location / { uwsgi_pass 127.0.0.1:8000; ----->對應uwsgi配置的端口 include /usr/local/nginx/conf/uwsgi_params; ------conf目錄下 } location /static{ ----->靜態文件 alias /home/myweb/static; }
nginx操做:
啓動:在sbin目錄 ./nginx -c /usr/local/nginx/conf/nginx.conf 中止:查看進程 ps -ef|grep nginx 殺死進程 kill -TERM 2132 重啓:./nginx -s reload
四:啓動uwsgi、nginx服務,項目就運行成功了,以下:
參考文章:
https://blog.csdn.net/xing851483876/article/details/84306953
http://www.javashuo.com/article/p-huxiyzib-cc.html