國產化之路-安裝WEB服務器


專題目錄

國產化之路-統信UOS操作系統安裝
國產化之路-國產操作系統安裝.net core 3.1 sdk
國產化之路-安裝WEB服務器
國產化之路-安裝達夢DM8數據庫
國產化之路-統信UOS + Nginx + Asp.Net MVC + EF Core 3.1 + 達夢DM8實現簡單增刪改查操作

前言

國產的操作系統一般都是基於Linux開發的,只是不同的操作系統使用的Linux版本有所差異,比如麒麟V10的操作系統是基於Ubantu16.4的,統信UOS ARM64專業版是基於Debian8.3的,當然還有服務器版本的,不管如何,對於我們開發者或維護人員來講,站點的發布與維護管理最好能通過一個統一的集成環境,點擊幾下鼠標或做一些簡單的配置即可完成,就像是Windows的IIS那樣方便,那么在Linux的環境下是否有這樣類似的環境呢?答案是肯定的,在國內用的比較廣泛的是寶塔面板或類似寶塔面板的站點式的管理應用。寶塔面板是一款服務器管理軟件,除了支持Linux系統也支持windows,通過它我們可以很輕松地管理服務器,提升運維效率,比如創建管理網站、FTP、數據庫、擁有可視化文件管理器、可視化軟件管理器、可視化CPU、內存、流量監控圖表、計划任務等功能。可以訪問官網了解更詳細的介紹。
這里我們在統信UOS ARM64專業版操作系統下對寶塔面板進行安裝,原先在麒麟V10操作系統環境下一直安裝不成功,坑比較多,無奈之下改成了統信操作系統,對於麒麟V10操作系統環境下的安裝計划等麒麟官網維護完成,官方的安裝源可用后再作嘗試。

安裝寶塔

我們這里是參考寶塔官方論壇最新版本的安裝方法,下面安裝要求是直接引用論壇里邊的:

安裝要求:
內存:512M以上,推薦768M以上(純面板約占系統60M內存)

硬盤:300M以上可用硬盤空間(純面板約占20M磁盤空間)
系統:CentOS 7.1+ (Ubuntu16.04+.、Debian9.0+),確保是干凈的操作系統,沒有安裝過其它環境帶的Apache/Nginx/php/MySQL/pgsql/gitlab/java(已有環境不可安裝)
架構:x86_64(主流服務器均是此架構),ARM不完整兼容(面板環境安裝慢,部分軟件可能安裝不上)

寶塔Linux面板7.4.5版本是基於Centos開發的,為了最好的兼容性,請優先考慮使用Centos8.x系統
系統兼容性順序:
Centos8.x > Centos7.x > Ubuntu18.04 > Debian10 > Ubuntu 20.04 > 其它系統
提示:Centos官方已宣布在2020年停止對Centos6的維護更新,各大軟件開發商也逐漸停止對Centos6的兼容,新服務器不建議使用Centos6

我這邊的架構屬於ARM64,文檔上提示“ARM不完整兼容”,心里還是有點擔憂,統信的UOS是基於Debian8.3版本根據安裝文檔指引使用Debian安裝命令

wget -O install.sh http://download.bt.cn/install/install-ubuntu_6.0.sh && bash install.sh


上面是詢問將寶塔面板安裝到www目錄,直接打入“y”即可

屏幕上的文字不斷翻滾,經過漫長的等待(大概10分鍾左右)順利安裝成功了,因為之前的安裝提示原本還是有些擔心的。這里需要記下面板的訪問地址和隨機分配的賬號密碼,不然后面就抓瞎了。在瀏覽器上輸入面板地址,出現了寶塔登錄界面

在登錄界面上直接輸入隨機分配的賬號和密碼進行登錄

第一次進入會出現用戶許可協議,直接勾選同意,點擊“進入面板”。

這里會叫你選擇安裝軟件套件,有兩種方案選擇:一個是LNMP方式、另一個是LAMP方式,感覺和咱們關系都不大,因為下一步要安裝Nginx所以選擇了“LNMP”,勾選了Nginx1.18和FTP,其他的暫時也沒啥用(這些軟件后面如有需要也可以安裝),勾選完后安裝方式默認選“急速安裝”點擊“一鍵安裝”按鈕,接着會彈出一個安裝消息窗口,里邊又開始飛快地滾動文字了。

趁着安裝軟件的間隙我們可以關閉這個消息窗口來熟悉一下寶塔面板的各項菜單(不用擔心安裝會中止,在后台會繼續安裝)。首頁上顯示負載、CPU使用率、內存使用率、硬盤使用情況等機器的當前狀態,還是很直觀方便的。

系統安全面板顯示當前開放的端口,還可以對端口進行開關設置非常實用。

其中讓我比較在意的是網站和文件這兩個管理菜單,通過點擊網站菜單可以進入網站管理頁面(當前在安裝Nginx暫時還進不去),里邊提供了站點的創建和配置,非常方便。點擊文件菜單進入文件管理頁面,通過文件管理頁面我們可以查看主機上的所有目錄和文件,且可以創建、刪除、修改目錄、上傳文件,這樣就很方便了,我們可以在自己的開發機上編譯項目代碼,然后通過寶塔的文件上傳功能把編譯打包好的項目放到指定的目錄中去,接着再通過網站管理功能再配置一番,這樣咱們基本的站點管理功能就有了,想想還是美滋滋的。

在安裝完成時還是比較在意這個賬號和密碼的,隨機生成的不太好記,好在這個面板設置里邊可以修改賬號和密碼,這個還比較貼心,另外寶塔默認訪問的端口號是8888,為了安全起見建議修改一下,除了這些以外還有其他的一些可修改項,可以看一下。

然后,就是軟件商店了,里邊着實有不少應用,有收費的也有免費的,感覺免費的也已經夠用了,當前的要求也不是很高,走馬觀花地稍微看一把。

其它的就不詳細介紹了,官網上已經有詳細的操作說明,根據自己的需要摸索吧!點擊左上角IP地址邊上的數字,可以直接彈出安裝消息窗口,當前安裝已經完成,就是安裝Nginx花了不少的時間,將近有20分鍾,接下來咱們試着發布一個站點試試。

發布站點

(1)點擊“網站”菜單進入網站管理頁面,然后點擊“添加站點”按鈕,彈出添加網站的配置窗口,如下圖所示:

這里注意一下,域名是必輸項,如果沒有域名暫時隨便輸一個,但格式要正確。網站根目錄默認是“/www/wwwroot/域名”,也可以自己修改,其他的隨意,點擊“遞交”按鈕就完成站點創建。
(2)在開發機中准備好待發布的網站項目,將項目先發布到本地文件系統。
(3)回到寶塔管理面板,點擊左側“文件”菜單進入文件管理頁面,點擊目錄列表依次從目錄www/wwwroot中找到我們新建AppDemo站點目錄,並點擊進入,如下截圖所示:

站點創建完成會添加默認的404、index頁面,不需要的話可以在文件管理頁面中把這些文件刪除,然后點擊“上傳”按鈕,彈出上傳文件窗口:

點擊窗口左上角上傳按鈕(可以選擇上傳文件也可以上傳目錄,我們選擇上傳文件)將我們已准備好的本地發布版本的所有文件全選並拖拽到窗口中,然后點擊“開始上傳”。

(4)上傳成功后點擊寶塔面板中的“網站”菜單,在網站管理頁面中選擇我們創建的站點,點擊“設置”鏈接,對我們的站點進行設置。

在站點修改窗口中選擇“網站目錄”,我們將運行目錄選擇為“/wwwroot”,我們發布的網站樣式等都在這個子目錄里邊,如果不指定的話,顯示會沒有樣式。
繼續點擊站點修改窗口左側的“配置文件”項,會列出本站點的Nginx配置項,默認情況下使用的是80端口,server_name是我們之前創建站點時隨便輸入的域名,沒有域名在這里我們把域名改成IP地址:

然后我們要做一個反向代理的配置,在配置文件中加入如下配置項:

# AppDemo
location / {
	proxy_pass         http://localhost:5000;
	proxy_http_version 1.1;
	proxy_set_header   Upgrade $http_upgrade;
	proxy_set_header   Connection keep-alive;
	proxy_set_header   Host $host;
	proxy_cache_bypass $http_upgrade;
	proxy_set_header   X-Forwarded-For $proxy_add_x_forwarded_for;
	proxy_set_header   X-Forwarded-Proto $scheme;
}


配置完成后,點擊保存按鈕,然后要記得重啟一下Nginx,在寶塔面板中點擊軟件商店,在軟件商店頁面中點擊“已安裝”按鈕,在已安裝的軟件列表中找到Nginx,點擊“設置”,在彈出來的Nginx管理窗口中,點擊“重啟”按鈕即可。

為了方便查找,可以在已安裝的軟件列表中將Nginx設置為首頁顯示,然后在首頁上就可以找到它。

(5)通過終端運行已發布的網站(MvcExample是我這里已編譯的網站dll)

dotnet MvcExample.dll

然后打開瀏覽器訪問網站看看是否成功:

關於守護進程

我們的站點已發布成功,但這里有一個問題,我們在終端執行命令dotnet xxx.dll 運行 .NET Core 應用程序時,如果我們關閉終端結束會話,那么我們的程序也會結束運行,我們關閉終端再來瀏覽發布的站點看看:

如上圖,頁面顯示“502 Bad Gateway”,這個不是我們想看到的,那如何才能當我們關閉終端結束會話后,站點仍然運行呢?這里就需要引進守護進程。
守護進程,英文名:“daemon",它是一個在后台運行並且不受任何終端控制的進程,不會隨着會話結束而退出。我們使用Linux的命令可以實現守護進程,但是比較麻煩,即然咱們安裝了寶塔面板,我們還是希望可以通過面板來配置就可以實現這個功能。在寶塔的軟件商店中找到了兩款守護進程的工具:supervisor和pm2。

supervisor

