局域网内部署外网访问应用实战

实况背景

前段时间给一家地产评估公司做了一个小型的工单管理系统,局方老板买了一台PC机打算当做服务器,服务器放在局域网里面。要求外网可以通过域名访问得到这台服务器。项目开发语言为php。

本案例同样适用想要在自己家里的电脑上面搭建服务器并通过域名访问的童鞋。不局限于apache做服务器,使用java部署在tomcat或者使用IIS过程基本上差不多。

关键字:wamp,动态DNS,ftp架设,phpmyadmin远程数据库管理

关键问题:

  1. 局域网内如何配置路由器端口映射使得外网可以访问局域网内的电脑?
  2. 如何架设一个可以远程管理的环境,ftp以及数据库phpmyadmin管理?

虽然貌似搜一下很多相关内容,但是实际操作起来,还是会碰到不少问题。这里全程记录,希望对其他在局域网内网部署外网访问的系统的童鞋有帮助。

运行环境搭建

搭建php的运行环境是非常简单的,因为很多php的集成安装包。我最喜欢的是用wamp,windows下apache,mysql,php集成 包,还带有phpmyadmin,非常方便。关于wamp的安装就很简单了,直接下一步直到结束就行。把php工程整个copy到wamp的www目录下 面。

顺便提醒下,我是采用cakephp开发的,需要apache开启rewiter_module才可以工作。

在开发者的机子上,一般都是以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/”> 特定目录的访问控制,也要修改成所需要的访问控制权限,例如禁止访问目录等。

这里有一个折腾了我整整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,是比较强大的一个路由器,可以配置的功能还 挺多。找到 转发规则-》虚拟服务器,然后添加一个新的虚拟服务器条目:

1

然后用同样的方法加一个21端口,用于接下来做ftp。关于ftp,下一小节介绍。完成后就形如:

2

接下来就是要申请一个花生壳的动态DNS解析服务,到花生壳上面注册一个用户名密码,http://www.oray.cn/ ,申请一个域名,得到一个形如xxxxxx.vicp.net的2级域名(就2级域名,先用着)。然后在你的路由器的动态DN里(TP-Link的路由器 L-R1660自带了动态DNS的支持,可以直接用花生壳登陆)填写你的用户名密码然后登陆,如果登录成功,恭喜你,你设定的服务器,已经可以通过域名来 访问了:

3

接下来,你就可以域名访问了,不过要注意的是,我们的访问需要加上端口8888,所以访问的地址就是:http://www.xxxxxx.vicp.net:8888,长得比较难看的url,但是没办法,毕竟是免费的。

架设ftp管理

因为服务器在公司的局域网内部,我们做开发的不可能老过去给改改调调的,所以还得远程架设个ftp服务器来做管理。下载一个汉化破解版的Serv-U作为ftp服务端,安装在服务器上。安装完后会弹出设置向导,大部分情况下都是下一步,有几个步骤要注意:

4

安装为系统服务,并设定为开机自动启动,这样可以保证ftp服务在后台一直运行。否则每次要登录ftp,还需要服务器那边的人把ftp给开起来,外网才可以连接上。

5

为了安全起见,不要开放匿名访问。

7

定义ftp账号的主目录,这样比较方便ftp管理,一登陆马上自动跳转到我们需要管理的目录。

8

你可以视情况设定是否锁定在主目录。一般建议锁定在主目录,比较安全。

此外,中间还有设置登陆ftp用户名密码的过程,请设定一个用于登陆的用户名密码。这些设定完之后,启动ftp服务器即可。然后我们在客户端就可以随便采用任意的ftp客户端来访问与管理了。

phpmyadmin数据库管理配置

如果是自己安装的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用来进行数据库管理了。

原文:http://my.oschina.net/sirchan/blog/48731

posted @ 2013-05-04 22:40  busyfruit  阅读(1039)  评论(0)    收藏  举报