2008-09-29

Solaris console环境下构建Apache+MySQL+PHP 平台

  其实,Solaris Express Developer Edition的安装过程中只要选完全安装这些东西就会自动装好的,不过,我们总得学会自力更生吧,所以我在安装系统的过程中没有安装这些,而选择了自己手动安装。
  基本上呢,solaris需要的东西都能通过http://www.sunfreeware.com/这个地方下载到,因为没有GUI,所以我们要会用ftp命令,路径可以在网站里查到,我们用ftp程序直接下载动solaris系统吧。看下网站上的说明就明白了:

[179] steve> ftp ftp.sunfreeware.com
Connected to ftp.sunfreeware.com.
220 ftp.sunfreeware.com FTP server ready.
Name (ftp.sunfreeware.com:steve): anonymous
331 Guest login ok, send your complete e-mail address as password.
Password:
230-
230-==============================================
230-This is the ftp.sunfreeware.com ftp server
230-
230-If you have not already done so, make sure
230-you have read the Downloading/Installation,
230-FAQ, and Disclaimer links on
230-http://sunfreeware.com.
230-
230-This is a restricted access system. All
230-transfers are logged. If you disagree
230-with this practice, log off now.
230-
230-Questions go to Steve Christensen at
230-steve@smc.vnet.net.
230-==============================================
230-
230-
230 Guest login ok, access restrictions apply.
ftp> bin
200 Type set to I.
ftp> cd pub/freeware
250 CWD command successful.
ft>p

这里为了方便,我期望使用ssh远程登录到solaris服务器上,因此先安装。如果你之前装了就别再装了,用svcs查看一下有没有ssh服务在运行:
svcs | grep ssh
如果没有的话再安装,从这个网站下载的软件包只要gzip -d 一下之后用pkgadd -d 一下就安装完了。
接下来配置openssh:
配置文件是/etc/ssh/sshd_config
我要做的只有几个事:
改端口:把port右边的22改成需要的端口号。
允许root用户登录,虽然这不安全,但在我现在使用的时刻正好需要。
好了,ssh配置完以后就可以在图形界面下的机器用ssh远程登录到服务器了,而且可以直接使用sftp传送文件,这样就不要每个文件都去输入名字传输了。
接下来就准备安装Apache了,从那个网站的下载介绍里面能看到它的包依赖信息:
apache-2.2.9-sol10-x86-local.gz Apache 2 - the popular web server - installs in /usr/local/apache2. Dependencies: expat, libiconv, openldap, sasl, zlib, openssl-0.9.8h, and either the libgcc-3.4.6 or gcc-3.4.6. Documentation can be found in /usr/local/apache2/doc/apache2. The configuration files in /usr/local/apache2/conf must be edited to fit your site's needs, including ssl support.

本来可以直接使用这个网站提供的包来安装这三个软件的的,不过我希望试试自己编译,所以直接从官网下了unix版的源码来编译安装:

先是mysql:

 从官方下载的包安装:
  • 建立目录:
    mkdir /usr/local/apache
  • 建立mysql的用户组和用户
    groupadd -g 110 mysql
    useradd -u 10001 -g mysql -m -d /export/home/mysql -s /bin/bash mysql
    passwd mysql

  • 安装好软件包就可以了,注意,如果之后安装php的时候用的是32位的,就要装32位的mysql,否则无法编译php。装好后如果能够正常启动服务并用空密码登录root就成功了,不能的话看下面
  不知为什么我的机器就是装不好官方下的那个包,总是提示pid文件找不到什么的,无奈之下,采取另外一种方法:
