在開發機上的准備工作
1、確認項目沒有bug
2、用pip freeze >requirements.txt將當前環境的包導出到requirements.txt文件中,方便部署的時候安裝
3、將dysms_python文件准備好。因為短信驗證碼的這個帶服務器需要手動安裝
4、在https://git-scm.com/downloads下載Windows版本的客戶端。然后雙擊一頓點擊下一步安裝即可
5、然后使用碼雲或者自己搭建gitlab,創建一個倉庫
6、進入項目,使用以下命令做代碼提交
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
服務器上的准備工作
安裝好項目用到的Python
sudo apt install python3 sudo apt install python3-pip pip3 install --upgrade pip
安裝virtualenv
以及virutalenvwrapper
。並創建虛擬環境
pip3 install virtualenv pip3 install virtualenvwrapper sudo apt install vim
vim ~/.bashrc 進入文件中,填入以下兩行代碼
export WORKON_HOME=$HOME/.virtualenvs source /usr/local/bin/virtualenvwrapper.sh
創建虛擬環境
mkvirtualenv --python=/usr/bin/python3 zlbbs-env
安裝git
sudo apt install git
安裝MySQL
服務器和客戶端
> sudo apt install mysql-server mysql-client > sudo apt-get install libmysqld-dev
進入虛擬環境中,然后進入到項目所在目錄,執行命令:pip install -r requirements.txt
,安裝好相應的包
在mysql數據庫中,創建相應的數據庫。
執行python manage.py db upgrade命令,將遷移文件,映射到數據庫中,創建相應的表。
執行python zlbbs.py,然后在你自己電腦上,在瀏覽器中輸入http://你的服務器的ip地址:8000/,訪問下網站所有頁 面,確保所有頁面都沒有錯誤。
設置DEBUG=False,避免如果你的網站產生錯誤,而將錯誤信息暴漏給用戶
安裝uwsgi
uwsgi是一個應用服務器,非靜態文件的網絡請求就必須通過他完成,他也可以充當靜態文件服務器,但不是他的強項。uwsgi是使用python編寫的,因此通過pip install uwsgi就可以了。(uwsgi必須安裝在系統級別的Python環境中,不要安裝到虛擬環境中)。
使用命令uwsgi --http :8000 --wsgi-file /opt/zlbbs/zlbbs.py -callable app -H /root/.virtualenvs/zlbbs-env。用uwsgi啟動項目,如果能夠在瀏覽器中訪問到這個頁面,說明uwsgi可以加載項目了
編寫uwsgi配置文件
[uwsgi] # Django相關的配置 # 必須全部為絕對路徑 # 項目的路徑 chdir = /srv/zlbbs # 模塊 module = zlbbs # Python虛擬環境的路徑 home = /root/.virtualenvs/zlbbs-env # 進程相關的設置 # 主進程 master = true # 最大數量的工作進程 processes = 10 # socket文件路徑,絕對路徑 socket = /srv/zlbbs/zlbbs.sock # wsgi文件 wsgi-file = /srv/zlbbs/wsgi.py # wsgi文件的app變量 callable = app # 設置socket的權限 chmod-socket = 666 # 退出的時候是否清理環境 vacuum = true
然后使用命令uwsgi --ini zlbbs_uwsgi.ini,看下是否還能啟動這個項目
安裝nginx
nginx是一個web服務器。用來加載靜態文件和接收http請求的。通過命令sudo apt install nginx即可安裝。
nginx常用命令:
啟動nginx:service nginx start
關閉nginx:service nginx stop
重啟nginx:service nginx restart
編寫nginx配置文件
在/etc/nginx/conf.d目錄下,新建一個文件,叫做zlbbs.conf,然后將以下代碼粘貼進去:
upstream zlbbs { server unix:///srv/zlbbs/zlbbs.sock; } # 配置服務器 server { # 監聽的端口號 listen 80; # 域名 server_name 192.168.0.101; charset utf-8; # 最大的文件上傳尺寸 client_max_body_size 75M; # 靜態文件訪問的url location /static { # 靜態文件地址 alias /srv/zlbbs/static; } # 最后,發送所有非靜態文件請求到django服務器 location / { uwsgi_pass zlbbs; # uwsgi_params文件地址 include /etc/nginx/uwsgi_params; } }
寫完配置文件后,為了測試配置文件是否設置成功,運行命令:service nginx configtest,如果不報錯,說明成功。
每次修改完了配置文件,都要記得運行service nginx restart
使用supervisor配置
讓supervisor管理uwsgi,可以在uwsgi發生意外的情況下,會自動的重啟
supervisor的安裝:在系統級別的python環境下pip install supervisor。
在項目的根目錄下創建一個文件叫做zlbbs_supervisor.conf。內容如下
# supervisor的程序名字 [program:zlbbs] # supervisor執行的命令 command=uwsgi --ini zlbbs_uwsgi.ini # 項目的目錄 directory = /srv/zlbbs # 開始的時候等待多少秒 startsecs=0 # 停止的時候等待多少秒 stopwaitsecs=0 # 自動開始 autostart=true # 程序掛了后自動重啟 autorestart=true # 輸出的log文件 stdout_logfile=/srv/zlbbs/log/supervisord.log # 輸出的錯誤文件 stderr_logfile=/srv/zlbbs/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 zlbbs_supervisor.conf運行就可以了。
以后如果想要啟動uwsgi,就可以通過命令supervisorctl -c supervisor.conf進入到管理控制台,然后可以執行相關的命令進行管理:
status # 查看狀態
start program_name #啟動程序
restart program_name #重新啟動程序
stop program_name # 關閉程序
reload # 重新加載配置文件
quit # 退出控制台