Ubuntu系統搭建django+nginx+uwsgi

 

 

1. 在開發機上的準備工做

  1. 確認項目沒有bug。
  2. pip freeze > requirements.txt將當前環境的包導出到requirements.txt文件中,方便在部署的時候安裝。
  3. 將項目上傳到服務器上的/srv目錄下。這裏以git的形式爲例,打開終端,依次輸入以下命令
    • git init
    • git remote add origin xxx.git
    • git add .
    • git commit -m 'first commit'
    • git pull origin master --allow-unrelated-histories
    • git push origin master

2. 在服務器上的準備工做

  1. 安裝好項目用到的Pythonpython

    • sudo apt install python
    • sudo apt install python-pip
    • pip install --upgrade pip
  2. 安裝virtualenv以及virutalenvwrapper,並建立虛擬環境。mysql

    • pip install virtualenvnginx

    • pip install virtualenvwrappergit

    • sudo apt install vimweb

    • vim ~/.bashrc 進入文件中,填入如下兩行代碼:sql

      export WORKON_HOME=$HOME/.virtualenvs source /usr/local/bin/virtualenvwrapper.sh 
    • source ~/.bashrc數據庫

  3. 安裝gitdjango

    sudo apt install git
  4. 爲了方便XShell或者CRT鏈接服務器,建議安裝OpenSSHvim

    sudo apt install openssh-server openssh-client
    service ssh restart
  5. 安裝MySQL服務器和客戶端:瀏覽器

    sudo apt install mysql-server mysql-client
    sudo apt-get install libmysqld-dev
  6. 進入虛擬環境中,而後進入到項目所在目錄,執行命令:pip install -r requirements.txt,安裝好相應的包。

  7. mysql數據庫中,建立相應的數據庫。

  8. 執行python manage.py migrate命令,將遷移文件,映射到數據庫中,建立相應的表。

  9. 執行python manage.py runserver 0.0.0.0:8000,而後在你本身電腦上,在瀏覽器中輸入http://你的服務器的ip地址:8000/,訪問下網站全部頁 面,確保全部頁面都沒有錯誤。

  10. 設置ALLOW_HOST爲你的域名,以及ip地址。

  11. 設置DEBUG=False,避免若是你的網站產生錯誤,而將錯誤信息暴漏給用戶。

  12. 收集靜態文件:python manage.py collectstatic

3.安裝uwsgi

  1. uwsgi是一個應用服務器,非靜態文件的網絡請求就必須經過他完成,他也能夠充當靜態文件服務器,但不是他的強項。uwsgi是使用python編寫的,所以經過pip install uwsgi就能夠了。(uwsgi必須安裝在系統級別的Python環境中,不要安裝到虛擬環境中)。
  2. 使用命令uwsgi --http :8000 --module test.wsgi --vritualenv=/root/.virtualenvs/django-env-py36。用uwsgi啓動項目,若是可以在瀏覽器中訪問到這個頁面,說明uwsgi能夠加載項目了。

4.編寫uwsgi配置文件,使用配置文件啓動uwsgi

在項目的路徑下面,建立一個文件叫作djangotest.ini的文件,而後填寫如下代碼:

[uwsgi] # Django相關的配置 # 必須所有爲絕對路徑 # 項目的路徑 chdir=/srv/djangotest # Django的wsgi文件 module=djangotest.wsgi # Python虛擬環境的路徑 home=/root/.virtualenvs/django-env-py36 # 進程相關的設置 # 主進程 master=true # 最大數量的工做進程 processes=10 # socket文件路徑,絕對路徑 socket=/srv/djangotest/djangotest.sock # 設置socket的權限 chmod-socket=666 # 退出的時候是否清理環境 vacuum=true 

而後使用命令uwsgi --ini djangotest.ini,看下是否還能啓動這個項目。

5. 安裝nginx

  1. nginx是一個web服務器。用來加載靜態文件和接收http請求的。經過命令sudo apt install nginx便可安裝。
  2. nginx經常使用命令:
    • 啓動nginx:service nginx start
    • 關閉nginx:service nginx stop
    • 重啓nginx:service nginx restart

6. 收集靜態文件

靜態文件應該讓nginx來服務,而不是讓django來作。首先確保你的settings.py文件中有一個STATIC_ROOT配置,這個配置應該指定你的靜態文件要放在哪一個目錄下。那麼咱們能夠執行如下命令:python manage.py collectstatic來收集全部靜態文件,將這些靜態文件放在指定的目錄下。

7. 編寫nginx配置文件:

/etc/nginx/conf.d目錄下,新建一個文件,叫作djangotest.conf,而後將如下代碼粘貼進去:

upstream djangotest { server unix:///srv/djangotest/djangotest.sock; } # 配置服務器 server { # 監聽的端口號 listen 80; # 域名 server_name 192.168.0.101; charset utf-8; # 最大的文件上傳尺寸 client_max_body_size 75M; # 靜態文件訪問的url location /static { # 靜態文件地址 alias /srv/djangotest/static_dist; } # 最後,發送全部非靜態文件請求到django服務器 location / { uwsgi_pass djangotest; # uwsgi_params文件地址 include /etc/nginx/uwsgi_params; } } 

寫完配置文件後,爲了測試配置文件是否設置成功,運行命令:service nginx configtest,若是不報錯,說明成功。每次修改完了配置文件,都要記得運行service nginx restart

8. 使用supervisor配置

讓supervisor管理uwsgi,能夠在uwsgi發生意外的狀況下,會自動的重啓。

  1. supervisor的安裝:在系統級別的python環境下pip install supervisor
  2. 在項目的根目錄下建立一個文件叫作my_supervisor.conf。內容以下:
# supervisor的程序名字 [program:mysite] # supervisor執行的命令 command=uwsgi --ini zlkt_uwsgi.ini # 項目的目錄 directory = /srv/djangotest # 開始的時候等待多少秒 startsecs=0 # 中止的時候等待多少秒 stopwaitsecs=0 # 自動開始 autostart=true # 程序掛了後自動重啓 autorestart=true # 輸出的log文件 stdout_logfile=/srv/djangotest/log/supervisord.log # 輸出的錯誤文件 stderr_logfile=/srv/djangotest/log/supervisord.err [supervisord] # log的級別 loglevel=info # 使用supervisorctl的配置 [supervisorctl] # 使用supervisorctl登陸的地址和端口號 serverurl = http://127.0.0.1:9001 # 登陸supervisorctl的用戶名和密碼 username = admin password = 123 [inet_http_server] # supervisor的服務器 port = :9001 # 用戶名和密碼 username = admin password = 123 [rpcinterface:supervisor] supervisor.rpcinterface_factory = supervisor.rpcinterface:make_main_rpcinterface 

而後使用命令supervisord -c my_supervisor.conf運行就能夠了。 之後若是想要啓動uwsgi,就能夠經過命令supervisorctl -c my_supervisor.conf進入到管理控制檯,而後能夠執行相關的命令進行管理:

# 查看狀態 status  # 啓動程序 start program_name  # 從新啓動程序 restart program_name  # 關閉程序 stop program_name  # 從新加載配置文件 reload  # 退出控制檯 quit 
相關文章
相關標籤/搜索