在NetBSD上安装discuzX1

搭建稳定、小巧、安全、基于NetBSD的各种服务器。

版主: lionux

回复
头像
leo
帖子: 2465
注册时间: 2010-01-21 3:27

在NetBSD上安装discuzX1

帖子 leo » 2010-05-12 20:52

说明:
最简洁的方式是使用packages的安装方式,因为没有必要再将别人编译过的packages重新编译一遍,因为那些生成的packages是一模一样的,除非你不想用默认参数,也就是用特殊的编译参数控制编译过程,本例中,因为稳定版的AMP和空间上的一样,所以我们采用稳定版构建NAMP,但是如果你是新的环境,完全可以使用当前版,而且当前版的packages维护似乎好一些,根据lionux兄的建议,使用pkgin来安装packages比较省心,当然你可能也有你自己的喜欢的工具,这里采用手动编译仅是作为例子。


一. 需要进行的网络设置:
1. 建立一个文件/etc/myname,内容如如下:

代码: 全选

www.gobsd.org
2.设定主机IP,我的网卡是re0, re1,在 /etc 下建立两个个文件 ifconfig.re0和ifconfig.re1(读者请根据自己的网卡填写) , 分别并加入以下内容:

代码: 全选

inet 192.168.1.36 netmask 0xffffff00

代码: 全选

inet 192.168.1.38 netmask 0xffffff00
2.在/etc/rc.conf里加上网卡自动设定选项:

代码: 全选

auto_ifconfig=yes
3. 在 /etc/hosts里面将此域名指向本机:

代码: 全选

192.168.1.38            www.gobsd.org gobsd
192.168.1.36            www.9971.us 9971
4. 设置/etc/rc.conf文件,加上路由器地址:

代码: 全选

defaultroute=192.168.1.1
5. 在/etc/resolv.conf里设置域名服务器地址:

代码: 全选

nameserver 192.168.0.1
如果想选用多个域名服务器,接着加。

6. 在 /etc/mygate里设置网关:

代码: 全选

192.168.1.1
如果设置无误,你的主机已经正确获得了IP,并可以网络访问了。

二. 更新为稳定版:
方法略,注意这里原文的NetBSD指南上有问题,中文翻译仅是直译,未作校正,实际上更新为稳定版,应该用 -r netbsd-5-0 ,多谢lionux兄指正。

三. 设置pkgsrc路径:
因为是第一次获取pkgsrc的源代码,我们直接从ftp上将源代码文件拖下来,以后的更新还是cvs来得快,关于版本和文件的说明请读者自己查阅指南,我们这里是"pkgsrc-2010Q1.tar.gz'这个文件,这里的Q代表英文的quarter(四分之一),你也可以按时间理解成季度的意思,也就是每个季度会出一个新版本。运行如下命令下载此文件并解压:

代码: 全选

# ftp ftp://ftp.netbsd.org/pub/pkgsrc/pkgsrc-2010Q1/pkgsrc-2010Q1.tar.gz
# tar -xzf pkgsrc-20xxQy.tar.gz -C /usr
四. 搭建NAMP环境
首先我们修改一下 /etc/mk.conf文件,加上以下行:

代码: 全选

PKG_RCD_SCRIPTS=YES
这个目的是将编译pkgsrc过程中的rc.d脚本自动放置在/etc/rc.d/目录下。
0. 先生成安全漏洞检查文件,/var/db/pkg/pkg-vulnerabilities:

代码: 全选

# /usr/sbin/pkg_admin -K /var/db/pkg fetch-pkg-vulnerabilities
1. 安装apache2.2.15(今后的版本可能会变化,你并非一定要使用这个版本。)

代码: 全选

# cd /usr/pkgsrc/www/apache22
# make install clean clean-depends
这将安装apache和它的依赖包。
接下来是要配置apache,编辑 /usr/pkg/etc/httpd/httpd.conf
修改两行:

代码: 全选

Listen www.gobsd.org:80

代码: 全选

ServerName www.gobsd.org:80
ServerName 这里请注意,如果你没有有效域名可用,在这里直接的输入IP地址也可以,这也是为什么我前面设置hosts的原因。

要设置为apache开机启动,在/etc/rc.conf里加入:

代码: 全选

apache=yes
平时的apche启动(start)或停止(stop)是:

代码: 全选

# apachectl start

代码: 全选

# /etc/rc.d/apache start

leo提示:注意你的myname,hostname,和ServeName这三者是否一致,否则apache起不来。
2.安装MySQL

代码: 全选

# cd /usr/pkgsrc/databases/mysql5-server
# make install clean clean-depends
将下列内容复制到/etc/rc.conf

代码: 全选

mysqld=yes
创建文件/etc/my.cnf,并加入下列内容

代码: 全选

[mysqld]
port=3306
bind-address=127.0.0.1
mysql的默认编码是latin1,如果需要你可以调整为自己的格式,例如
找到客户端配置[client] 在下面添加
default-character-set=utf8 (默认字符集为utf8)
在找到[mysqld] 添加
default-character-set=utf8 (默认字符集为utf8)
init_connect='SET NAMES utf8' (设定连接mysql数据库时使用utf8编码,这样让mysql数据库以utf8编码初始化连接)
此外请注意最后一行的“bind-address=127.0.0.1‘,如果你要从远程连接该数据库,例如在windows下使用mysql提供的MySQLAdministrator工具来连接这个数据库,那么这里不能用这行,必须要注释掉。要远程连接还需要注释掉一行:

代码: 全选

#skip-networking
不过根据Mysql的提示,这是有风险的,请读者根据自己的情况进行甄别,我们不在这里进行讨论。

此外,如果你是安装新论坛,上面的设置已经足矣了,但是你要恢复老论坛时,可能发现你的数据库无法导入,这里还是NetBSD里mysql的限制导致的,在/etc/my.cnf文件里加上如下相应的内容以便放开上传上限、以下是我的文件:

代码: 全选

www$ cat /etc/my.cnf
[client]
default-character-set=utf8
[mysqld]
default-character-set=utf8
init_connect='SET NAMES utf8'
port=3306
#bind-address=127.0.0.1
key_buffer_size=512M
max_allowed_packet=2M
平时要运行mysql,这样:

代码: 全选

# /etc/rc.d/mysqld start
接下来为mysql-server设置本地密码,我们这里是gobsd, 先启动mysql,然后设置root密码:

代码: 全选

# /usr/pkg/bin/mysqld_safe &
# /usr/pkg/bin/mysqladmin -u root -p password 'gobsd'
Enter password:
输入的过程中,它问你现在的root密码,回车就行了(因为你还没有设置好呢。;))

3. 安装php5和apache的php模块:

代码: 全选

# cd /usr/pkgsrc/lang/php5/
# make install clean clean-depends
# cd /usr/pkgsrc/www/ap-php
# make install clean clean-depends
然后在/usr/pkg/etc/httpd/httpd.conf里加上

代码: 全选

LoadModule php5_module lib/httpd/mod_php5.so
AddHandler application/x-httpd-php .php
AddHandler application/x-httpd-php .php3
然后将

代码: 全选

DirectoryIndex index.html
修改为

代码: 全选

DirectoryIndex index.php index.html
4. 安装php的mysql模块

代码: 全选

# cd /usr/pkgsrc/databases/php-mysql/
# make install clean clean-depends
在 /usr/pkg/etc/php.ini里加入:

代码: 全选

extension=mysql.so
好了,配置结束了。

5. 安装Imagemagick
ImageMagick的图像处理比用GD速度快,效果好,安装也很简单:

代码: 全选

# cd /usr/pkgsrc/graphics/ImageMagick
# make install clean clean-depends
安装完成后执行程序convert的目录在/usr/pkg/bin/
用户可以在后面的discuzx的安装后,进行图像处理引擎的设置。

如果你想使用GD生成图形,这样:

代码: 全选

# cd /usr/pkgsrc/graphics/p5-GD
# make install clean clean-depends
六. 安装discuz
discuz是很强劲的社区程序,目前刚发行了Discuz! X1,我们就试试这个,你安装discuz7.2也一样,请参考原来的帖子。
下载地址:
http://www.comsenz.com/downloads/install/discuzx1

