我們來試試把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
加上以下兩行指令
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網頁程式碼
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?