前言: 最近公司在HK接了個單,對方想用自已伺服器,但不想買windows server,想用linux 與 mysql做為平台,因為在HK必需用正版系統,microsoft server產品貴的有些嚇人.但公司php這塊完全不行,但又不想放棄這單生意,所以就想在linux平台上來運行asp.net.於是就有了這篇文章, 我是剛剛才接觸linux server,是一個名副其實的linux菜鳥,如果下面有說錯或者不合理的地方,請大家指出.
這篇文章適合像我這種需求,對linux又不太熟悉的朋友閱讀.
測試環境: VMware + Ubuntu Server 10.0.4 32bit + MONO 2.4.4 +MySql 5.1
首先安裝Ubuntu,大家可以去Ubuntu官方網站下載,具體安裝過程不多說了,非常簡單.
安裝過程中會提示你選擇需要安裝的服務或軟體,這裡我沒有選,後面在系統中手動安裝.
注意:我們主題是通過mono運行asp.net,測試中我們以root帳戶,所以完全忽略安全問題,關於linux安全配置大家可以去找相關資料.
安裝完成後,系統會提示登陸,我們以安裝過程中設定的帳戶登陸.
登陸成功後,我們來設定root帳戶密碼,root擁有最高許可權,因為我們測試,所以下面所有操作都以root帳戶
輸入命令:
sudo passwd root
修改完成後,我們以root登陸
su root
ok,下面我們來安裝一些基本的軟體或服務
配置網路,因為我當前是VM安裝的,VM網路選項設定為NAT,安裝過程中Ubuntu已經分配到ip地址了,並已經可以串連上網.
你可以使用
ifconfig
來查看網路設定資訊.如果是你獨立安裝,或者採用其它網路模式,那麼你可能需要手動設定ip,這裡簡單說明一下,具體的大家可以去google. 修改網路設定檔
sudo vi /etc/network/interfaces
增加或修改auto eth0部分內容:
auto eth0
iface eth0 inet static
address 192.168.3.90 #固定ip
gateway 192.168.3.1 #預設閘道
netmask 255.255.255.0 #子網路遮罩
將上面內容替換成你自已的
修改dns
sudo vi /etc/resolv.conf
修改其中 nameserver 的值
網路設定修改完成後,請使用
sudo /etc/init.d/networking restart
來使網路設定立即生效
好了,這些部分我們不多說了,不明白的大家可以去google.
下面我們來安裝open ssh,它非常重要,能夠讓我們遠端管理我們伺服器,安裝非常簡單:
sudo apt-get install openssh-server
安裝成功,現在我們可以通過open ssh用戶端來串連了.
我這裡用的是 PuTTy.
串連成功後,可以遠端控制ubuntu server,並執行shell
說到這裡我給大家提供兩個工具,後面有下載,一個就是上面說的到PuTTy,用來管理linux和執行shell一個就是winscp,它可以管理linux上的檔案.
使用winscp可以管理伺服器檔案
我們接著安裝apache
sudo apt-get install apache2
安裝完成後,我們立即就可以在瀏覽器中測試,輸入伺服器ip:
安裝mono
sudo apt-get install mono-gmcs mono-xsp2 libapache2-mod-mono mono-apache-server2
sudo a2enmod mod_mono
這裡遇到一個問題,在安裝libapache2-mod-mono後會出現很久無法返回狀況,每次都是重啟來解決,重啟後
執行下一個命令時系統會提示
E:dpkg was interrupted ,you must manually run 'sudo dpkg --configure -a' to correct the problem
造成這種提示原因就是剛才的安裝被中斷了,但是執行libapache2-mod-mono等好久都無法返回,所以只有重啟.不過沒關係,按他說的執行
sudo dpkg --configure -a
不知道是軟體bug還是操作錯誤,有知道的朋友可以提示一下.
Ok,到了這裡,差不多了,於是上傳了一個help.aspx檔案到 /var/www/下面.運行時發現
.net代碼根本沒執行,服務端控制項基本無效,如
最後找到原因,mono沒有正確配置.net引擎目錄,當然不會執行.於是找到 /etc/apache2/mods-available/mod_mono.conf 檔案.
使用命令編輯
sudo vim /etc/apache2/mods-available/mod_mono.conf
修改為:
編輯完成後,重啟apache
sudo /etc/init.d/apache2 restart
我們再重新整理剛才頁面,正常了,簡單服務端控制項,事件回傳都沒有問題.
我們可以用下面命令來查看mono版本資訊
mono -V
Ok,現在我們的apache+mono已經可以執行asp.net檔案了.後面我們將進行稍複雜的測試.
下面我們來安裝配置 mysql,這部分簡單說明一下,網上有很多教程
sudo apt-get install mysql-server
安裝過程中會提示你輸入root帳戶密碼.
安裝完成後,登陸mysql,我們以root登陸.
mysql -u root -p
建立一個測試使用者AAA,密碼123456,該只對資料庫Test有全部許可權
grant all privileges on Test.* to AAA@localhost identified by "123456"
至於mysql的管理命令,大家去網上搜吧,這裡不多說了.
現在我們用用戶端(windows)來串連mysql,我用的是Navicat Lite(免費版),基本操作感覺夠用了.
如需要允許外部串連,則需要修改mysql下的設定檔/etc/mysql/my.cnf,將bind-networking去掉
如果還是無法串連請採用下面方法:(摘錄)
1。 改表法。可能是你的帳號不允許從遠程登陸,只能在localhost。這個時候只要在localhost的那台電腦,登入mysql後,更改 "mysql" 資料庫裡的 "user" 表裡的 "host" 項,從"localhost"改稱"%"
mysql -u root -p
mysql>use mysql;
mysql>update user set host = '%' where user = 'root';
mysql>select host, user from user;
2. 授權法。例如,你想myuser使用mypassword從任何主機串連到mysql伺服器的話。
GRANT ALL PRIVILEGES ON *.* TO 'myuser'@'%' IDENTIFIED BY 'mypassword' WITH GRANT OPTION;
如果你想允許使用者myuser從ip為192.168.1.3的主機串連到mysql伺服器,並使用mypassword作為密碼
GRANT ALL PRIVILEGES ON *.* TO 'root'@'192.168.1.3' IDENTIFIED BY 'mypassword' WITH GRANT OPTION;
GRANT ALL PRIVILEGES ON *.* TO 'root'@'10.10.40.54' IDENTIFIED BY '123456' WITH GRANT OPTION;
OK,差不多就結束了,
弄了一個簡單web項目,裡麵包含了普通了c#邏輯代碼,外部dll,httphandler,cookies,session,upload,調用webservice並用vs2008正常編譯,然後上傳到apache目錄下.
經測試完全正常,大家需要注意了,linux下是區分大小寫,所以大家在輸入url時,大小寫一定要批配.至於讓apache忽略大小寫,大家自已去搜吧.
ubuntu server 10.0.4 預設是shell介面,沒有圖形介面.
如果需要圖形介面可以另外安裝,重新啟動即可進入圖形介面
sudo apt-get install xinit
sudo apt-get install gdm
sudo apt-get install Ubuntu-desktop
sudo apt-get install language-support-zh #中文語言套件
好了,希望對需要的朋友有協助.歡迎大家批評指正. PuTTy+winscp 下載
轉載請注名出處!