参考http://blog.chinaunix.net/uid-24250828-id-2621386.html
参考http://jingyan.baidu.com/article/4b07be3c5cd75348b380f3c3.html
参考http://blog.sina.com.cn/s/blog_660a1d510101ek9g.html
参考http://blog.sina.com.cn/s/blog_51b349e501014jn1.html
参考http://blog.csdn.net/haitun312366/article/details/38638335
环境:Centos 7.1.1503
一、先安装apache (源码安装)
1 官网下载Apache http://httpd.apache.org/ ,例如 httpd-2.4.12.tar.gz ,把文件放在共享文件夹中,以便在虚拟机中能获取;
2 进入该文件存放路径,解压文件
cd /mnt/share
tar zxvf httpd-2.4.12.tar.gz
进入解压文件夹里面
cd httpd-2.4.12/
配置
./configure --prefix=/usr/local/apache2 --enable-so --enable-rewrite --enable-mods-shared=all --enable-dav=share --enable-dav-fs --enable-authn-alias --with-config-file-path=/usr/local/apache/conf --with-pcre=/usr/local/pcre
这一步,频频报错!!
【问题1】一开始报 APR not found的问题,即找不到依赖的APR包
(1)查找办法,发现需要下载三个依赖包,apr apr-util pcre 少其中一个都会报not found的问题
wget http://archive.apache.org/dist/apr/apr-1.4.5.tar.gz
wget http://archive.apache.org/dist/apr/apr-util-1.3.12.tar.gz
wget http://jaist.dl.sourceforge.net/project/pcre/pcre/8.10/pcre-8.10.zip
(2)解压依赖包
tar -xzvf apr-1.4.5.tar.gz
tar -xzvf apr-util-1.3.12.tar.gz
tar -xzvf pcre-8.10.zip
(3)安装apr-1.4.5
进入安装目录, cd /opt/apr-1.4.5/
安装及编译, ./configure --prefix=/usr/local/apr
make && make install
(4)安装apr-util
进入安装目录, cd /opt/apr-util-1.3.12/
安装及编译, ./configure --prefix=/usr/local/apr-util --with-apr=/usr/local/apr
make && make install
(5)安装pcre
进入安装目录, cd /mnt/share/pcre-8.10/
安装及编译, ./configure --prefix=/usr/local/pcre
make && make install
(6)重新安装apache
配置时需要加上--with参数指定我们刚才安装的依赖包位置
如: --with-pcre=/usr/local/pcre
【问题2】 ./configure 参数加上--with-ldap --enable-ldap --enable-authnz-ldap 报错,无法找到ldap
没查到解决方法,也无法下载安装ldap,只能暂时先去掉这几个参数
3 接下来编译, make 又不停报错。。。。。。。。。。。。。。。。。
【问题1】 首先是一直报变量重复定义的错误
exports.c:2371:13: 错误:‘ap_hack_apu_version’重定义
const void *ap_hack_apu_version = (const void *)apu_version;
exports.c:1980:13: 附注:‘ap_hack_apu_version’的上一个定义在此
const void *ap_hack_apu_version = (const void *)apu_version;
查了好久,有的说是有两个不同的apr路径,要去掉一个,一开始不知在哪里去掉,有的说在configure后加上"--with-included-apr”,但是又会报另一个找不到的错误,这个好像只适合把apr和apr-util安装在Apache里面的scripts文件夹里的才行
搜到最后才发现,
应该在configure把参数--with-apr=/usr/local/apr --with-apr-util=/usr/local/apr-util/去掉,只需加上--with-pcre=/usr/local/pcre即可,就是加多了这两个参数导致的变量重新定义的!!!
【问题2】bison未找到
make[2]: bison:命令未找到
make[2]: *** [util_expr_scan.c] 错误 127
make[2]: Leaving directory `/home/aaron/httpd-2.4.4/server'
make[1]: *** [all-recursive] 错误 1
解决:
yum search bison
yum install bision.x86_64
【问题3】 flex未找到
make[2]: flex:命令未找到
make[2]: *** [util_expr_scan.c] 错误 127
make[2]: Leaving directory `/home/aaron/httpd-2.4.4/server'
make[1]: *** [install-recursive] 错误 1
make[1]: Leaving directory `/home/aaron/httpd-2.4.4/server'
make: *** [install-recursive] 错误 1
于是:
yum search flex
yum install flex.x86_64
4.最后 make install,成功了!!!!!
5 启动Apache,
/usr/local/apache2/bin/apachectl start
好感动~~~~~~终于装好了。。。。。。。。。。
6 为了不用每次启动Apache都要加上绝对路径,可以添加环境变量
vim /etc/profile
添加下面两行:
APACHE_HOME=/usr/local/apache2
export PATH=$PATH:$APACHE_HOME/bin
保存退出,
执行source /etc/profile 使变量立即生效。
二 安装mysql,非源码解压版
1 官网下载 http://dev.mysql.com/downloads/mysql/5.5.html#downloads 下载相应版本
2 解压文件到相应目录 tar zvxf mysql-5.5.44-linux2.6-x86_64 /usr/local/
将文件夹名称改成mysql, mv mysql-5.5.44-linux2.6-x86_64 mysql
进入文件夹中, cd mysql
接下来参考http://blog.csdn.net/superchanon/article/details/8546254/ 中的通用安装方法,以下是复制文档的内容
a. 检查是否已安装,grep的-i选项表示匹配时忽略大小写
[root@localhost JavaEE]#rpm -qa|grep -i mysql
mysql-libs-5.1.61-4.el6.x86_64
若已经安装了库文件,应该先卸载,不然会出现覆盖错误。注意卸:载时使用了--nodeps选项,忽略了依赖关系;
[root@localhost JavaEE]#rpm -e mysql-libs-5.1.61-4.el6.x86_64 --nodeps
未安装就直接往下走
b. 添加mysql组和mysql用户,用于设置mysql安装目录文件所有者和所属组。
[root@localhost JavaEE]#groupadd mysql
[root@localhost JavaEE]#useradd -r -g mysql mysql
*useradd -r参数表示mysql用户是系统用户,不可用于登录系统。
c. 将二进制文件解压到指定的安装目录,我们这里指定为/usr/local
[root@localhost ~]# cd/usr/local/
[root@localhost local]#tar zxvf /path/to/mysql-5.5.29-linux2.6-x86_64.tar.gz
*加压后在/usr/local/生成了解压后的文件夹mysql-5.5.29-linux2.6-x86_64,这名字太长,我们为它建立一个符号链接mysql,方便输入。
[root@localhost local]#ln -s mysql-5.5.29-linux2.6-x86_64 mysql(这一步后面出错,我直接将文件夹名称改成mysql,就无需符号链接)
d. /usr/local/mysql/下的目录结构
Directory |
Contents of Directory |
bin |
Client programs and the mysqld server |
data |
Log files, databases |
docs |
Manual in Info format |
man |
Unix manual pages |
include |
Include (header) files |
lib |
Libraries |
scripts |
mysql_install_db |
share |
Miscellaneous support files, including error messages, sample configuration files, SQL for database installation |
sql-bench |
Benchmarks |
e. 进入mysql文件夹,也就是mysql所在的目录,并更改所属的组和用户。
[root@localhost local]#cd mysql
[root@localhost mysql]#chown -R mysql .
[root@localhost mysql]#chgrp -R mysql .
f. 执行mysql_install_db脚本,对mysql中的data目录进行初始化并创建一些系统表格。注意mysql服务进程mysqld运行时会访问data目录,所以必须由启动mysqld进程的用户(就是我们之前设置的mysql用户)执行这个脚本,或者用root执行,但是加上参数--user=mysql。
[root@localhost mysql]scripts/mysql_install_db --user=mysql
*如果mysql的安装目录(解压目录)不是/usr/local/mysql,那么还必须指定目录参数,如
[root@localhost mysql]scripts/mysql_install_db --user=mysql \
--basedir=/opt/mysql/mysql \
--datadir=/opt/mysql/mysql/data
*将mysql/目录下除了data/目录的所有文件,改回root用户所有,mysql用户只需作为mysql/data/目录下所有文件的所有者。
[root@localhost mysql]chown -R root .
[root@localhost mysql]chown -R mysql data
g. 复制配置文件
[root@localhost mysql] cp support-files/my-medium.cnf /etc/my.cnf
h. 将mysqld服务加入开机自启动项。
*首先需要将scripts/mysql.server服务脚本复制到/etc/init.d/,并重命名为mysqld。
[root@localhostmysql] cp support-files/mysql.server /etc/init.d/mysqld
*通过chkconfig命令将mysqld服务加入到自启动服务项中。
[root@localhost mysql]#chkconfig --add mysqld
*注意服务名称mysqld就是我们将mysql.server复制到/etc/init.d/时重命名的名称。
*查看是否添加成功
[root@localhost mysql]#chkconfig --list mysqld
mysqld 0:off 1:off 2:on 3:on 4:on 5:on 6:off
i. 重启系统,mysqld就会自动启动了。
*检查是否启动
[root@localhost mysql]#netstat -anp|grep mysqld
tcp 0 0 0.0.0.0:3306 0.0.0.0:* LISTEN 2365/mysqld
unix 2 [ ACC ] STREAM LISTENING 14396 2365/mysqld /tmp/mysql.sock
*如果不想重新启动,那可以直接手动启动。
[root@localhost mysql]#service mysqld start
Starting MySQL.. SUCCESS!
【问题】如果启动不成功,百度的办法是
cd /usr/local/mysql
chown -R mysql.mysql .
scripts/mysql_install_db
j. 运行客户端程序mysql,在mysql/bin目录中,测试能否连接到mysqld。
[root@localhost mysql]#/usr/local/mysql/bin/mysql
Welcome to the MySQLmonitor. Commands end with ; or \g.
Your MySQL connection idis 2
Server version:5.5.29-log MySQL Community Server (GPL)
Copyright (c) 2000, 2012,Oracle and/or its affiliates. All rights reserved.
Oracle is a registeredtrademark of Oracle Corporation and/or its affiliates. Other names may betrademarks of their respective owners.
Type 'help;' or '\h' forhelp. Type '\c' to clear the current input statement.
mysql> quit
Bye
*此时会出现mysql>命令提示符,可以输入sql语句,输入quit或exit退出。为了避免每次都输入mysql的全路径/usr/local/mysql/bin/mysql,可将其加入环境变量中,在/etc/profile最后加入两行命令:
MYSQL_HOME=/usr/local/mysql
export PATH=$PATH:$MYSQL_HOME/bin
这样就可以在shell中直接输入mysql命令来启动客户端程序了
[root@localhost mysql]#mysql
三 安装php(源码安装)
1 官网下载 http://php.net/downloads.php#v5.4.42 下载相应版本,例如 php-5.5.26.tar.gz,放到共享文件夹
2 解压文件, tar zvxf php-5.5.26.tar.gz
进入文件夹中, cd php-5.5.26
配置, 注意必须按顺序先安装mysql,否则配置会提示找不到
./configure --prefix=/usr/local/php --with-apxs2=/usr/local/apache2/bin/apxs --with-mysql=/usr/local/mysql --with-config-file-path=/usr/local/php/etc
问题又来了。。。
【问题1】xml2-config not found
configure: error: xml2-config not found. Please check your libxml2 installation.
说是libxml2没装,但是用yum安装时发现已经安装了,查资料后发现原来还需要安装libxml2-devel,再次执行安装命令
yum install libxml2-devel
配置成功~~
3 编译,make
make成功后会提示Don't forget “make test”,输入make test 不报错就行了
4 安装,make install
【问题2】
Wrote PEAR system config file at: /usr/local/php/etc/pear.conf
You may want to add: /usr/local/php/lib/php to your php.ini include_path
/mnt/share/php-5.5.26/build/shtool install -c ext/phar/phar.phar /usr/local/php/bin
cp -pR -f phar.phar /usr/local/php/bin/phar
cp: 无法获取"phar.phar" 的文件状态(stat): 没有那个文件或目录
make: *** [install-pharcmd] 错误 1
百度半天,没什么答案,后来看多了才领悟到,就是在当前目录下找不到phar.phar这个文件,直接把ext/phar下的phar.phar文件复制到当前目录就成功了
即加上下面两句
cd ext/phar/
cp phar.phar /mnt/share/php-5.5.26
再make install 就成功了!
5 配置,与Apache结合
vim /usr/local/apache2/conf/httpd.conf
找到或加上这几行
LoadModule php5_module modules/libphp5.so
AddType application/x-httpd-php .php
DirectoryIndex index.php index.html
PHPIniDir "/usr/local/php/etc"
6 写个php页面测试一下
vim /usr/local/apache2/htdocs/test.php
phpinfo();
?>
重启apache服务,在地址栏输入http://localhost/test.php 就可以看见phpinfo的页面了。
可查看各项参数是否正确及扩展模块是否加载。