部署圖書管理系統項目

来源:https://www.cnblogs.com/zbj666/archive/2020/01/12/12184614.html
-Advertisement-
Play Games

部署圖書管理系統項目 部署準備 部署圖書管理項目你將使用以下軟體 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埠,即可找到圖書管理頁面,且保證靜態文件頁面正常

 


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 前言 在 ".NET Core 3.1和WorkerServices構建Windows服務" 我們也看到了,如何將workerservices構建成服務,那麼本篇文章我們再來看看如何將web應用程式托管到我們的服務中. 將WEB應用作為服務運行 我們需要將我們的WEB應用程式編譯成exe文件,在AS ...
  • 在我較早的一篇隨筆《在DevExpress程式中使用TeeList控制項以及節點查詢的處理》中,介紹了在樹形列表TreeList控制項上面,利用SearchControl實現節點的模糊查詢過濾操作,效果還是非常不錯的,TreeList功能比較強大,界面也相對比微軟內置的Winform的TreeView控... ...
  • 前言:在我們日常使用軟體的時候,Combobox會讓用戶很方便的選擇出需要的東西,但是ComboBox中的下拉行數過多時就不那麼好用了。 如果在項目中有很多這樣的ComboBox控制項的話,我們可以考慮重寫控制項。 重寫後的的工具類:(重寫了ComboBox的OnkeyUp事件,即:鍵盤鬆開) clas ...
  • 下麵放一張效果圖: 那麼具體是怎麼實現呢: 前端XAML中: <Image Source="/Images/tips.png" HorizontalAlignment="Left" Width="25" Height="25" MouseEnter="Image_MouseEnter" MouseL ...
  • 前言:當WPF項目後臺完成到一定程度的時候,就可以對XAML前端進行美化啦,個人認為XAML前端還是挺有意思的。 下麵舉一個Button加過小圖標後的例子: 是不是比生硬的文字看來更人性化了呢? 不多bb下麵開始講如何實現: 首先把你的圖標圖片文件放入項目,我的存放的是項目的根目錄的Images文件 ...
  • 之前多次安裝MongoDB失敗,今天終於配置安裝成功了!!! 首先,介紹一下:MongoDB是一個基於分散式文件存儲的NoSQL資料庫。由 C++ 語言編寫。旨在為 WEB 應用提供可擴展的高性能數據存儲解決方案。 MongoDB的主要目標是在鍵/值存儲方式(提供了高性能和高度伸縮性)以及傳統的RD ...
  • 前提 cat命令是用於連接文件並輸出到標準輸出設備或指定文件中。 EOF為標誌,可以替換為其他字元串 代碼塊 將文件內容作為標準輸出也就是將文件內容輸出到屏幕中,也可寫作 cat filename cat filename 創建文件,將2個EOF中的字元串作為標準輸入輸出到filename文件中 c ...
  • 前提 AWK是一種處理文本文件的語言,是一個強大的文本分析工具。 本文將使用命令awk將具有某個關鍵字的段落提取出來。 準備數據 段落提取 假設我們需要的關鍵字為 nid=0x63ef ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...