善意提醒

如果您打开本站很慢,布局排版混乱,并且看不到图片,那么可能是因为您还没有掌握用科学的方法上网的本领。
显示标签为“discuz”的博文。显示所有博文
显示标签为“discuz”的博文。显示所有博文

2006-03-24

OpenBSD研究手记(六)

把 OpenBSD 重装了。

这次,严格使用从来没使用过的密码(用生成器生成),以免它被攻破之后危急其它的系统。
按照以前的经验,重新安装 Apache2,这次没有遇到任何困难。在新电脑上架设的虚拟机也升级到了 5.5.1,而且硬盘没有使用压缩模式,因此编译、安装的速度快了很多很多。

安装完 Apache2 之后,我把虚拟机停掉,将整个目录打包作了个备份。这样,以后要是安装时出了什么差错,起码系统可以回到这个还原点上。

接着,安装 MySQL。这次我不用那个 5.0.19 的源代码分发包了,改用从 http://www.openbsd.org/3.8_packages/i386.html 处下载的 MySQL 4.0.24 的二进制分发版本。这个版本比较奇怪,分为 Client 和 Server 两部分(这倒不特别奇怪),而且安装的路径不是通常的 /usr/local/mysql,而是直接丢在了 /usr/local/lib、 /usr/local/libexec、 /usr/local/include、 /usr/local/bin 等目录里面。我想,这大概是 BSD 上的 mysql 的安装习惯吧?当然,步骤还是一样,直接在 /usr/local 把它们解压掉就行。

然后,还是要建立 mysql 用户。不过,这个版本奇怪的一个地方在于。它要求创建 _mysql 组,而不是 mysql 组。因此:

groupadd _mysql
useradd -m -g _mysql mysql

当然,mysql_install_db --user=mysql 还是要运行的。然而,接下来要修改的权限又是一个麻烦的地方。因为它的安装路径和我以前装过的 for Linux 版本不一样,因此要修改的目录也就不同。

chown -R mysql /var/mysql
chgrp -R _mysql /var/mysql
chown -R mysql /var/run/mysql

这最后一个目录,一开始不一定有,运行一次 mysqld_safe 可能就会钻出来。

安装 MySQL,我瞥见压缩包里面有着各种 so 文件。估计这次编译 PHP 应该不有什么问题了,实际情况也是如此。很快地,我就又可以安装 discuz 了。
后面的过程和以前是一致的。这次 discuz 的运行没有遇到上次那样的问题。我用管理员帐号登录论坛,打开控制面板,OK,页面出现。不过,还是有点小问题。在「头像」的位置上,出现了一个页面错误的提示,说 Zend Optimizer 没有被安装。

我的确是在 discuz 的官方网站上看到过它需要 Zend Optimizer 的支持。不过既然它到目前为止都表现良好,那也许需要 Zend Optimizer 的只是其中的一小部分功能吧。我去 Zend Optimizer 的官方网站查找 for OpenBSD 的版本下载,结果却令我大失所望。网站上只提供 for OpenBSD 3.3 / 3.4 的版本的下载,连 3.7 都不支持,别说 3.8 了。

我只好下载了 Zend Optimizer 2.6.0 for OpenBSD 3.4。上传到 OpenBSD 服务器上解压,发现有一个 install.sh 可以执行。但执行的结果是告诉我 libm.so.1.0 这个文件不存在,继续执行,发现还有 libc.so.30.0 和 libutil.so.9.0 都找不到。locate 的结果发现,这三个文件的高版本都存在,只是名字不同而已。OpenBSD 为什么没有把不同版本的 so 文件给符号链接到一个通用文件名上的习惯呢?我手动创建了到这些低版本的符号链接,再执行 install.sh,得到的是一个错误。

查看 Zend Optimizer 的安装指南。上面说 OpenBSD 的安装方法是要把 ZendOptimizer.so 拷贝到 /usr/local/lib,然后在 php.ini 中增加两行配置:

zend_optimizer.optimization_level=15
zend_extension="/usr/local/lib/ZendOptimizer.so"

我一看我的 PHP 连 php.ini 都没有生成。看来功能全部是靠编译链接出来的。拷贝了一个 php.ini-recommended 到 /usr/local/lib,加上这两行。然后再检查 phpinfo(),果然 Zend Optimizer 在功能表中出现了。

整个过程还是比较曲折。综合评价后,我得出的结论是:

  • 目前,OpenBSD 确实是最安全的服务器操作系统之一,网络服务器(如路由、DNS、DHCP 等)的功能它肯定可以胜任;
  • OpenBSD 可以胜任一台 Apache + PHP + MySQL 服务器的工作;
  • 要在 OpenBSD 上安装 Oracle 是不行的,至少我没有找到 Oracle for OpenBSD 的任何版本。数据库只能指望 MySQL 和 PostgreSQL,而且最好是使用 OpenBSD 官方提供的版本;
  • 应用软件系统对 OpenBSD 的支持还不够,要想随时用上最新版本不是那么容易的。 

OpenBSD研究手记(五)

总算把 OpenBSD 的 Apache + PHP + MySQL 架设完毕,可以开始应用系统的安装了。

虽然目前比较急切的是 blog 的需求,但是我打算先用 discuz 来下手。discuz 可能不是很出名,它是一个国人开发的 PHP + MySQL 的论坛。号称自己比 LB5000 要好,特别是在性能和负载上面,但是我看了看界面,并不是很喜欢。不过 LB5000 是文本论坛,相信代码再怎么优化,在数据查询上还是有先天劣势的。

从 discuz 官方网站(也是一个论坛)上下载了 discuz 的 UTF-8 简体版论坛程序。不错,才 1.2x 个 MB,尺寸蛮不错的。按照安装指南,先解压到本地,然后用 FTP 上传到服务器。修改几个指定目录的权限为 777,编辑配置文件指明数据库连接字符串,然后运行安装脚本 install.php。只经过了很快的几个步骤,就安装完成了,可见有很多设置都是有默认值的。对比 LB5000 的安装,似乎要简单一些。

从安装脚本的执行情况来看,似乎没有什么错误,于是我又继续进行下面的操作。注册了一个用户,正常。用管理员登录,没问题。进系统设置看了看,选项太多,花了眼,又退了出来。打开控制面板……,出错了。

出现错误的 SQL 也打印了出来,错误信息也写在页面上,这点倒是蛮友好的。我看了看那行 SQL,没有什么问题,一个简单的连接查询而已。我在 MySQL Client 上手动执行这条语句,一样的错误。错误信息居然是「无法打开文件:./discuz/cdb_subscription.frm」。

去数据库目录下看了看,有这个文件在啊。ls -l、cat,都没有任何问题。而当我在 MySQL Client 里面 use discuz 之后试图 show tables 的时候,也出现了文件无法打开的错误。我想,这只有可能是 MySQL 本身有问题了。在重启过之后,问题依然无法解决。

真郁闷。最后决定,把虚拟机删了,一切重头来过。正好趁此加大它的硬盘,并把它放在新电脑上。这样一来空间不是问题,速度也要快很多。