1.安装httpd(安装到/opt/httpd2_2_24)
1 2 3 4 5 |
#./configure --prefix=/opt/httpd2_2_24 --enable-modules=so --enable-rewrite #make #make install |
启动httpd
1 2 3 |
#/opt/httpd2_2_24/bin/httpd |
然后打开浏览器,访问http://serverip,如果页面出现“It works!”,说明安装成功
说明:此处configure的两个选项是指:1-允许模块动态配置,2-允许重写重配置。但是建议还是参考configure的--help选项,例如我在ubuntu上迁移LAMP环境时,就遇到找不到apr(Apache Portable Runtime Library)的情况,还需要指定--with-apr=/usr/local/arp的选项。所以除非是一直在深入学习apache的人,不太可能会了解到所有的选项和作用,我也只是参考着来试试传说中的LAMP,顺便弄个wordpress做测试而已。
2.安装mysql(将mysql文件解压到/opt/mysql6_0_11)
解压后的mysql包里面自带有一个INSTALL-BINARY文档,里面描述了怎么安装mysql,如下
shell> groupadd mysql
shell> useradd -g mysql mysql
shell> cd /usr/local
shell> gunzip < /path/to/mysql-VERSION-OS.tar.gz | tar xvf -
shell> ln -s full-path-to-mysql-VERSION-OS mysql
shell> cd mysql
shell> chown -R mysql .
shell> chgrp -R mysql .
shell> scripts/mysql_install_db --user=mysql
shell> chown -R root .
shell> chown -R mysql data
shell> bin/mysqld_safe --user=mysql &
这里只稍微改动一下解压的目录(full-path-to-mysql-VERSION-OS)为/opt/mysql6_0_11,其余都按照mysql给出的步骤进行
说明:mysql的安装相对来说是比较简单的,使用mysql_install_db安装后,默认的数据库文件基本上都会配置好,但是在启动的时候,遇到的问题会比较多,在后面附录里会详细记录本次安装遇到的所有问题。并且在mysql安装时对于用户和权限的配置,是一个需要再了解的地方
3.安装PHP
1 2 3 4 5 6 |
#./configure --prefix=/opt/php5_4_12 --with-apxs2=/opt/httpd2_2_24/bin/apxs --with-mysql=/usr/local/mysql #make #make test #make install |
配置httpd.conf,安装php后会自动添加php的模块到apache的配置文件,但是为了保险起见最好自己再检查一下:
LoadModule php5_module modules/libphp5.so
实际只需要增加下面两行:
AddType application/x-httpd-php .php .phpml
AddType application/x-httpd-php-source .phps
安装完之后,还有一个步骤就是拷贝php.ini文件
#cp php.ini-production /opt/local/php5_4_12/lib/php.ini
完了就可以写一个phpinfo()页面,进行测试,参考之前windows上部署php的文档即可
附录A:安装过程中遇到的问题
1.启动mysql时提示错误:
[ERROR] /usr/local/mysql/bin/mysqld: Can't create/write to file '/var/run/mysqld/mysqld.pid' (Errcode: 2)
[ERROR] Can't start server: can't create PID file: No such file or directory
原因很简单,mysql没有权限创建目录和文件,用root用户手动建一个,再重新启动就OK了
#mkdir /var/run/mysqld
#chown root:mysql /var/run/mysqld
#chmod 775 /var/run/mysqld
2.登录mysql时提示错误:
# ./mysql
ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/tmp/mysql.sock' (2)
发现/tmp下面确实没有这个文件,有人建议修改my.cnf(在/etc下面)直接将sock文件创建到/tmp下,也有人建议做个软连,为了通用起见,这里创建一个软连接
$ln -s /var/lib/mysql/mysql.sock /tmp/mysql.sock
再次登录,还是报错
# ./mysql
ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/tmp/mysql.sock' (40)
这个错误得用到mysql的配置文件my.cnf了,在配置中添加如下内容:
[client]
socket=/var/lib/mysql/mysql.sock
再次登录就正常了
# /usr/local/mysql/bin/mysql -u root
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 2
Server version: 6.0.11-alpha MySQL Community Server (GPL)
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
mysql> shot databases;
ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'shot databases' at line 1
mysql> show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| mysql |
| test |
+--------------------+
3 rows in set (0.00 sec)
mysql>
3.编译PHP出错
grep: /usr/local/gcc-4.3.2/lib/libstdc++.la: No such file or directory
/bin/sed: can't read /usr/local/gcc-4.3.2/lib/libstdc++.la: No such file or directory
libtool: link: `/usr/local/gcc-4.3.2/lib/libstdc++.la' is not a valid libtool archive
make: *** [libphp5.la] Error 1
尝试按照网络上说的重新安装Development Tools(yum groupinstall Development Tools)但是没有什么用,全盘搜也找不到libstdc++.la这个文件。grep -r 搜索PHP源码目录也没有看到有链接这个文件,没办法只好删除--with-mysql 这个选项,然后再make就通过了,所以这个问题肯定和mysql有关。我去google了一下 .la 的文件,这是一个libtool工具用的脚本文件,于是去查看 /usr/local/mysql/lib 目录,发现里面确实有几个 .la 的文件并且里面都引用了 "/usr/local/gcc-4.3.2/lib/libstdc++.la" ,这很让人很奇怪,难道是因为我下载的mysql是alpha版本所以才会这样?好吧,将 .la 文件里所有的"/usr/local/gcc-4.3.2/lib/libstdc++.la"都删除掉,然后再使用--with-mysql选项make一下,呵呵,成功了,果然是这里的问题
附录B:可能用到的工具和遗留问题
1.配置Redhat使用CentOS的源
参考(http://blog.csdn.net/ustc_dylan/article/details/7763604)
首先应该下载rpm包,下面的文件是通过浏览器在mirror163上找到的,你看其他网站上的转载一般都比较老旧,不太适用,而且这里使用的是i386的版本,需要注意
wget http://mirrors.163.com/centos/6/os/i386/Packages/yum-3.2.29-60.el6.centos.noarch.rpm
wget http://mirrors.163.com/centos/6/os/i386/Packages/yum-metadata-parser-1.1.2-16.el6.i686.rpm
wget http://mirrors.163.com/centos/6/os/i386/Packages/yum-plugin-fastestmirror-1.1.30-30.el6.noarch.rpm
wget http://mirrors.163.com/centos/6/os/i386/Packages/python-iniparse-0.3.1-2.1.el6.noarch.rpm
我在用wget下载的时候提示下面的错误,后来发现好像是路由有问题,ping不通外网导致
Resolving mirrors.163.com... 123.58.173.106
Connecting to mirrors.163.com|123.58.173.106|:80... failed: Connection refused.
第二步卸载原有的yum
rpm -aq|grep yum|xargs rpm -e --nodeps
最后安装新的yum
rpm -ivh python-iniparse-0.3.1-2.1.el6.noarch.rpm
rpm -ivh yum-metadata-parser-1.1.2-16.el6.i686.rpm
rpm -ivh yum-3.2.29-60.el6.centos.noarch.rpm yum-plugin-fastestmirror-1.1.30-30.el6.noarch.rpm
使用yum更新libstdc++时又出问题了:
[Errno 14] PYCURL ERROR 7 - "couldn't connect to host"
(这个网站上有关于yum失败的说明 http://xmodulo.com/how-to-fix-yum-errors-on-centos-rhel-or-fedora.html)
看起来还是连不上mirror主机,换网络吧。
2.关闭selinux
临时性关闭
#setenforce 0
永久关闭
修改/etc/selinux/config,将SELINUX=enforcing改为SELINUX=disable
3.Linux修改路由提示错误"SIOCADDRT: No such process"
原因是网关地址和本地IP不在一个段内,还需要先将网关路由到本地:
#route add 172.25.20.3/32 dev eth1
#route add default gw 172.25.20.3
4.php页面显示中文为乱码
估计是因为安装的英文版的系统,字符处理有问题
5.访问php页面要配置防火墙
安装完php后,测试访问php的页面提示找不到网页,但是apache默认的index.html却是可以的,清空iptables策略,好像就可以访问了
#iptables -F
6.PHP链接数据库不通
预测是数据库用户权限设置问题,我记得myql需要配置来访者权限