5.Django項目部署

文章僅供學習使用

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,以及文件的權限問題

相關文章
相關標籤/搜索