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

專題目錄

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

前言

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

安裝寶塔

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

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

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

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

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

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分鐘,接下來我們試着發佈一個站點試試。
sql

發佈站點

(1)點擊「網站」菜單進入網站管理頁面,而後點擊「添加站點」按鈕,彈出添加網站的配置窗口,以下圖所示:

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

站點建立完成會添加默認的40四、index頁面,不須要的話能夠在文件管理頁面中把這些文件刪除,而後點擊「上傳」按鈕,彈出上傳文件窗口:

點擊窗口左上角上傳按鈕(能夠選擇上傳文件也能夠上傳目錄,咱們選擇上傳文件)將咱們已準備好的本地發佈版本的全部文件全選並拖拽到窗口中,而後點擊「開始上傳」。

(4)上傳成功後點擊寶塔面板中的「網站」菜單,在網站管理頁面中選擇咱們建立的站點,點擊「設置」連接,對咱們的站點進行設置。

在站點修改窗口中選擇「網站目錄」,咱們將運行目錄選擇爲「/wwwroot」,咱們發佈的網站樣式等都在這個子目錄裏邊,若是不指定的話,顯示會沒有樣式。
繼續點擊站點修改窗口左側的「配置文件」項,會列出本站點的Nginx配置項,默認狀況下使用的是80端口,server_name是咱們以前建立站點時隨便輸入的域名,沒有域名在這裏咱們把域名改爲IP地址:

而後咱們要作一個反向代理的配置,在配置文件中加入以下配置項:shell

# 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服務器已配置完成,咱們能夠經過以下步驟來發布我們的站點:
一、經過寶塔面板的網站管理建立站點。
二、將待發布的網站項目發佈到本地文件系統。
三、經過寶塔面板的文件管理上傳發布版本到指定站點目錄。
四、配置站點設置反向代理。
五、使用進程守護工具添加運行 .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守護進程介紹:http://www.javashuo.com/article/p-kpwpvdwe-eg.html

相關文章
相關標籤/搜索