以前一般都是有包管理工具来在软件仓库下载预编译的二进制包安装LAMP环境,这次决定全源码安装,让自己对搭建LAMP环境更清晰,以后能直接写脚本全自动编译部署LAMP环境,其实源码编译不是很难,虽然会遇到这样那样的报错,一般只要你知道错误产生的原因就很好解决,觉得”90% of problem solving is actually identifying the problem“此话不假,只要我们对问题产生的原因比较清楚,解决起来就会不会那么没眉目了~~
先说说,源码安装经常会遇到的问题:
1.依赖的模块没有安装好,或者运行./configure时路径没有指定正确,一定要对./configure的选项大致很熟悉,在运行前,不放看看./configure --help
2.编译工具没有准备好,这个一般不好发现,这得看对问题敏感,这次遇到一个看似是缺少模块的错误,但是其实是编译工具没准备好,没有C++编译器造成的
注:在CentOS下安装命令为yum install gcc-cpp
3.权限问题,这个是遇到问题时,第一个要想到的问题,经常会遇到的说
说说源码安装和直接从软件仓库安装的不同,自己现在也只有这些简单的体会
直接从软件库安装,软件依赖关系的解决,不需要自己来解决,都是用系统默认的路径,运行时环境也需要太多的考虑,很方便,不需要太多的配置,但是这样一方面学习不了太多的东西,无法深入理解LAMP整体的架构,整个东西是个黑盒子,对学习不利
而且生产环境基本不可能只是用软件仓库来安装,总会有这样那样的需求,需要有一些个性的需求,比如需要某个默认关闭模块的支持,或者希望软件瘦身,默认的某些模块希望关闭等等需求,所以有必要全源码安装
全源码安装就是需要对软件的运行环境了解比较清楚,特别是路径,还有就是配置文件也要比较清楚,还有就是经验了,要勇于尝试,没有人一开始就很熟
说了这么多比较虚的东西,说说具体的吧
【httpd】
openssl模块编译安装
第一次
./configure --prefix=/opt/websrv/apache243 --with-ssl=/opt/websrv/openssl --enable-http --enable-access --enable-au
th --enable-rewrite --enable-cgi --enable-mime --enable-dir --enable-log-config --with-mpm=worker
报错说缺失apr,于是编译安装apr和apr-util包
第二次:
./configure --prefix=/opt/websrv/apache243 --with-ssl=/opt/websrv/openssl --enable-http --enable-auth --enable-rewr
ite --enable-cgi --enable-mime --with-mpm=worker --with-apr=/opt/websrv/apr --with-apr-util=/opt/websrv/apr-util
又在编译是报错缺失pcre包,解决后
第三次:
./configure --prefix=/opt/websrv/apache243 --enable-ssl=static --with-ssl=/opt/websrv/openssl --enable-http --enabl
e-auth --enable-rewrite --enable-cgi --enable-mime --with-mpm=worker --with-apr=/opt/websrv/apr --with-apr-util=/opt/websr
v/apr-util --with-pcre=/opt/websrv/pcre
这里主要说说--enable-ssl=static这个选项吧,和动态链接和静态链接有关,如果不加这个参数,会有这样的报错:
/usr/local/openssl/lib/libssl.a: could not read symbols: Bad value
具体每个选项的详细说明可以看运行./configure --help来看一看
其实对于缺失的包可以直接用如果软件仓库有的话yum安装,编译安装也可以安装在默认路径下,每必要放在自定义目录下
这时测试httpd已经可以成功运行了,但是测试cgi-bin目录下的perl脚本,没有成功
这时在配置文件将mod_cgi和mod_cgid模块加载进来即可
知道httpd是通过加载模块来实现很多扩展功能,这点很重要
【mysql】
在mysql官网下载mysql5.1,由于mysql5.5以后使用cmake工具,感觉不熟悉,就用传统点的mysql5.1
./configure --prefix=/opt/websrv/mysql
接着参照这些来配置:
其实建立用户时最好:
[root@localhost ~]# useradd mysql -g mysql -M -s /sbin/nologin
#增加一个名为CentOS Mysql的用户。
-g:指定新用户所属的用户组(group)
-M:不建立根目录
-s:定义其使用的shell,/sbin/nologin代表用户不能登录系统。
然后mysql算是成功安装,对mysql的运行模式还不是很清楚,也没有相关文档看看~~
MySQL 往往携带有四个缺省用户,分别是 'root'@'localhost', 'root'@'%', ''@'localhost', ''@'%'.
除了第一个本地root,其他三个(任意来源的root,以及两个匿名用户)都应该删除:
mysql> use mysql
mysql> delete from user where user='';
mysql> delete from user where user='root' and host='%';
这唯一保留的用户 root@localhost 的密码默认为空,当然不好。为它加上密码:
# /opt/mysql/bin/mysqladmin -uroot -hlocalhost -P3306 -p password my_pass
指令中的 my_pass 就是设定的密码,注意,不要用单引号把它括起来。
也可以配置好php环境后安装phpmyadmin来删除这些不安全的用户【PHP】
安装php前,需要很多依赖包,运行./configure --help看看,或者用
yum deplist php
来依赖关系
安装好这些包后,运行
./configure --prefix=/opt/websrv/php --with-apxs2=/opt/websrv/apache/bi
n/apxs --with-mysql=mysqlnd --with-mysqli=mysqlnd --with-pdo-mysql=mysqlnd --wit
hout-pdo-sqlite --without-sqlite3 --without-sqlite --enable-mbstring --with-mhas
h --with-mcrypt --with-gettext --with-zlib --enable-zip --enable-zip --enable-so
ckets --enable-soap --with-xmlrpc --with-mysql=/opt/websrv/mysql/ --with-iconv=/
usr/local/libiconv
参考文献:
CentOS 源码编译安装LAMP(Apache MySQL PHP)
http://study.lishiming.net/chapter17.html
http://huang.yunsong.net/2006/install-and-configure-mysql-on-linux.html