[.NET][C#].NET走跳在Linux的人生(五)ASP.NET Hosting with Apache

我們來試試把ASP.NET Web Forms網站放到Linux環境的Apache上執行吧! 

 

Apache本人!

 

根據NETCRAFT網站在2017年2月統計了數百萬個網站伺服器的使用,其中針對前100萬個商務網站使用的網站伺服器:  Apache還是市佔率最高(40%),但相較幾年前6-7成的市佔,下滑的比例很快,另外nginx(俄羅斯製造,念法是engine x)則上升很快(33%),尤其是在東歐地區。 

我們熟悉的好朋友IIS,雖然沒有第二,也算有一定的市佔(10%)。 

 


環境:

  • AP環境: Red Hat Enterprise Linux + Apach 
  • DB環境: Red Hat Enterprise Linux + SQL Server 2017 CTP2.1  
  • 開發環境: Windows 10 + Visual Studio 2017  

 

步驟: 

  • 1.安裝Apache Web Server 
  • 2.複製hello.aspx程式碼 
  • 3.安裝mod_mono apache module 
  • 4.Config Apache Server For mod_mono 
  • 5.關閉SELINUX 
  • 6.啟動Apache Web Server 
  • 7.執行ASP.NET網頁 
  • 8.防火牆開啟

 


1.安裝Apache Web server 

登入Linux,打開terminal,執行apache相關安裝

yum install httpd httpd-tools -y 

 


2.複製程式碼 

可以先把之前走跳人生系列第3篇的hello.aspx複製到Apache Web Server的預設目錄 /var/www/html/ 

cp  /root/dotnet/webform/hello.aspx /var/www/html/

 


3.安裝mod_mono apache module 

為了要在Apache上執行ASP.NET程式,我們得要安裝mod_mono並且進行組態,不然Apache會看不懂,就像下方網頁會呈現成原始程式檔案look

安裝指令 

yum install mod_mono -y 

 


4.Config Apache Server For ASP.NET 

我們需要編輯一下Apache的組態檔案要她可以和Mono Server Connect 

gedit /etc/httpd/conf.d/mod_mono.conf

加上以下兩行指令 

MonoServerPath "/usr/bin/mod-mono-server4" 
MonoAutoApplication enabled

編輯完成後,儲存然後關閉gedit 

 


5.關閉SELINUX 

組態的部分還要修改/etc/sysconfig/selinux檔案 

gedit /etc/sysconfig/selinux 

將SELINYX=enforcing 改為disabled

 

修改完畢後需要重新開機,如果不想重新開機,我們需要執行以下指令強制關閉SELINUX 

setenforce 0

 

 雖然關閉SELINUX並不是好方法,但目前找不到更好的方式;如果沒有關閉,Apache沒辦法與mod-mono-server連結,因為沒辦法parse aspx網頁,會呈現以下原始檔的結果:  

 

從Apache Log(/var/log/httpd/)則會發現:  

Failed to connect to mod-mono-server after several attempts to spawn the process

 


6.啟動Apache Web Server 

好!該安裝的,該組態的都準備好了,重新啟動Apache Web Server 

systemctl start httpd 

檢查一下Apache Server的狀態 

systemctl status httpd

running!

 


7.執行ASP.NET網頁 

執行ASP.NET網頁  http://localhost/hello.aspx

執行成功!

 


複製Poker網頁程式碼 

我們繼續試試走跳人生系列第四篇的poker.aspx

cp -r /root/dotnet/webform/* /var/www/html/ 
systemctl start httpd 

 

執行ASP.NET網頁 http://localhost/Poker.aspx 

撲克牌人物出現! 

 


8.防火牆設定 

開啟Http port 

firewall-cmd --permanent --add-service=http 
firewall-cmd --reload

因為防火牆打開了,試試從其他電腦連線到Web Server 

撲克牌人物出現! 

 

 


參考: 

Netcraft 2017 web server survey 

Nginx何时取代Apache? 

Mod mono 

Aspnet with apache on cent os