我们这里使用utf-8版本。
解压后将upload目录下的内容上传到/usr/pkg/share/httpd/htdocs,也就是你的web主目录。这里请注意,如果你是使用root的身份上传的,则需要权限设置,你需要先将 /usr/pkg/share/httpd/htdocs这个目录及其下子目录及文件的权限设置为755,运行以下的命令:

代码: 全选

# chmod -R 755 /usr/pkg/share/httpd/htdocs 
(后面还要设置其它的目录属性,如果你使用flashfxp等windows下的工具进行上传或属性修改,会更方便一些。)

将/usr/pkg/etc/php.ini中的short_open_tag设置为on,否则无法安装discuzx1, 如果你此时已经启动了apache,则需要重新启动以应用此设置:

代码: 全选

# apachectl stop
# apachectl start
好的,我们下面进行安装,首先先为discuzx建立一个专用数据库和用户:

代码: 全选

www# mysql -p
Enter password:gobsd.org
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 3
Server version: 5.0.90 Source distribution
 
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
 
mysql> create database discuzx default charset utf8;
Query OK, 1 row affected (0.01 sec)
 
mysql> grant all on discuzx.* to 'discuzxuser'@localhost identified by \ 'discuzxtest';
Query OK, 0 rows affected (0.03 sec)
 
mysql> quit
Bye
www#
注意如果你想远程连接数据库,稍后再修改localhost.
接下来我是采用远程安装的方式,在浏览器窗口输入http://192.168.1.38

出现如下画面:
图片



继续
图片

将图中提示的目录及文件的属性设置为777,否则无法继续安装,方法同上。





修改好后就没有问题了,点击下一步继续:
图片

出现安装向导画面,选全新安装,点击下一步。


图片

这里输入刚才我们设置的数据库信息


图片

这里随你了,我是选择跳过。

图片


OK,所有的设置全部结束,你可以使用discuzx社区程序了。

此外请注意:请自行设置数据库的安全处理,也就是将不用的权限全禁止了,此外如果需要ImageMagick做缩图处理,请单独安装这个软件,然后再discuzx1里给出软件的具体位置就可以了。再有如果需要做网页静态化处理,无需单独安装apache的rewrite模块,因为默认的安装已经包含了这个模块,你只需要开启它就可以了。


总结:
1. 安装和设置相对OpenBSD来说很简单,如果你用package将更容易,连编译的时间全省了,因为没有OpenBSD下的chroot限制,各个软件的设置时考虑的因素比较少。

2. 如果你想使用Mysqladministrator等工具链接到远程的数据库进行数据的备份和恢复等工作,需要修改/etc/my.cnf文件,将里面的:

代码: 全选

bind-address=127.0.0.1
这行删除或注释掉。
此外在数据库授权时,可以采用如下的方式以便允许远程连接到数据库上,我们这里假设你要通过192.168.1.33连接到数据库所在主机:

代码: 全选

mysql>grant all on discuzx.* to discuzxuser@192.168.1.33 identified by 'discuzxtest';
或者假设允许gobsd这个用户从任何地方连接到此数据库,这样:

代码: 全选

mysql>grant all on discuzx.* to gobsd@'%' identified by 'discuzxtest';

3. 静态化部署是如今社区程序的一个重要标志,如果你的社区采用的SEO的措施,就更便于被搜索引擎收录,要在NetBSD上开启apache的静态化功能,仅需在httpd.conf上启用它就可以了,因为默认的编译已经将rewrite模块内嵌在apache里面了。

代码: 全选

allowoverride all
rewriteengine on
首先要设置allowoverride为all,然后启用rewrite模块。

4. 此外,本例中web server和mysql在同一样主机上,根据mysql的建议,应该在my.cnf里面禁用TCL连接以保障安全。

5. 因为每个论坛程序对数据库的要求不一样,请自行参考程序说明文档以进行安全的设置。本例中,给了该用户全部的权限,你需要根据社程序的具体要求进行设置,没有必要的权限一般不要轻易给予,这样才能尽可能地确保社区的安全。

6. 如果你没有在 /etc/mk.conf 里加上以下行:

代码: 全选

PKG_RCD_SCRIPTS=YES
这个目的是将编译pkgsrc过程中的rc.d脚本自动放置在/etc/rc.d/目录下,请执行如下命令:

代码: 全选

# cp /usr/pkg/share/examples/rc.d/apache /etc/rc.d
# cp /usr/pkg/share/examples/rc.d/mysqld /etc/rc.d
=========================================================
如果你喜欢直接packages安装,也可以采用lionux推荐的pkgin这个工具,很好用,唯一需要注意的地方是packages的名称可能与pkgsrc目录里的不同,此外,有时可能pakcages之间有冲突,这个我暂时就不知道如何解决了。
我在这里把通过pkgin安装的packages列出来,里面的mg和ncurses不是其中所需的packages:

代码: 全选

nb# pkg_info
pkgin-0.3.3.1 Apt / yum like tool for managing pkgsrc binary packages
sqlite3-3.6.23.1 SQL Database Engine in a C Library
ncurses-5.7nb3 CRT screen handling and optimization package
mg-20090107 Small, fast, public domain EMACS style editor
perl-5.10.1nb1 Practical Extraction and Report Language
apr-1.3.9 Apache Portable Runtime
apr-util-1.3.9 Apache Portable Runtime utilities
apache-2.2.15 Apache HTTP (Web) server, version 2.2
xmlcatmgr-2.2nb1 XML and SGML catalog manager
jpeg-8nb1 IJG's jpeg compression utilities
tiff-3.9.2nb2 Library and tools for reading and writing TIFF data files
png-1.2.43 Library for manipulating PNG images
libxml2-2.7.6 XML parser library from the GNOME project
libltdl-2.2.6b Generic shared library support (libltdl abstraction library)
lcms-1.18.0.1nb2 Little Color Management System -- a color management library
jasper-1.900.1nb5 Software-based reference implementation of the JPEG-2000 codec
ImageMagick-6.5.7.9nb1 Package for display and interactive manipulation of images
mysql-client-5.1.47 MySQL 5, a free SQL database (client)
unzip-6.0 List, test and extract compressed files in a ZIP archive
mysql-server-5.0.90 MySQL 5, a free SQL database (server)
libmm-1.4.2nb1 Portable abstraction layer for shared memory
lynx-2.8.7nb1 Alphanumeric display oriented World-Wide Web Client
openssl-0.9.8mnb2 Secure Socket Layer and cryptographic library
php-5.2.13nb1 PHP Hypertext Preprocessor version 5
ap22-php5-5.2.13nb1 Apache (apache22) module for PHP5
php5-mysql-5.2.13 PHP extension for MySQL databases
有关vbb,ipb,phpbb,phpwind等论坛的NAMP设置就不在这板块再单独开帖子,因为大同小异,例如 vbulletin论坛还要安装一些其它的软件包,并且数据库、php也要做相应的调整操作,请读者参照这篇文章自行处理。

leo@gobsd

头像
leo
帖子: 2465
注册时间: 2010-01-21 3:27

帖子 leo » 2010-05-25 14:02

如果习惯用phpmyadmin处理数据库,也可以安装一下,实际上也只是php程序。
看下安装后的提示:
Do *not* edit "/usr/pkg/share/phpmyadmin/config.inc.php" to customize
this package because it is a link which will removed during upgrades.
The actual configuration file is "/usr/pkg/etc/phpmyadmin/config.inc.php".
然后在 /usr/pkg/etc/httpd/httpd.conf 里,加上以下的内容:

代码: 全选

Include /usr/pkg/share/examples/phpmyadmin/apache.conf

根据提示推荐,再安装

代码: 全选

# cd /usr/pkgsrc/security/php-mcrypt
# make install clean clean-depends
# cd /usr/pkgsrc/security/php-mhash
# make install clean clean-depends
然后在 /usr/pkg/etc/php.ini 里面加上

代码: 全选

extension=mcrypt.so
extension=mhash.so
short_open_tag = On

第三项是添加php程序的短标签支持,这个前面忘了说了。实际上在安装dz前,这个选项是必须设置的。

根据php的环境设置要求,酌情安装如下php扩展:
php-mbstring
php-soap
php-gd
php-curl
php-bz2
php-xsl

设置类似上述步骤,此处略。
我的php.ini添加的内容:

代码: 全选

...
extension=mysql.so
extension=mysqli.so
extension=curl.so
extension=mcrypt.so
extension=mhash.so
extension=soap.so
extension=gd.so
extension=bz2.so
extension=xsl.so
extension=dom.so
short_open_tag = On

头像
crzyfish
镍 Ni
帖子: 195
注册时间: 2010-02-05 20:11

帖子 crzyfish » 2010-05-26 16:17

虽然感觉Linux用得比较习惯了,
但是每次想起BSD都还是心潮澎湃~

头像
leo
帖子: 2465
注册时间: 2010-01-21 3:27

帖子 leo » 2010-05-27 2:09

crzyfish 写了:虽然感觉Linux用得比较习惯了,
但是每次想起BSD都还是心潮澎湃~
如果网络问题解决了,确实可以试试,我这里就是在一台老dell的真机上如上操作的,比OpenBSD简单不少,估计网络性能也好一些吧,还没有尝试过nginx和mysql,php的组合,据反映说效果还不错。

头像
crzyfish
镍 Ni
帖子: 195
注册时间: 2010-02-05 20:11

帖子 crzyfish » 2010-05-27 9:47

leo 写了:如果网络问题解决了,确实可以试试,我这里就是在一台老dell的真机上如上操作的,比OpenBSD简单不少,估计网络性能也好一些吧,还没有尝试过nginx和mysql,php的组合,据反映说效果还不错。
我觉得比ob麻烦很多……
后来又用另一个U盘拷贝了i386文件夹然后mount /dev/sd1e 才能安装成功,

昨晚又安到本子硬盘,结果硬盘分区表被标成BSD的了,像上次那个朋友说的一样,真麻烦……
然后用dd 拷贝那分区mbr,想象ob一样多系统引导,结果那个mbr也引导不了……

头像
leo
帖子: 2465
注册时间: 2010-01-21 3:27

帖子 leo » 2010-05-27 10:01

我说的简单是指安装packages和discuz,不是说多系统引导。因为NetBSD不用考虑将web服务器chroot到特定目录的问题。

头像
crzyfish
镍 Ni
帖子: 195
注册时间: 2010-02-05 20:11

帖子 crzyfish » 2010-05-27 10:27

leo 写了:我说的简单是指安装packages和discuz,不是说多系统引导。因为NetBSD不用考虑将web服务器chroot到特定目录的问题。
:)本想像以前刚接触ob一样在本子上也装一个,平常拿来练练命令行(上次用ob输错命令,一个windows分区东西基本删光光:D),结果有点受挫,分区表被改了,只有Linux能正常挂载那个资料分区,随便考一些比较重要的出来,又删盘了……

只好多参考些资料再试试好了哈哈~

头像
leo
帖子: 2465
注册时间: 2010-01-21 3:27

帖子 leo » 2010-05-27 11:38

crzyfish 写了::)本想像以前刚接触ob一样在本子上也装一个,平常拿来练练命令行(上次用ob输错命令,一个windows分区东西基本删光光:D),结果有点受挫,分区表被改了,只有Linux能正常挂载那个资料分区,随便考一些比较重要的出来,又删盘了……

只好多参考些资料再试试好了哈哈~
我原来直接用OB的安装盘做硬盘引导也没有问题,它可以指定需要引导的分区,在FAQ里讲的很清楚。如果要修复的是Windows的分区表,可以在windows下直接使用format /mbr试试。然后再尝试使用其它的启动引导程序。

头像
lionux
锌 Zn
帖子: 457
注册时间: 2010-02-04 11:09

帖子 lionux » 2010-05-27 14:17

crzyfish 写了:我觉得比ob麻烦很多……
后来又用另一个U盘拷贝了i386文件夹然后mount /dev/sd1e 才能安装成功,

昨晚又安到本子硬盘,结果硬盘分区表被标成BSD的了,像上次那个朋友说的一样,真麻烦……
然后用dd 拷贝那分区mbr,想象ob一样多系统引导,结果那个mbr也引导不了……

安装建议看看leo翻的NetBSD手册,nb安装与ob一样简单,而且还是图形化的,还带有启动管理,如果只安装windows,netbsd,opnenbsd这几个系统可以用netbsd来管理,看这里

头像
crzyfish
镍 Ni
帖子: 195
注册时间: 2010-02-05 20:11

帖子 crzyfish » 2010-05-28 14:20

lionux 写了:安装建议看看leo翻的NetBSD手册,nb安装与ob一样简单,而且还是图形化的,还带有启动管理,如果只安装windows,netbsd,opnenbsd这几个系统可以用netbsd来管理,看这里

:D主要还是我e文太差了,看不太懂那些选择,最近功课比较麻烦,可能得先放放了~
谢谢各位的帮助哈哈~

头像
leo
帖子: 2465
注册时间: 2010-01-21 3:27

帖子 leo » 2010-05-28 14:27

crzyfish 写了::D主要还是我e文太差了,看不太懂那些选择,最近功课比较麻烦,可能得先放放了~
谢谢各位的帮助哈哈~
不急不急,有时间了,一两个小时就搞定哦。

头像
crzyfish
镍 Ni
帖子: 195
注册时间: 2010-02-05 20:11

帖子 crzyfish » 2010-05-28 14:57

leo 写了:不急不急,有时间了,一两个小时就搞定哦。
恩哈哈~
leo,
我今天试了下vb做了一个小程序,狂开学校win2003的discuz ASP一个网页,放到2台xp上狂刷了一阵,5分钟不到它就当了,刷了2个小时多吧,一直services too busy ,
我用校园网、学校的lt2p电信、手机、叫群里的外地朋友开那论坛,都是那样……too busy……
我停手后半小时它才好……

你估计是他没设置好安全呢还是win server都太不禁打了?

头像
leo
帖子: 2465
注册时间: 2010-01-21 3:27

帖子 leo » 2010-05-28 16:12

crzyfish 写了:恩哈哈~
leo,
我今天试了下vb做了一个小程序,狂开学校win2003的discuz ASP一个网页,放到2台xp上狂刷了一阵,5分钟不到它就当了,刷了2个小时多吧,一直services too busy ,
我用校园网、学校的lt2p电信、手机、叫群里的外地朋友开那论坛,都是那样……too busy……
我停手后半小时它才好……

你估计是他没设置好安全呢还是win server都太不禁打了?
Windows上应该也可以做IP线程的限制,估计是人家觉得祖国形势一片大好。结果被你害了。:D

头像
crzyfish
镍 Ni
帖子: 195
注册时间: 2010-02-05 20:11

帖子 crzyfish » 2010-05-28 22:00

leo 写了:Windows上应该也可以做IP线程的限制,估计是人家觉得祖国形势一片大好。结果被你害了。:D
不懂有没有,下午他们关了一阵,没搞出啥,又开放了……
反正这回他们是栽大了,我是不搞他们了,自生自灭吧~呵呵

头像
leo
帖子: 2465
注册时间: 2010-01-21 3:27

帖子 leo » 2010-05-28 22:12

crzyfish 写了:不懂有没有,下午他们关了一阵,没搞出啥,又开放了……
反正这回他们是栽大了,我是不搞他们了,自生自灭吧~呵呵
也,不一定是人家出事了,也许人家给你屏蔽了。:D

头像
crzyfish
镍 Ni
帖子: 195
注册时间: 2010-02-05 20:11

帖子 crzyfish » 2010-05-31 20:28

leo 写了:也,不一定是人家出事了,也许人家给你屏蔽了。:D
没有啦,真的是被我拿下了,
一台电脑的成本完成ddos的巨任,为我欢呼一下吧~

比较不爽的是, 我后来去给他们发帖报这问题了,很多人叫嚣要处分我,实在不爽。
自己地头实话说也轮不到因他们被处分。
这问题估计他们永远也解决不了的,haha~
那天心情好,玩死他们……

头像
leo
帖子: 2465
注册时间: 2010-01-21 3:27

帖子 leo » 2010-06-01 10:38

crzyfish 写了:没有啦,真的是被我拿下了,
一台电脑的成本完成ddos的巨任,为我欢呼一下吧~

比较不爽的是, 我后来去给他们发帖报这问题了,很多人叫嚣要处分我,实在不爽。
自己地头实话说也轮不到因他们被处分。
这问题估计他们永远也解决不了的,haha~
那天心情好,玩死他们……
善哉善哉,玩心太重了。

回复

在线用户

正浏览此版面之用户: 没有注册用户 和 6 访客