djnago2 Gunicorn nginx 在ubuntu環境下部署 python3python
準備 一個能夠執行的django項目
一個能夠訪問的公網IP (能夠有域名,可是國內的須要註冊 或者繞開80端口用443端口 這個尚未試過) xshell軟件 鏈接本身的服務器主機 比那個網頁的舒服多了nginx
進入服務器git
建立用戶github
在 root 用戶下運行這條命令建立一個新用戶,hzj 是用戶名 由於我叫hzj,因此我取的用戶名是 hzjshell
選擇一個你喜歡的用戶名,不必定非得和個人相同數據庫
root@localhost:~# useradd -m -s /bin/bash hzjdjango
把新建立的用戶加入超級權限組ubuntu
root@localhost:~# usermod -a -G sudo hzjvim
爲新用戶設置密碼 注意在輸密碼的時候不會有字符顯示,不要覺得鍵盤壞了,正常輸入便可瀏覽器
root@localhost:~# passwd hzj
切換到建立的新用戶
root@localhost:~# su - hzj
切換成功,@符號前面已是新用戶名而不是 root 了
hzj@localhost:~$
若是有些命令沒法實現,多是權限不足 能夠加一個sudo
2.安裝python3和pip3 由於ubuntu默認python2 咱們所使用的環境是python3
sudo apt-get install git python3 python3-pip
安裝 虛擬環境 virtualenv
sudo pip3 install virtualenv
3.項目配置 這裏的文件夾目錄 我儘可能和django2.0官方文檔的文件夾目錄一致
mysite/settings.py
STATIC_URL = '/static/' 加入下面的配置 STATIC_ROOT = os.path.join(BASE_DIR, 'static') #指明瞭靜態文件的收集目錄,即項目根目錄(BASE_DIR)下的 static 文件夾。
mysite/settings.py
DEBUG = False#建議一開始仍是默認爲True 等你部署成功後,再去把他改爲True 若是你的程序出錯,訪問的時候會出現500內部服務器的問題,而在debug下你能夠清除的看到這些問題的緣由,
ALLOWED_HOSTS = ['*'] #容許訪問的域名列表 *表示全部均可訪問
mysite>pip freeze > plist.txt #這裏咱們將該項目的環境所有列在plist.txt文件下方便咱們以後搭建環境 注意個人django2.0使用pip安裝的,若是你使用的像Anconda之類的第三方軟件,那麼沒法在Ubuntu下自動安裝
$ vim settings.py ALLOWED_HOSTS = [''] # 能夠配置爲你的域名或者公網IP,寫是匹配所有均可以 ··· THEME = 'themes/default' STATIC_URL = '/static/' STATIC_ROOT = '../static_files/' ···
4.移動項目到ubuntu
咱們使用git 經過github上傳和下載
cd mysite
git init
git add .
git commit -m "zhushi"
git remote add origin https://github.com/Alpaca-H/DjangoTest3.git
git push -u origin master
複製代碼
5.ubuntu環境搭建
source env/bin/activate
pip install -r plist.txt
python manage.py collectstatic 收集靜態文件
python manage.py migrate 建立數據庫文件
pip install gunicorn 下載gunicorn
$ gunicorn mysite.wsgi:application -w 4 -b 0.0.0.0:8000啓動項目
$ gunicorn mysite.wsgi:application -b 0.0.0.0:8000
$ nohup gunicorn mysite.wsgi:application -w 4 -b 0.0.0.0:8000 & 後臺一直跑
複製代碼
6.nginx
$ sudo yum install nginx
$ cd /etc/nginx
$ sudo cat nginx.conf
複製代碼
這個時候咱們就能看到在配置中有這樣的一句話,
include /etc/nginx/conf.d/*.conf; 這個意思是他啓動的時候會去讀取conf.d下的配置文件,也就是咱們能夠在這個 /etc/nginx/con.d目錄下去寫配置文件,操做以下
$ cd /etc/nginx/conf.d
$ sudo touch nginx.conf
$ sudo vim nginx.conf
複製代碼
配置文件的內容以下:
/etc/nginx/conf.d/nginx.conf
server {
listen 80;
root /home/hzj/workspace/typeidea-env/; #配置虛擬環境的目錄
access_log /home/hzj/workspace/typeidea/log/access_log; #配置這個log文件夾
error_log /home/hzj/workspace/typeidea/log/error_log; #配置這個log文件夾
server_name www.hzj.top; # 配置域名
#處理靜態文件 /favicon.ico:
location /favicon.ico {
alias /home/hzj/typeidea/static_files/favicon.ico; # 若是沒,不用配置
}
#處理django的靜態文件
location /static/ {
alias /home/hzj/typeidea/static_files/; # 收集靜態資源的路徑
}
#處理請求轉發8000接口 若是你的gunicorn是其餘端口,請本身改
location / {
proxy_pass http://127.0.0.1:8000;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header Host $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
}
複製代碼
這樣咱們的nginx配置文件就能寫完了,可是若是你重啓的話,會發現一個問題,那就是權限,你會發現你啓動的文件,於你的配置文件權限不同,這會致使你沒法啓動,或者是其餘問題,咱們返回以前的/etc/nginx的目錄之下,把下面的用戶名改成本身的用戶名字,就能夠了:
/etc/nginx/nginx.conf
···
user hzj
···
複製代碼
固然寫完nginx的時候咱們能夠進入到本身寫的配置路徑下面,執行nginx -t看下所運行的狀態,或者第幾行發生到錯誤。而後咱們就能夠啓動nginx,在瀏覽器輸入本身的IP或者域名就成功
ps:1.若是發現啓動仍是沒法訪問,首先檢查一下防火牆,防火牆要開80端口,不會開能夠看這編Linux上防火牆的設置
2.去本身的服務器廠家的控制檯,查看本身是否放通了安全組,通常要放通80,若是要調試能夠順便把8000端口也放通,固然取決於本身實際需求
3.檢查本身的nginx的靜態路徑,反響代理的端口和IP,以及文件的權限問題