51Testing软件测试论坛

标题: linux下搭建discuz个人论坛,并实现动态ip下的公网域名访问 [打印本页]

作者: 零度绝恋    时间: 2009-6-8 16:06
标题: linux下搭建discuz个人论坛,并实现动态ip下的公网域名访问
前段时间在51的课上,老师讲了如何搭建linux+apache+ccb,后来突发奇想,想自己下
载个论坛来装装,研究研究看可否拥有自己的论坛,后来在网上查了很多资料,发现discuz
的论坛不错,嘿嘿,包括51testing的论坛也是用的这个,这个撞下来,感觉真的学到了很多
的东西,对于我这个本科不是计算机专业的来说,计算机确实是我的兴趣所在,这篇文章可
能适合那么想自己研究服务器,想自己在电脑上做做论坛,又没有太多钱去申请顶级域名和
租用别人的服务器空间,本文介绍的是只要你的电脑通过adsl接入了internet,就能实现公
网访问你自己搭建的论坛,而且全免费的,当然免费的自然在稳定性上是打折扣的,就下面
就来讲讲具体的搭建过程。
    我的环境是这样的,小上网本上装的xp系统,网通的ADSL接入,并且和别人通过路由共
享,再装上VMware-workstation-5.5.2-29772和SecureCRT 5.04,然后再在VM中把RHEL4系统
装上。
    首先准备好要在linux中安装的软件,所用到的软件有如下:
httpd-2.0.55.tar.gz
MySQL-server-5.0.16-0.i386.rpm
MySQL-client-5.0.16-0.i386.rpm
MySQL-devel-standard-4.1.22-0.rhel4.i386.rpm
zlib-1.2.3.tar.gz  下载地址:http://down.itlearner.com/soft/2359.shtml
libpng-1.2.12.tar.gz  下载地址:http://down.itlearner.com/soft/2362.shtml
freetype-2.2.1.tar.gz  下载地址:http://down.itlearner.com/soft/2361.shtml
jpegsrc.v6b.tar.gz  下载地址:http://down.itlearner.com/soft/2360.shtml
gd-2.0.33.tar.gz   下载地址:http://down.itlearner.com/soft/2357.shtml
php-5.1.6.tar.gz   下载地址:http://down.itlearner.com/soft/2355.shtml
Discuz_7.0.0_FULL_SC_GBK.zip  //discuz论坛
gnhostlinux1.2.6.tgz   //动态DDNS解析的客户端
    用SecureCRT连接上VM中的linux
