部署圖書管理系統項目
部署準備
部署圖書管理項目你將使用如下軟件html
- nginx
- uWSGI
- CentOS7
- 部署圖書管理項目文件
- virtualenv
- supervisor
WSGI、uWSGI
python web服務器開發使用WSGI協議(Web Server Gateway Interface)python
python web項目默認會生成一個wsgi.py文件,肯定好應用模塊。mysql
生產環境中使用的是uWSGI,實現了WSGI全部接口,C語言編寫,效率很高的web服務器。linux
uWSGI是一個全功能的HTTP服務器,實現了WSGI協議、uwsgi協議、http協議等。它要作的就是把HTTP協議轉化成語言支持的網絡協議。好比把HTTP協議轉化成WSGI協議,讓Python能夠直接使用。nginx
Nginx
使用nginx是爲了它的反向代理功能,項目會經過Django+uWSGI+Nginx進行服務器線上部署。web
CentOS
1.打包項目CRM文件夾,壓縮文件面試
2.經過xftp、scp、lrzsz等上傳文件至Centos服務器sql
Linux使用技巧
1.經過xshell或者iTerm等軟件,多終端操做你的linxu,這樣對uwsgi、nginx、項目代碼調試的時候,避免來回切換目錄,提供工做效率。shell
2.注意修改了linux軟件的配置文件,都要重啓服務才能生效。數據庫
Virtualenv
構建一個乾淨,隔離的python解釋器環境,防止軟件依賴,衝突等問題,建議使用。
Supervisor
Supervisor(http://supervisord.org/)是用Python開發的一個client/server服務,是Linux/Unix系統下的一個進程管理工具,不支持Windows系統。它能夠很方便的監聽、啓動、中止、重啓一個或多個進程。用Supervisor管理的進程,當一個進程意外被殺死,supervisort監聽到進程死後,會自動將它從新拉起,很方便的作到進程自動恢復的功能,再也不須要本身寫shell腳原本控制。
開始部署
一、熟悉linux操做
linux基本命令操做, 省略.....
二、python3解釋器的安裝
參考博客: https://www.cnblogs.com/tiger666/articles/10312522.html
三、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
四、安裝配置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
五、進入虛擬環境並運行項目
測試使用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端口,便可找到圖書管理頁面,且保證靜態文件頁面正常