因爲用的新版本系統,和舊的稍有差異,在網上搜了不少相關資料,搞了三天終於搞好在Ubuntu16.04下的部署,接下來就詳細寫寫步驟以及其中遇到的問題。前提是安裝有虛擬環境pyenv+virtualenv。html
1、安裝uwsgipython
1. 在虛擬環境下安裝uwsginginx
1 # 啓動環境 2 pyenv activate your_env_name
3 pip install uwsgi
2. 測試uwsgi,建立test.pyweb
def application(env, start_response): start_response('200 OK', [('Content-Type','text/html')]) return [b"Hello uwsgi!"]
3. uwsgi運行該文件django
當時用的命令: uwsgi --http :8088 --wsgi-file test.py, 終端提示沒有--wsgi-file選項,一直不成功,後來改用 --http-socket能夠了。可是如今試了--http居然也能夠運行了,居然不知道當初爲何不行。app
uwsgi --http-socket :8088 --wsgi-file test.py
2、安裝nginxwebapp
1.nginx不須要在虛擬環境下裝,在終端直接用命令安裝socket
sudo apt-get install nginx
2.nginx啓動與關閉命令測試
cln@Aspire:~$ service nginx start #啓動 cln@Aspire:~$ service nginx stop #關閉 cln@Aspire:~$ service nginx restart #重啓
nginx -t # 檢查配置文件是否有語法錯誤
cln@Aspire:~$ nginx -V #查看nginx版本 nginx version: nginx/1.10.0 (Ubuntu) built with OpenSSL 1.0.2g-fips 1 Mar 2016 TLS SNI support enabled
3.修改nginx默認端口網站
nginx1.10.0版本 配置文件有/etc/nginx/nginx.conf, /etc/nginx/conf.d/* 和 /etc/nginx/sites-available下的default, nginx.conf包含default、conf.d裏的配置,端口號在default文件裏修改。
打開nginx文件夾下default文件,修改其端口號爲88,以下,端口已改好
cln@Aspire:~$ sudo gedit /etc/nginx/sites-available/default
4.重啓nginx服務,訪問http://127.0.0.1:8088, 會打開nginx歡迎welcome頁面。
3、部署django+uwsgi+nginx
1. 在你的django項目文件夾下創建 yourProjectName_uwsgi.ini文件,具體的參數配置以下:最重要的是配置pythonpath,它指定django所在的位置,當時沒有配置準確這一點,一直報錯no moudle django,花了很長時間也不知道爲何,後來查了不少資料後,才知道配置pythonpath。主要的參數有註釋。
當時 socket = :8088, 我寫的是http-socket = :8088, 一直報錯 502 Bad Gateway,花了很長時間後才知道把這句改爲socket。
2. 以前提到nginx.conf配置所包含的配置,那就能夠在/etc/nginx/conf.d下建一個nginx.conf來關聯uwsgi
cln@Aspire:~$ sudo vi /etc/nginx/conf.d/nginx.conf
在裏面添加以下內容:
3.重啓nginx服務,激活虛擬環境,運行.ini文件
# 激活虛擬環境 cln@Aspire:~/PycharmProjects/webapp$ pyenv activate webenv # 在.ini文件的父目錄下運行命令 (webenv) cln@Aspire:~/PycharmProjects/webapp$ uwsgi --ini web_uwsgi.ini
以下所示,表示成功。
訪問http://127.0.0.1:88, 即可以經過nginx訪問到你的django項目的網站。
總結: 一點粗枝大葉,就會讓你花費不少時間去找問題所在,如今我寫下本身遇到的問題以及解決方法,但願能幫助遇到相似問題的你。