前段時間給一家地產評估公司作了一個小型的工單管理系統,局方老闆買了一臺PC機打算當作服務器,服務器放在局域網裏面。要求外網能夠經過域名訪問獲得這臺服務器。項目開發語言爲php。php
本案例一樣適用想要在本身家裏的電腦上面搭建服務器並經過域名訪問的童鞋。不侷限於apache作服務器,使用java部署在tomcat或者使用IIS過程基本上差很少。java
關鍵字:wamp,動態DNS,ftp架設,phpmyadmin遠程數據庫管理mysql
關鍵問題:sql
雖然貌似搜一下不少相關內容,可是實際操做起來,仍是會碰到很多問題。這裏全程記錄,但願對其餘在局域網內網部署外網訪問的系統的童鞋有幫助。數據庫
搭建php的運行環境是很是簡單的,由於不少php的集成安裝包。我最喜歡的是用wamp,windows下apache,mysql,php集成 包,還帶有phpmyadmin,很是方便。關於wamp的安裝就很簡單了,直接下一步直到結束就行。把php工程整個copy到wamp的www目錄下 面。apache
順便提醒下,我是採用cakephp開發的,須要apache開啓rewiter_module才能夠工做。windows
在開發者的機子上,通常都是以www爲主目錄,可是產品上線後就應該要以產品自己的目錄做爲主目錄了。好比說你的域名是 http://www.xxx.com,你的產品目錄名稱叫project,若是沒有設置產品目錄爲主目錄,那麼你要訪問項目的地址就是:http: //www.xxx.com/project,顯然很很差看,客戶固然但願輸入地址直接到系統首頁了。因此首先要修改apache的documentRoot指向產品目錄。 在wamp裏面能夠直接找到apache的httpd.conf配置文件,找到documentRoot配置項,修改爲產品目錄名,例如原先 是」d:/wamp/www/」 改爲」d:/wamp/www/project」,而後下面<Directory 「d:/wamp/www/」> 特定目錄的訪問控制,也要修改爲所須要的訪問控制權限,例如禁止訪問目錄等。tomcat
這裏有一個折騰了我整整1天時間的問題,就是網站的訪問端口。咱們都知道默認的訪問端口都是80端口,這樣 url地址能夠形如http://www.xxxxx.com/這樣來進行訪問。若是訪問端口修改,改爲81之類的,那地址就會變成形如:http: //www.xxxxx.com:81這樣。因此爲了url方便好記,網址通常不多修改端口。可是這裏有個很大的問題:咱們這裏的電信屏蔽了80端口,因此若是配置成80端口就沒法訪問,必需要修改端口。若是你發現經過80沒法訪問,那就要注意修改端口試試。這是個和諧的社會。安全
修改服務器端的端口同樣,是在httpd.conf這個配置文件裏面修改的。找到httpd.conf開頭附近一個listen 80,改爲本身想要的端口便可,這裏示例咱們是改爲8888端口。建議端口號要在1024以上。至於爲何,其實我也不知道,只是看到一些文章這樣建議~服務器
局域網內配置路由器端口映射使得外網能夠訪問局域網內的電腦,這是很關鍵的一步。寬帶的ip都是動態分配的,每次路由器重啓後ip地址都會變化,所 以這裏就須要使用動態DNS,普通的DNS解析就是將域名映射到你的IP上,可是如今你的IP是動態的,因此只能用動態DNS。最有名的動態DNS固然是 大名鼎鼎的花生殼了。
此外,本身機子上面看到的ip每每都是形如192.168.1.x這類的內網ip地址。真正的ip地址在路由器上面。咱們須要配置路由器的端口映射,當外網訪問你的ip地址的某一個端口的時候,將請求轉發給局域網內的做爲服務器的那臺電腦。
首先,須要將服務器的ip地址固定,不使用自動得到ip地址。例如設置成192.168.1.107。
而後,局域網內任意一臺機器,訪問192.168.1.1地址,即路由器的管理地址(通常來講這個地址不會變),用戶名密碼若是沒有修改過的話,都 是admin,登錄後進入路由器的管理界面,示例用的路由器是TP-Link的路由器,型號TL-R1660,是比較強大的一個路由器,能夠配置的功能還 挺多。找到 轉發規則-》虛擬服務器,而後添加一個新的虛擬服務器條目:
而後用一樣的方法加一個21端口,用於接下來作ftp。關於ftp,下一小節介紹。完成後就形如:
接下來就是要申請一個花生殼的動態DNS解析服務,到花生殼上面註冊一個用戶名密碼,http://www.oray.cn/ ,申請一個域名,獲得一個形如xxxxxx.vicp.net的2級域名(就2級域名,先用着)。而後在你的路由器的動態DN裏(TP-Link的路由器 L-R1660自帶了動態DNS的支持,能夠直接用花生殼登錄)填寫你的用戶名密碼而後登錄,若是登陸成功,恭喜你,你設定的服務器,已經能夠經過域名來 訪問了:
接下來,你就能夠域名訪問了,不過要注意的是,咱們的訪問須要加上端口8888,因此訪問的地址就是:http://www.xxxxxx.vicp.net:8888,長得比較難看的url,可是沒辦法,畢竟是免費的。
由於服務器在公司的局域網內部,咱們作開發的不可能老過去給改改調調的,因此還得遠程架設個ftp服務器來作管理。下載一個漢化破解版的Serv-U做爲ftp服務端,安裝在服務器上。安裝完後會彈出設置嚮導,大部分狀況下都是下一步,有幾個步驟要注意:
安裝爲系統服務,並設定爲開機自動啓動,這樣能夠保證ftp服務在後臺一直運行。不然每次要登陸ftp,還須要服務器那邊的人把ftp給開起來,外網才能夠鏈接上。
爲了安全起見,不要開放匿名訪問。
定義ftp帳號的主目錄,這樣比較方便ftp管理,一登錄立刻自動跳轉到咱們須要管理的目錄。
你能夠視狀況設定是否鎖定在主目錄。通常建議鎖定在主目錄,比較安全。
此外,中間還有設置登錄ftp用戶名密碼的過程,請設定一個用於登錄的用戶名密碼。這些設定完以後,啓動ftp服務器便可。而後咱們在客戶端就能夠隨便採用任意的ftp客戶端來訪問與管理了。
若是是本身安裝的phpmyadmin,那麼外網能夠直接訪問,像我是wamp自帶的phpmyadmin,須要修改下訪問配置,不然外網沒法訪問。到/wamp/alias下面打開phpmyadmin.conf的配置文件,按照配置文件的說明,將
# Order Deny,Allow
# Deny from all
# Allow from 127.0.0.1
#
替換成:
#
# Order Allow,Deny
# Allow from all
這樣外網就能夠訪問phpmyadmin用來進行數據庫管理了。