今天介紹一下如何在ubuntu18.04中為django專案搭建nginx+gunicorn環境。
具體步驟如下:
1.安裝gunicorn: pip install gunicorn
2.使用gunicorn啟動django專案: gunicorn 專案名稱.wsgi:application –bind 127.0.0.1:8000
3.安裝並配置nginx:
編譯安裝時,在安裝nginx前,需要先安裝其他幾個軟體包,具體安裝如下:
1)安裝openssl:
wget https://www.openssl.org/source/openssl-1.1.0e.tar.gz
tar zxvf openssl-1.1.0e.tar.gz
解壓完成後,進入openssl所在目錄,依次執行./config、make和make install進行安裝;
2)安裝zlib:
wget https://downloads.sourceforge.net/project/libpng/zlib/1.2.11/zlib-1.2.11.tar.gz
tar zxvf zlib-1.2.11.tar.gz
解壓完成後,進入zlib所在目錄,依次執行./configure、make和make install進行安裝;
3)安裝pcre:
wget https://ftp.pcre.org/pub/pcre/pcre-8.40.tar.gz
tar zxvf pcre-8.40.tar.gz
解壓完成後,進入pcre所在目錄,依次執行./configure、make和make install進行安裝;
當然,以上軟體包還可以下載並安裝其他版本。
4)安裝nginx,可以點選 http://nginx.org/en/download…. 來下載你需要的nginx版本。下載完成後,使用tar命令解壓: tar zxvf nginx-1.14.0.tar.gz
解壓完成後進入nginx目錄,執行以下命令進行配置:
./configure --with-http_ssl_module --with-cc-opt="-Wno-error" --with-pcre=/home/wyzane/install_package/pcre-8.40 --with-zlib=/home/wyzane/install_package/zlib-1.2.11 --with-openssl=/home/wyzane/install_package/openssl-1.1.0e
以上配置中,我將軟體包都安裝在了/home/wyzane/install_package/目錄下,也可以安裝在其他目錄中。
執行以上配置後,我在編譯(make)時遇到了一個錯誤,錯誤資訊大致如下:
src/core/ngx_murmurhash.c:37:11: error: this statement may fall through [-Werror=implicit-fallthrough
後來在 https://trac.nginx.org/nginx/ 中找到了解決辦法,即在執行./configure時加上 –with-cc-opt=”-Wno-error” 這個引數。
以後再安裝nginx遇到問題時,都可以取上面那個網站尋找解決方案。
執行完./configure後,再執行make和make install進行編譯和安裝。
安裝完成後,即可啟動ngin並訪問nginx首頁驗證是否安裝成功。
4.配置nginx: 進入nginx.conf檔案中修改配置
配置下面的部分即可:
server {
listen 80;
server_name 192.168.114.113;
#charset koi8-r;
#access_log logs/host.access.log main;
location / {
proxy_pass http://192.168.114.113:8000;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
location /static {
alias /home/wyzane/pyprojects/test/test/static;
}
}
主要配置listen,server_name,location / 和location /static
listen是需要監聽的埠,server_name是gunicorn啟動後伺服器的ip,location /指定根路徑,location /static指定靜態檔案路徑
5.配置完nginx後,蒐集靜態檔案: python manage.py collectstatic
6.啟動nginx和gunicorn,即可訪問專案。