部署圖書管理系統項目 部署準備 部署圖書管理項目你將使用以下軟體 nginx uWSGI CentOS7 部署圖書管理項目文件 virtualenv supervisor WSGI、uWSGI python web伺服器開發使用WSGI協議(Web Server Gateway Interface) ...
部署圖書管理系統項目
部署準備
部署圖書管理項目你將使用以下軟體
- nginx
- uWSGI
- CentOS7
- 部署圖書管理項目文件
- virtualenv
- supervisor
WSGI、uWSGI
python web伺服器開發使用WSGI協議(Web Server Gateway Interface)
python web項目預設會生成一個wsgi.py文件,確定好應用模塊。
生產環境中使用的是uWSGI,實現了WSGI所有介面,C語言編寫,效率很高的web伺服器。
uWSGI是一個全功能的HTTP伺服器,實現了WSGI協議、uwsgi協議、http協議等。它要做的就是把HTTP協議轉化成語言支持的網路協議。比如把HTTP協議轉化成WSGI協議,讓Python可以直接使用。
Nginx
使用nginx是為了它的反向代理功能,項目會通過Django+uWSGI+Nginx進行伺服器線上部署。
CentOS
1.打包項目CRM文件夾,壓縮文件
2.通過xftp、scp、lrzsz等上傳文件至Centos伺服器
Linux使用技巧
1.通過xshell或者iTerm等軟體,多終端操作你的linxu,這樣對uwsgi、nginx、項目代碼調試的時候,避免來回切換目錄,提供工作效率。
2.註意修改了linux軟體的配置文件,都要重啟服務才能生效。
Virtualenv
構建一個乾凈,隔離的python解釋器環境,防止軟體依賴,衝突等問題,建議使用。
Supervisor
Supervisor(http://supervisord.org/)是用Python開發的一個client/server服務,是Linux/Unix系統下的一個進程管理工具,不支持Windows系統。它可以很方便的監聽、啟動、停止、重啟一個或多個進程。用Supervisor管理的進程,當一個進程意外被殺死,supervisort監聽到進程死後,會自動將它重新拉起,很方便的做到進程自動恢復的功能,不再需要自己寫shell腳本來控制。
開始部署
1、熟悉linux操作
linux基本命令操作, 省略.....
2、python3解釋器的安裝
參考博客: https://www.cnblogs.com/tiger666/articles/10312522.html
3、virtualenvwrapper工具的配置,解決虛擬環境問題
# 確認~/.bashrc配置文件裡面的virtualenvwrapper配置 WORKON_HOME=~/Envs VIRTUALENVWRAPPER_VIRTUALENV_ARGS='--no-site-packages' VIRTUALENVWRAPPER_PYTHON=/opt/python36/bin/python3 source /opt/python36/bin/virtualenvwrapper.sh # 新建並激活一個虛擬環境,用於圖書管理系統項目 mkvirtualenv book_manage_env
4、安裝配置MariaDB資料庫,且創建資料庫數據,遷移導入圖書管理系統的數據
(1) 安裝並啟動MariaDB資料庫
在CentOS7下,MariaDB就是mysql資料庫,只是包名的不同
# 使用yum下載並安裝mariadb yum install MariaDB-server MariaDB-client -y #啟動mariadb服務端 systemctl start mysql
(2) 連接並授權root用戶遠程訪問
# 使用客戶端去鏈接mysql服務端 mysql -uroot -p 在linux上登陸mariadb # 註意1, linux的資料庫,需要對root用戶設置遠程鏈接的許可權, 密碼是qishi3q grant all privileges on *.* to root@'%' identified by 'qishi3q'; # 授權所有的許可權,在所有庫,所有表 對 root用戶在所有的主機上, 設置許可權密碼是qishi3q #刷新授權表 flush privileges; 註意2, linux的防火牆和selinux要關閉,否則windows去鏈接linux的3306埠可能被拒絕
(3) 導入圖書管理項目的數據
在linux服務端,mysql,導入圖書管理系統的數據 # 1.mysql數據的導出,與導入 這個命令是在linux/windows中敲的 mysqldump -u root -p --all-databases > book_manage.dump # 2.上傳這個數據文件到linux資料庫中 # 3.在linux的mysql,導入這個數據文件(需要在dump文件中指定資料庫: use szday58) mysql -u root -p < /opt/book_manage.dump # 或者進入mysql中 進入資料庫,使用命令: source /opt/book_manage.dump
5、進入虛擬環境並運行項目
測試使用linux的python解釋器去運行項目 切換到 項目中運行(註意要解決解釋器的模塊問題,才能正常運轉項目)
# 用127.0.0.1不行,只能本機訪問,要想讓所有人都能訪問,必須要用0.0.0.0 python3 manage.py runserver 0.0.0.0:8000
然後就可以通過IP加埠進行訪問了,如果這個IP是我的雲伺服器IP,那我們去面試的時候,就可以拿著這個項目給面試官在電腦上展示了,好有逼格啊~
彩蛋:現在有一個問題,我們通過10.0.0.7:8000才能訪問項目,但是公網上的網站不是這樣的啊,比如路飛學城,是通過功能變數名稱進行訪問的,我們還可以解析出路飛學城的網站伺服器IP,通過地址也可以訪問,但是後面沒有加埠, 因為預設是用的80埠
雖然我們可以直接將埠改為80就沒問題了, 那麼問題來了:
1 django運行web界面預設用的是wsgiref單機模塊,性能會比較低, 需要怎麼解決?
uwsgi + django + nginx
2 我們要想再跑一個項目對外提供服務,該怎麼辦呢? 伺服器只有一個80埠, 如何解決
nginx + uwsgi + django + supervisor
-完成nginx的安裝配置,瞭解nginx.conf如何配置
-完成uWSGI命令學習,使用uWSGI啟動knight項目,支持多進程
-完成nginx處理圖書管理項目的靜態文件
-最終效果
訪問nginx的80埠,即可找到圖書管理頁面,且保證靜態文件頁面正常