1. 在開發機上的準備工作 2. 在伺服器上的準備工作 3.安裝uwsgi 4.編寫uwsgi配置文件,使用配置文件啟動uwsgi 5. 安裝nginx 6. 收集靜態文件 7. 編寫nginx配置文件: 8. 使用supervisor配置 1. 在開發機上的準備工作 git init git re ...
- 1. 在開發機上的準備工作
- 2. 在伺服器上的準備工作
- 3.安裝uwsgi
- 4.編寫uwsgi配置文件,使用配置文件啟動uwsgi
- 5. 安裝nginx
- 6. 收集靜態文件
- 7. 編寫nginx配置文件:
- 8. 使用supervisor配置
1. 在開發機上的準備工作
- 確認項目沒有bug。
- 用
pip freeze > requirements.txt
將當前環境的包導出到requirements.txt
文件中,方便在部署的時候安裝。 - 將項目上傳到伺服器上的
/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. 在伺服器上的準備工作
-
安裝好項目用到的
Python
。- sudo apt install python
- sudo apt install python-pip
- pip install --upgrade pip
-
安裝
virtualenv
以及virutalenvwrapper
,並創建虛擬環境。-
pip install virtualenv
-
pip install virtualenvwrapper
-
sudo apt install vim
-
vim ~/.bashrc
進入文件中,填入以下兩行代碼:export WORKON_HOME=$HOME/.virtualenvs source /usr/local/bin/virtualenvwrapper.sh
-
source ~/.bashrc
-
-
安裝
git
:sudo apt install git
-
為了方便XShell或者CRT連接伺服器,建議安裝
OpenSSH
:sudo apt install openssh-server openssh-client service ssh restart
-
安裝
MySQL
伺服器和客戶端:sudo apt install mysql-server mysql-client sudo apt-get install libmysqld-dev
-
進入虛擬環境中,然後進入到項目所在目錄,執行命令:
pip install -r requirements.txt
,安裝好相應的包。 -
在
mysql
資料庫中,創建相應的資料庫。 -
執行
python manage.py migrate
命令,將遷移文件,映射到資料庫中,創建相應的表。 -
執行
python manage.py runserver 0.0.0.0:8000
,然後在你自己電腦上,在瀏覽器中輸入http://你的伺服器的ip地址:8000/
,訪問下網站所有頁 面,確保所有頁面都沒有錯誤。 -
設置
ALLOW_HOST
為你的功能變數名稱,以及ip地址。 -
設置
DEBUG=False
,避免如果你的網站產生錯誤,而將錯誤信息暴漏給用戶。 -
收集靜態文件:
python manage.py collectstatic
。
3.安裝uwsgi
- uwsgi是一個應用伺服器,非靜態文件的網路請求就必須通過他完成,他也可以充當靜態文件伺服器,但不是他的強項。uwsgi是使用python編寫的,因此通過
pip install uwsgi
就可以了。(uwsgi必須安裝在系統級別的Python環境中,不要安裝到虛擬環境中)。 - 使用命令
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
nginx
是一個web
伺服器。用來載入靜態文件和接收http
請求的。通過命令sudo apt install nginx
即可安裝。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發生意外的情況下,會自動的重啟。
supervisor
的安裝:在系統級別的python環境下pip install supervisor
。- 在項目的根目錄下創建一個文件叫做
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