rm -fr /opt/mysql/mysql/data/*
因为我用官方包安装所以安装的路径是这个。
之后
cd /opt/mysql/mysql
./scripts/mysql_install_db --user=mysql

这里如果成功的话再
./bin/safe_mysqld --user=mysql
应该就能启动服务了。
不过相当无奈的是这个情况下root用户一直被拒绝登录。只能用别的方法了:
先停止服务:
/etc/init.d/mysql stop
用这个类似于超级维护模式的方法开启服务:
./bin/safe_mysqld --user=mysql --skip-grant-tables --skip-networking &
好了,输入mysql总算是进入mysql monitor了。不过问题来了。
select * from mysql.users
结果是0条数据。。。汗死。。。
所以我就试试直接新建一个用户的方法了:
mysql> INSERT INTO mysql.user (Host,User,Password)VALUES('%','test',PASSWORD('tset'));
mysql> FLUSH PRIVILEGES


弄完之后
/etc/init.d/mysql restart
最后成功的用那个帐户登录了。。。。
最后在启动脚本里面增加文件让mysql开关机时自动开启关闭:
ln /opt/mysql/mysql/support-files/mysql.server /etc/rc3.d/S99mysql
ln
/opt/mysql/mysql/support-files/mysql.server /etc/rc0.d/K00mysql
ln
/opt/mysql/mysql/support-files/mysql.server /etc/rc1.d/K00mysql
ln
/opt/mysql/mysql/support-files/mysql.server /etc/rc2.d/K00mysql
ln
/opt/mysql/mysql/support-files/mysql.server /etc/rcS.d/K00mysql

mysql到此就装好了。
 从源代码安装:
  • 准备动作同上,之后解压源代码,执行:
    ./configure --with-as=/usr/ccs/bin/as --with-ld=/usr/ccs/bin/ld --disable-nls --prefix=/usr/local/mysql --with-mysqld-user=mysql --with-charset=gb2312 --with-extra-charsets=all
    with-as那一项是指定汇编编译器
  • 上一步执行成功之后就可以开始编译了,make的过程比较持久,我们好好等待吧。
  • 之后的步骤同上

 

接下来是Apache+php了:
  • 在编译之前必须安装一下软件包:
    SUNWarc
    SUNWbtool
    SUNWhea
    SUNWlibm
    SUNWsprot
    SUNWtoo

    这些包可以直接从光盘安装,方法:
    pkgadd -d /cdrom/sol_11_x86/Solaris_11/Product/ SUNWarc
    ...

  • 必须注意的一点是,Apache2.2以上的版本除了要安装编译环境之外还必须安装apr-1.2.2-sol10-x86-local.gz与aprutil-1.2.2-sol10-x86-local.gz这两个包,否则configure会出现configure failed for srclib/apr错误。目前从sunfreeware下的包还是不能编译apache,貌似是少了一个版本文件,所以我是从apr.apache.org那里下了新版自己编译的。
  • 编译apache:
    ./configure --prefix=/usr/local/apache -enable-so -enable-mods-shared=most
    这样就动态编译了apache了。编译完后安装,之后别动。
  • 编译php:
    ./configure --prefix=/usr/local/php --with-mysql=/usr/local/mysql --with-apxs2=/usr/local/apache/bin/apxs
    注意那个apxs2
  • cp /usr/local/apache/bin/apachectl /etc/init.d/httpd
    cp php.ini-dist /usr/local/apache/conf/php.ini
  • 修改配置文件:
    检查LoadModule 中是否有
    LoadModule 5_module modules/libphp5.so
    这一行,没有加上。
    ServerName这一行指定好自己的服务器的域名或ip。
    默认的DocumentRoot可以修改。
    加一行AddType application/x-httpd-php .php .phtml
  • 之后/etc/init.d/httpd start来开启apache,就可以在别的机器上测试一下apache成功与否了。
基本上写一个index.php页面,内容如下:
<html>
<body>
<title>Hello World</title>
<?php phpinfo(); ?>
</body>
</html>


如果成功的话,就会出现php的信息了。
最后增加启动脚本并且连接文件:
ln -s /etc/init.d/httpd /etc/rc3.d/S90http
ln -s /etc/init.d/httpd /etc/rc3.d/K90http
ln -s /usr/local/apache/bin/apachectl /usr/bin/apache
/*******************************************
*原创文章,转载请注明出处
*******************************************/

没有评论: