Linux源码安装Apache
源码安装
linux上的软件大部分都是c语言开发的,那么安装需要gcc编译程序才可以进行源码安装。
yum install -y gcc #先安装gcc
安装源码包需要三个步骤
-
./configure
在这一步可以定制功能,加上相应的选项即可,具有有什么选项可以通过 ./configure --help 命令来查看。在这一步会自动检测你的linux系统与相关的套件是否有编译该源码包时需要的库,因为一旦缺少某个库就不能完成编译。只有检测通过后才会生成一个Makefile文件。
-
make
使用这个命令会根据Makefile文件中预设的参数进行编译,这一步其实就是gcc在工作了。 -
make install
安装步骤,生成相关的软件存放目录和配置文件的过程。
上面介绍的3步并不是所有的源码包软件都一样的,阿铭以前也曾经遇到过,安装步骤并不是这样,也就是说源码包的安装并非具有一定的标准安装步骤。这就需要你拿到源码包解压后,然后进入到目录找相关的帮助文档,通常会以INSTALL或者README为文件名。所以,你一定要去看一下。下面阿铭会编译安装一个源码包来帮你更深刻的去理解如何安装源码包。
实际操作步骤
cd ~
wget -c http://mirror.bit.edu.cn/apache//httpd/httpd-2.4.37.tar.gz #下载源码包
curl -O http://mirror.bit.edu.cn/apache//httpd/httpd-2.4.37.tar.gz #下载源码包
tar -zxvf httpd-2.4.37.tar.gz #解压源码包
cd httpd-2.4.37
./configure --help | less #查看配置帮助
./configure --prefix=/usr/local/apache2 #指定安装目录,通常/usr/local/是常用的安装目录,新版本的Apache这一步通不过,注意后面的解释
注意:
可能会报错:configure: error: APR not found. Please read the documentation.
关于apr not found的问题解决, Apache Portable Runtime
##下载病安装apr-1.5.2这个软件,httpd需要依赖他来运行
wget -c http://apache.fayea.com//apr/apr-1.5.2.tar.gz
cd apr-1.5.2
./configure
#报错:rm: cannot remove `libtoolT': No such file or directory
在configure里面 RM='$RM -f' 这里的$RM后面一定有一个空格。 如果后面没有空格,直接连接减号,就依然会报错。把RM='$RM'改为RM='$RM -f'
make
make install
##下载安装apr-util1.5.4
wget -c http://apache.fayea.com//apr/apr-util-1.5.4.tar.gz
#解压
tar -zxvf apr-util-1.5.4.tar.gz
cd apr-util-1.5.4
#编译
./configure --prefix=/usr/local/apr-util --with-apr=/usr/local/apr
make
make install
yum install -y gcc-c++ #下面的扩展需要c++编译器
#安装pcre
wget -c https://sourceforge.net/projects/pcre/files/pcre/8.39/pcre-8.39.zip
#解压
unzip pcre-8.39.zip
cd pcre-8.39
./configure --prefix=/usr/local/pcre
make
make install #或者make && make install
解决所有错误后再去编译httpd
cd httpd
echo $? #验证上一步是否成功,不是必须的
ls -l Makefile #查看生成的Makefile文件
./configure --prefix=/usr/local/apache2 --with-apr=/usr/local/apr/ --with-apr-util=/usr/local/apr-util/ --with-pcre=/usr/local/pcre
make #编译
yum install -y make #如果上面的make找不到那么就安装make,有就忽略
echo $? #验证是否成功,可以忽略
make install #最后一步,才是真正的安装
echo $? #检测是否正确安装
ls /usr/local/apache2/ #查看安装后的文件
cat config.log #如果出错了,先看命令行提示的报错信息,然后再看这个文件
apache的使用
cp /usr/local/apache2/bin/apachectl /sbin/
apachectl start #启动Apache
##设置Apache开机自启动
vim /etc/rc.d/rc.local
#增加一行 /sbin/apachectl start
#或者将httpd服务添加到ntsysv服务管理工具
apachectl stop #关闭Apache以免不必要的麻烦
cp /usr/local/apache2/bin/apachectl /etc/rc.d/init.d/httpd
vim /etc/rc.d/init.d/httpd
修改为
#!/bin/sh
#
#chkconfig: 345 85 15 //#不能省略,注意空格
#description: httpd for 52lamp 20101016 21:54 //任意字符串
#
......
第二行中345的含义:
# 0 - operation completed successfully
# 1 -
# 2 - usage error
# 3 - httpd could not be started
# 4 - httpd could not be stopped
# 5 - httpd could not be started during a restart
修改有关权限
#cd /etc/rc.d/init.d/
#chmod a+x httpd
#chkconfig --add httpd
#ntsysv
httpd已经在列表中,按F1可以看到刚才编写的服务描述httpd for 52lamp 20101016 21:54。
#apachectl start
#ps -e |grep httpd
23247 ? 00:00:00 httpd
23248 ? 00:00:00 httpd
23249 ? 00:00:00 httpd
23251 ? 00:00:00 httpd
23252 ? 00:00:00 httpd
在浏览器中输入127.0.0.1,看起来一切正常;但是局域网内其他电脑不能访问!
#service iptables stop
如果不想关闭防火墙,放开80端口即可。
#vi /etc/sysconfig/iptables
增加一行-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 22 -j ACCEPT
#service iptables restart //重启防火墙
现在一切OK
配置虚拟主机
cd /usr/local/apache2/
cd conf/
vim httpd.conf
#添加一行
ServerName www.caoliu.com
#修改Windows下面drivers 中 etc 中的host
#重启Apache
#关闭防火墙
#修改首页文字信息
cd /usr/local/apache2/
cd htdocs/
[root@localhost htdocs]# ls
index.html
#修改文本信息
vim index.html
撤销:<kbd>Ctrl/Co