pip freeze > requirements.txt
將當前環境的包導出到requirements.txt
文件中,方便在部署的時候安裝。/srv
目錄下。這裏以git
的形式爲例,打開終端,依次輸入以下命令
安裝好項目用到的Python
。python
安裝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數據庫
安裝git
:django
sudo apt install git
爲了方便XShell或者CRT鏈接服務器,建議安裝OpenSSH
:vim
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
。
pip install uwsgi
就能夠了。(uwsgi必須安裝在系統級別的Python環境中,不要安裝到虛擬環境中)。uwsgi --http :8000 --module test.wsgi --vritualenv=/root/.virtualenvs/django-env-py36
。用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
,看下是否還能啓動這個項目。
nginx
是一個web
服務器。用來加載靜態文件和接收http
請求的。經過命令sudo apt install nginx
便可安裝。nginx
經常使用命令:
靜態文件應該讓nginx來服務,而不是讓django來作。首先確保你的settings.py
文件中有一個STATIC_ROOT
配置,這個配置應該指定你的靜態文件要放在哪一個目錄下。那麼咱們能夠執行如下命令:python manage.py collectstatic
來收集全部靜態文件,將這些靜態文件放在指定的目錄下。
在/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
。
讓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