说明:我在/usr下建立了文件夹install,把以上所有的安装文件通过CRT传到install文件夹
下,然后所有软件的安装路径均/usr/local/;具体操作如下(CRT中操作):
一、上传相关软件包
mkdir /usr/install   /*创建install文件夹用户存在软件包*/
#cd /usr/install     
在Transfer中选择软件
#rz      /*上传*/
二、安装
1、apache的安装
#cd /usr/install
#gzip -d httpd-2.0.55.tar.gz
#tar xvf httpd-2.0.55.tar
# cd httpd-2.0.55
#./configure --prefix=/usr/local/apache2  /*指定安装目录,并编译configure*/
#ls     /*此处查看应该会生成一个makefile文件,否则无法进行make编译*/
#make
# make install
# vi /usr/local/apache2/conf/httpd.conf   /*找到#ServerNamewww.example.com:80,将
前面的“#”删掉,并将www.example.com改为linux虚拟机的ip地址*/
# /usr/local/apache2/bin/apachectl start  /*测试方法:IE中输入linux虚拟机的ip,
http://ip,如果弹出“这不是你想看见的页面吧?”的apache网页,说明成功过安装*/
2、mysql的安装
#cd /usr/install
#rpm -ivh MySQL-server-5.0.16-0.i386.rpm
#rpm -ivh MySQL-client-5.0.16-0.i386.rpm
#rpm -ivh MySQL-devel-standard-4.1.22-0.rhel4.i386.rpm
#mysql   
......   /*中间的内容省略了~*/
mysql>     /*如果进入了这一行,说明mysql安装成功*/
3、PHP的安装
3.1. 安装zlib(安装libpng和gd前需要先安装zlib)
#cd /usr/install
# tar zxvf zlib-1.2.3.tar.gz
# cd   zlib-1.2.3
# ./configure
# make;make install
3.2. 安装libpng
#cd /usr/install
# tar zxvf libpng-1.2.12.tar.gz
# cd libpng-1.2.12
# ./configure
# make;make install
3.3. 安装freetype
# tar zxvf freetype-2.2.1.tar.gz
# cd freetype-2.2.1
# ./configure --prefix=/usr/local/freetype
# make;make install
3.4. 安装jpeg
# tar zxvf jpegsrc.v6b.tar.gz
# cd jpeg-6b
# mkdir /usr/local/jpeg
# mkdir /usr/local/jpeg/bin
# mkdir /usr/local/jpeg/lib
# mkdir /usr/local/jpeg/include
# mkdir /usr/local/jpeg/man
# mkdir /usr/local/jpeg/man/man1
# ./configure --prefix=/usr/local/jpeg --enable-shared --enable-static
# make;make install
3.5. 安装gd
# tar zxvf gd-2.0.33.tar.gz
# cd gd-2.0.33
# ./configure --prefix=/usr/local/gd --with-jpeg=/usr/local/jpeg --with-
freetype=/usr/local/freetype --with-png --with-zlib
/*编译过程中会看到如下信息
** Configuration summary for gd 2.0.33:
    Support for PNG library:           yes
    Support for JPEG library:          yes
    Support for Freetype 2.x library: yes
    Support for Fontconfig library:    no
    Support for Xpm library:           no
    Support for pthreads:              yes
可以看到png 、 jpeg 、 freetype都已经安装上了*/
# make
# make install
3.6. 正式安装php
# tar zxvf php-5.1.6.tar.gz
# cd php-5.1.6
# ./configure --prefix=/usr/local/php5 --with-apxs2=/usr/local/apache2/bin/apxs
--with-mysql=/usr/local/mysql --with-gd --with-zlib --with-png --with-jpeg --
with-freetype --enable-sockets --with-iconv --enable-mbstring --enable-track-vars
--enable-force-cgi-redirect --with-config-file-path=/usr/local/php5/etc
#make
#make install   

4、整合php和apache
#cp php.ini-dist   /usr/local/php5/etc/php.ini
#vi /usr/local/php5/etc/php.ini   /*找到;extension=php_mysql.dll将前面的;去掉*/   

5、文件配置
#vi /usr/local/apache2/conf/httpd.conf   
/*编辑apache配置文件,在AddType application/x-gzip .gz .tgz下增加以下两行
       AddType application/x-httpd-php .php .phtml
       AddType application/x-httpd-php-source .phps
如果你搜索其它地方没有以下这行,那么也加入进去,有的话,注意把前面的#去掉
LoadModule php5_module modules/libphp5.so
找到:
DirectoryIndex index.html index.html.var
修改为:
DirectoryIndex index.php index.html index.html.var  让它把index.php做为默认页
找到:
#ServerName ...  
把#去掉,后面的IP改成你虚拟机的IP,例如我的是ServerName 192.168.1.110:80
为了让中文网页没乱码,找到:
Add/Default/Charset iso8859-1
把后面的iso8859-1改为gb2312 或者是干脆off
其他的选项就自己修改吧!或者到http://article.21e.cn ;有一个专门的httpd.conf的说明
!
修改完毕保存后退出vi*/

6、php的测试:
#vi /usr/local/apache2/htdocs/test.php  /*在apache2的htdocs目录下建一个test.php文
件,在文件中输入:
<? phpinfo(); ?>
然后保存并推出,通过浏览器查看http://ip/test.php,出现了php先关的一些信息,说明安
装成功*/   