supervisor是用Python開發的一個client/server服務,是Linux/Unix系統下的一個進程管理工具。可以很方便的監聽、啟動、停止、重啟一個或多個進程。用 supervisor管理的進程,當一個進程意外被殺死,supervisor監聽到進程死后,會自動將它重啟,很方便的做到進程自動恢復的功能,不再需要自己寫shell腳本來控制。

以上是摘自網絡上對supervisor的介紹,我們可以通過寶塔面板中的軟件商店找到它並安裝:

安裝完成后,在已安裝的軟件列表中找到supervisor管理器,點擊設置會彈出Supervisor管理器窗口

然后點擊右上角的“添加守護進程”

啟動用戶可以選擇默認用戶,運行目錄選擇你發布的站點目錄,我這里是“/www/wwwroot/AppDemo”,啟動命令“dotnet xxx.dll”,xxx.dll是站點名稱,如果無法識別dotnet命令,則給出命令的完整路徑,如:“/usr/local/dotnet/dotnet xxx.dll”,進程數就默認1,點擊“確定”按鈕完成守護進程的添加。

我們再次打開瀏覽器,站點又正常運行了,當前已經不再需要使用終端去運行“dotnet xxx.dll”了。

PM2

PM2(Process Manager 2 )是具有內置負載均衡器的Node.js應用程序的生產運行時和進程管理器。 它允許您永久保持應用程序活躍,無需停機即可重新加載它們,並促進常見的Devops任務。

以上介紹來自網絡,pm2雖然是node進程管理工具,但作為進程管理工具.net core仍然適用,PM2需要node環境,但我們直接通過寶塔面板來安裝可以省很多事情,在軟件商店中找到他,直接點擊安裝即可

安裝過程不再描述,完成后點擊“設置”彈出PM2管理器:

通過終端命令方式來啟動PM2的命令如下:

pm2 start "dotnet xxx.dll" --name xxx

對照命令,我們大概可以猜到PM2管理器面板如何添加進程,項目所在目錄直接選擇發布站點的目錄即可,啟動文件名稱應該就是命令:“dotnet xxx.dll”了,項目名稱對應的是name名稱,可以根據個人喜好起一個,然后點擊“添加”按鈕,但這里出現了一個問題,點擊“添加”按鈕一直提示"指定文件不存在",無奈最后通過終端運行pm2命令來添加了一個進程,再回到寶塔面板的PM2管理器窗口中查看,倒是新增了一條記錄,正是通過終端添加的,但可惜的是在管理器上無法查看具體配置,然后通過管理器去啟動和暫停這個進程都是沒問題的,后來經過分析,通過寶塔面板運行PM2時是以“www”用戶的身份去運行的,估計這個用戶有點特殊,通過“www”用戶無法識別“dotnet”命令所造成的,暫時作罷。

supervisor與PM2比較

這兩個工具從網上了解使用相當普遍,查了一下資料,supervisor適用於開發環境,它會監視你對代碼的改動,自動啟動,比較方便;PM2內建負載均衡(使用 Node cluster 集群模塊),0 秒停機重載,維護升級時不需要停機,穩定,適合於正式運行環境;從寶塔面板控制的便捷性來看supervisor配置起來要方便很多,可以指定運行用戶,而PM2通過管理面板未能配置起來,只能通過后台終端來添加,但添加完成后可以用面板來管理。選用哪一款見仁見智吧!我們也可以結合使用,在開發測試時使用supervisor,正式發布使用PM2。

小結

在麒麟v10操作系統下安裝WEB服務器耗費了大量的時間,最新版本的寶塔無法安裝,Nginx安裝不成功,正好麒麟官方網站又在維護,無法訪問官方的源,一路曲折。當前安裝的是基於國產的另一個操作系統:統信UOS ARM64專業版,其基於Debian8.3版本,安裝還算順利,但麒麟v10操作系統下的WEB服務器還是得配置,坑還是得填上無法繞過,計划等官網維護完成后再試試。
當前在統信UOS下的WEB服務器已配置完成,我們可以通過如下步驟來發布咱們的站點:
1、通過寶塔面板的網站管理創建站點。
2、將待發布的網站項目發布到本地文件系統。
3、通過寶塔面板的文件管理上傳發布版本到指定站點目錄。
4、配置站點設置反向代理。
5、使用進程守護工具添加運行 .NET Core 應用程序(測試運行環境可以使用supervisor,正式發布環境使用PM2,使用PM2時,通過終端運行來添加進程,后面管理可以直接通過寶塔面板來操作)。

參考資料

寶塔官網地址:https://www.bt.cn/
寶塔安裝參考說明:https://www.bt.cn/bbs/thread-19376-1-1.html
官方發布說明文檔:https://docs.microsoft.com/zh-cn/aspnet/core/host-and-deploy/linux-nginx?view=aspnetcore-3.1
supervisor網址:https://pypi.org/project/supervisor/
PM2官網:https://pm2.keymetrics.io/
PM2守護進程介紹:https://www.cnblogs.com/stulzq/p/9775973.html


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM