部署圖書管理系統項目

来源: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
  • Timer是什麼 Timer 是一種用於創建定期粒度行為的機制。 與標準的 .NET System.Threading.Timer 類相似,Orleans 的 Timer 允許在一段時間後執行特定的操作,或者在特定的時間間隔內重覆執行操作。 它在分散式系統中具有重要作用,特別是在處理需要周期性執行的 ...
  • 前言 相信很多做WPF開發的小伙伴都遇到過表格類的需求,雖然現有的Grid控制項也能實現,但是使用起來的體驗感並不好,比如要實現一個Excel中的表格效果,估計你能想到的第一個方法就是套Border控制項,用這種方法你需要控制每個Border的邊框,並且在一堆Bordr中找到Grid.Row,Grid. ...
  • .NET C#程式啟動閃退,目錄導致的問題 這是第2次踩這個坑了,很小的編程細節,容易忽略,所以寫個博客,分享給大家。 1.第一次坑:是windows 系統把程式運行成服務,找不到配置文件,原因是以服務運行它的工作目錄是在C:\Windows\System32 2.本次坑:WPF桌面程式通過註冊表設 ...
  • 在分散式系統中,數據的持久化是至關重要的一環。 Orleans 7 引入了強大的持久化功能,使得在分散式環境下管理數據變得更加輕鬆和可靠。 本文將介紹什麼是 Orleans 7 的持久化,如何設置它以及相應的代碼示例。 什麼是 Orleans 7 的持久化? Orleans 7 的持久化是指將 Or ...
  • 前言 .NET Feature Management 是一個用於管理應用程式功能的庫,它可以幫助開發人員在應用程式中輕鬆地添加、移除和管理功能。使用 Feature Management,開發人員可以根據不同用戶、環境或其他條件來動態地控制應用程式中的功能。這使得開發人員可以更靈活地管理應用程式的功 ...
  • 在 WPF 應用程式中,拖放操作是實現用戶交互的重要組成部分。通過拖放操作,用戶可以輕鬆地將數據從一個位置移動到另一個位置,或者將控制項從一個容器移動到另一個容器。然而,WPF 中預設的拖放操作可能並不是那麼好用。為瞭解決這個問題,我們可以自定義一個 Panel 來實現更簡單的拖拽操作。 自定義 Pa ...
  • 在實際使用中,由於涉及到不同編程語言之間互相調用,導致C++ 中的OpenCV與C#中的OpenCvSharp 圖像數據在不同編程語言之間難以有效傳遞。在本文中我們將結合OpenCvSharp源碼實現原理,探究兩種數據之間的通信方式。 ...
  • 一、前言 這是一篇搭建許可權管理系統的系列文章。 隨著網路的發展,信息安全對應任何企業來說都越發的重要,而本系列文章將和大家一起一步一步搭建一個全新的許可權管理系統。 說明:由於搭建一個全新的項目過於繁瑣,所有作者將挑選核心代碼和核心思路進行分享。 二、技術選擇 三、開始設計 1、自主搭建vue前端和. ...
  • Csharper中的表達式樹 這節課來瞭解一下表示式樹是什麼? 在C#中,表達式樹是一種數據結構,它可以表示一些代碼塊,如Lambda表達式或查詢表達式。表達式樹使你能夠查看和操作數據,就像你可以查看和操作代碼一樣。它們通常用於創建動態查詢和解析表達式。 一、認識表達式樹 為什麼要這樣說?它和委托有 ...
  • 在使用Django等框架來操作MySQL時,實際上底層還是通過Python來操作的,首先需要安裝一個驅動程式,在Python3中,驅動程式有多種選擇,比如有pymysql以及mysqlclient等。使用pip命令安裝mysqlclient失敗應如何解決? 安裝的python版本說明 機器同時安裝了 ...