7、安装Discuz!_7论坛:
#cd /usr/install
#unzip Discuz_7.0.0_FULL_SC_GBK.zip
#ls   /*此处会看到有个upload的文件夹*/
#cp upload /usr/local/apache2/htdocs/      /*将整个文件夹拷贝到htdocs目录下,
thdocs目录为apache默认访问的根目录*/
#cd /usr/local/apache2/htdocs/upload    /*进入upload目录*/
#chmod -R 777 ./config.inc.php   /*设置目录和文件的访问权限,下同*/
#chmod -R 777 ./attachments
#chmod -R 777 ./forumdata
#chmod -R 777 ./forumdata/cache
#chmod -R 777 ./forumdata/templates
#chmod -R 777 ./forumdata/threadcaches
#chmod -R 777 ./forumdata/logs
#chmod -R 777 ./uc_client/data/cache
#chmod -R 777 ./uc_server
在浏览器中输入http://ip/upload/install/index.php
进入discuz的web安装向导,读授权协议后点击“我同意”,系统会自动检查环境和目录文件
权限,检测成功,点击“检测通过,跳转到下一步”,即进入填写基本信息页面,剩下的按
照向导做就行了
这里补充一点:在apache的配置文件httpd.conf中有下面这个:
DocumentRoot "/usr/local/apache2/htdocs"
它的作用是制定访问的根目录,如果不修改,那么如果输入http://ip/index.php,则出现的
是在htdocs下的index.php,如果输入的是http://ip/upload/index.php,那么出现的是在
htdocs/upload目录下的index.php页面,因为我们论坛的安装主页是放在了
htdocs/upload/install目录下,所以在上面是要输入http://ip/upload/install/index.php

如果你已经安装成功,那么恭喜你可以在局域网中访问你的论坛了,如果想在公网中也能访
问,那么请继续看下去:

8、路由端口映射
假设你拉了一根电信的宽带,经过猫,再经过路由,路由上接了不止你一个用户,也就是这
个路由和连在路由上的电脑本身构成了一个局域网,在这个局域网内部的,通过内部ip是可
以访问你的论坛的,路由上所有电脑的内部ip(例如192.168.1.20)最终通过路由解析后在
公网上是同一个ip,也就是说,别人要访问你的电脑,但是公网ip只有一个,发过来的请求
到底是发给局域网中的哪台主机呢,所以此时我们需要在路由上做端口映射,现在一般的路
由都带有这个功能,根据路由的说明进入路由管理界面,找到相应的虚拟服务器的选项,然
后填好服务端口和对应的内网电脑的ip地址,也就是把这些端口映射到你linux服务器上,此
时,我们就可以在外网通过http://ip/upload/index.php (此处的ip是外网的ip,可以进入
路由器管理界面查看相应状态得到) 来访问你的论坛,不过这个ip是不固定的,关掉路由重
新启动后,ip就会不一样了,是不是感觉很麻烦,不要急,下面还有方法可以解决
9、动态DNS解析(DDNS)
首先,你需要了解什么是动态DNS解析,按照我的理解,当你的服务器启动以后,动态DNS解
析的客户端会将你的目前的ip地址传送到相应的动态DNS解析服务器上,把你目前的ip与你预
先设定好的域名进行关联,从而在外网上通过域名能正确的找到你的主机。
要实现动态解析,首先需要在相应的服务商注册一个账号,我这里用的是金万维的
http://www.gnway.cn),用它的二级域名是可以免费进行动态DNS解析的,注册成功之后
,你就拥有了这样的域名http://aaa.gnway.net(aaa为你注册名),然后下载它的动态解析客
户端安装在linux上(这里具体的安装请参见网页上的介绍)。
结尾语:看来确实是个比较复杂的工程,我在装的过程中也遇到过各种各样的问题,碰到的
问题多了其实是比较好的,因为你可以学到更多的东西。
对于我来说,通过这个安装,学到的东西有下面这些:
熟悉掌握了linux下文件的安装及linux的相关命令
熟悉掌握了vi编译器的使用和命令
熟悉了相关环境的配置方法
掌握了一些网络的基础知识
了解了论坛管理员的整个操作
了解了网页的模式,能够自己更换论坛的logo等,其中扩展的包括icon的制作,ps的使用等

学会了一点数据库的备份与恢复
    关于数据库的备份与恢复这一点上,有个插曲,论坛我装了有2遍,先前装的那个,我向
我的大学同学开放过,他们也在里面注册过,所以相关的数据存在,装了第2个以后,因为是
把虚拟机的内存和硬盘容量都设置的比较大,跟适合做这个论坛服务器,因此想把第一个上
的论坛数据转移到第二个论坛上,也就相当于是论坛搬家的工程,我吧第一个论坛的数据在
后台进行了备份,把生成的*.sql备份文件传到第二个虚拟机里面,然后在第二个虚拟机上进
入论坛后台执行数据恢复操作,发现并不能识别这个备份,思考了一下,首先用第二个论坛
也备份一下,产生一个备份文件,然后把这2个论坛产生的.sql文件进行对比,发现在sql文
件的第一行都有一长串的字符串,下面的论坛说明性文字是一样的,当然再往下的数据部分
,肯定是不一样的啦,我就猜想是不是这个字符串起到了识别作用,于是将第二个备份文件
的那个字符串复制粘贴在第一个备份文件里,替换掉了第一个原先的那个字符串,保存后,
再把第一个备份文件的文件名更改成和第二个一样的名字,然后粘贴进去,覆盖掉第二个备
份,在执行回复操作,发现所有的数据成功的导入,导入后的界面和我第一个的一模一样,
到此整个的搬家工程算是完成了,其实,从这个当中,我感觉我们遇到问题的时候,首先要
有个解决问题的总体思想,然后敢于去开拓,去把你的思维扩散。
    最后希望大家能搭建成功,并从中学到自己想要的东西!觉得有用的朋友,帮忙顶一下哈!!!
作者: 零度绝恋    时间: 2009-6-8 16:25
嘿嘿,写的辛苦,自己沙发鼓励一下
作者: 大浪淘金    时间: 2009-6-8 16:42
不错啊,顶上去
作者: wyf105    时间: 2009-6-8 16:45
能加上ftp就更好了
作者: delightyyl    时间: 2010-5-6 18:45
一定要在Linux下安装吗?在Windows xp里可不可以安装啊?我最近也在尝试着装discuz,不过装的时候提示:
无法连接数据库,请检查数据库是否启动,数据库服务器地址是否正确

您必须解决以上问题,安装才可以继续
你知道怎么解决不?
作者: bestgo    时间: 2010-5-6 20:59
原帖由 delightyyl 于 2010-5-6 18:45 发表
一定要在Linux下安装吗?在Windows xp里可不可以安装啊?我最近也在尝试着装discuz,不过装的时候提示:
无法连接数据库,请检查数据库是否启动,数据库服务器地址是否正确
  • Can't connect to MySQL server on  ...

  • 不是说的很清楚了,mysql连不上,只有两种可能:
    1. 你没有正确安装mysql,mysql没有正确启动
    2. 在discuz里没有配置正确的mysql登陆账号
    作者: gaha    时间: 2010-7-6 16:21
    原帖由 delightyyl 于 2010-5-6 18:45 发表
    一定要在Linux下安装吗?在Windows xp里可不可以安装啊?我最近也在尝试着装discuz,不过装的时候提示:
    无法连接数据库,请检查数据库是否启动,数据库服务器地址是否正确
  • Can't connect to MySQL server on  ...


  • 启动mysql,选择正确的用户名和密码就可以了。

    discuz的论坛,看你用.net还是php的版本了,前者当然必须有win的支持,后者当然是LAMP的架构最为方便和合理了。

    个人倾向LAMP的架构,省事儿。
    作者: msnshow    时间: 2010-7-14 20:35
    搞成自动化安装的脚本就更完美了
    作者: 千里    时间: 2010-7-15 09:05
    原帖由 msnshow 于 2010-7-14 20:35 发表
    搞成自动化安装的脚本就更完美了

    要是谁有能力写个shell就好了
    作者: chengning    时间: 2010-7-15 10:17
    学习了




    欢迎光临 51Testing软件测试论坛 (http://bbs.51testing.com/) Powered by Discuz! X3.2