apache(源码包安装)
apache的安装 (用脚本安装下面有脚本安装的方法)
最新版本的就是变态,本来你安装了apr和apr-util包了,但就是预编译配置通不过,那就直接上源码包。
yum -y install openssl-devel
以为安装这些了就可以了,编译的时候出现error,基本我属于那种有警告不管,但是尼玛出现error了,木有办法了,那只有解决了。
[root@localhost /]# rpm -qa | grep apr
apr-util-ldap-1.3.9-3.el6.i686
apr-util-1.3.9-3.el6.i686
这几个是搭建apache必须安装的,系统显示已经安装了相应的rpm包了。但是你去编译apache的时候还是可能出现错误,那不管了,直接上源码包
configure: error: APR not found. Please read the documentation.
tar zxvf apr-1.4.2.tar.gz -C /usr/src/
./configure --prefix=/usr/local/apr
configure: error: APR-util not found. Please read the documentation
tar zxvf apr-util-1.3.10.tar.gz -C /usr/src/
cd /usr/src/apr-util-1.3.10
./configure --prefix=/usr/local/apr-util --with-apr=/usr/local/apr/bin/apr-1-config
configure: error: pcre-config for libpcre not found. PCRE is required and available from http://pcre.org/
tar zxvf pcre-8.11.tar.gz -C /usr/src/
./configure --prefix=/usr/local/pcre
最后这些都解决完了,尼玛终于没有错误了!!!!我感动啊!!
tar zxvf httpd-2.4.3.tar.gz -C /usr/src/
./configure --prefix=/usr/local/apache2 --with-apr=/usr/local/apr --with-apr-util=/usr/local/apr-util --with-pcre=/usr/local/pcre --enable-so --enable-rewrite --enable-ssl --with-ssl=/usr/lib--enable-auth-digest --enable-cgi --enable-suexec --with-suexec-caller=daemon --with-suexec-docroot=/usr/local/apache2/htdocs
装完成后,了解apache服务器相关的主要目录和文件
/usr/local/apache2/bin/ (httpd服务器包含的执行程序)
/usr/local/apache2/conf/ (httpd服务器包含的配置文件)
/usr/local/apache2/htdocs/ (httpd服务器存放的网页文件的根目录)
/usr/local/apache2/logs/ (存放访问httpd服务器的日志)
/usr/local/apache2/man/ (httpd服务器的帮助手册)
/usr/local/apache2/modules/ (存放提供给httpd服务器动态加载的模块文件)
/usr/local/apache2/bin/apachectl start (开启服务)
/usr/local/apache2/bin/apachectl stop (关闭服务)
/usr/local/apache2/bin/apachectl restart (重启服务)
/usr/local/apache2/bin/apachectl -t (检查配置文件是否出错)
echo "/usr/local/apache2/bin/apachectl start" >> /etc/rc.d/rc.local (服务器开机之后自动开启服务)
[root@localhost apache2]# /usr/local/apache2/bin/apachectl start(源码包安装需要这样才能开启服务)
AH00558: httpd: Could not reliably determine the server's fully qualified domain name, using localhost.localdomain. Set the 'ServerName' directive globally to suppress this message
httpd (pid 902) already running 显示已经开启了,会出现命令的提示,解决这个问题
vim /usr/local/apache2/conf/httpd.conf
ServerName 192.168.4.184:80
ServerName 192.168.4.184:80 (有域名就写域名ServerName www.abc.com:80)
[root@localhost apache2]# /usr/local/apache2/bin/apachectl start (这次开启的时候发现什么都木有)
[root@localhost apache2]# netstat -pant | grep httpd
tcp 0 0 :::80 :::* LISTEN 1524/httpd
[root@localhost apache2]# ps aux | grep httpd
root 1524 0.0 0.4 5272 2372 ? Ss 02:39 0:00 /usr/local/apache2/bin/httpd -k start
daemon 1525 0.0 0.4 283004 2116 ? Sl 02:39 0:00 /usr/local/apache2/bin/httpd -k start
daemon 1526 0.0 0.4 283004 2120 ? Sl 02:39 0:00 /usr/local/apache2/bin/httpd -k start
daemon 1527 0.0 0.4 283004 2120 ? Sl 02:39 0:00 /usr/local/apache2/bin/httpd -k start
root 1706 0.0 0.1 4312 728 pts/1 S+ 02:41 0:00 grep httpd
(要杀死进程 killall -9 1524 1525 1526 1527)
每次开启服务都要这样敲入这么长的命令/usr/local/apache2/bin/apachectl start很麻烦
能不能直接向rpm包安装apache一样用service httpd start这样启动呢?
先rpm -qa | grep httpd确保系统木有rpm包安装的httpd,有就用yum -y remove httpd删除
然后cp /usr/src/httpd-2.4.3/build/rpm/httpd.init /etc/init.d/httpd
把httpd.init(文件路径一定要正确)文件copy到服务启动脚本目录下面并改名为httpd
prog=$(basename $0 | sed -e 's/^[SK][0-9][0-9]//')
if [ -f /etc/sysconfig/${prog} ]; then
httpd=${HTTPD-/usr/local/apache2/bin/httpd}
pidfile=${PIDFILE-/usr/local/apache2/${prog}.pid}
lockfile=${LOCKFILE-/var/lock/subsys/${prog}}
CONFFILE=/usr/local/apache2/conf/httpd.conf
vim /usr/local/apache2/conf/httpd.conf
pidfile "/usr/local/apache2/httpd.pid"
在试试service httpd start|stop|restart
[root@localhost init.d]# service httpd start
Starting httpd: (98)Address already in use: make_sock: could not bind to address [::]:80
(98)Address already in use: make_sock: could not bind to address 0.0.0.0:80
no listening sockets available, shutting down
[root@localhost init.d]# service httpd stop
[root@localhost rpm]# ps aux | grep httpd
root 20462 0.0 0.4 8204 2080 ? Ss 19:59 0:00 /usr/local/apache2/bin/httpd
daemon 20464 0.0 0.3 8340 1568 ? S 19:59 0:00 /usr/local/apache2/bin/httpd
daemon 20465 0.0 0.3 8340 1568 ? S 19:59 0:00 /usr/local/apache2/bin/httpd
daemon 20466 0.0 0.3 8340 1568 ? S 19:59 0:00 /usr/local/apache2/bin/httpd
daemon 20467 0.0 0.3 8340 1568 ? S 19:59 0:00 /usr/local/apache2/bin/httpd
daemon 20468 0.0 0.3 8340 1568 ? S 19:59 0:00 /usr/local/apache2/bin/httpd
root 20862 0.0 0.6 10912 3308 pts/2 S+ 21:09 0:00 vim httpd
root 20986 0.0 0.1 4308 732 pts/3 S+ 21:37 0:00 grep httpd
[root@localhost rpm]# kill -9 20462 20464 20465 20466 20467 20468(杀死这些进程)
然后在试试service httpd start|stop|restart,行则ok,不行,那就在检查检查上面的配置文件
[root@localhost rpm]# service httpd start
[root@localhost rpm]# service httpd restart
cp /usr/local/apache2/bin/apachectl /etc/init.d/httpd #复制为系统服务
vim /etc/init.d/httpd #编辑此服务,将前三行修改为
#description:Apache httpd
但是这样敲了之后,这个命令不会出现Starting httpd: [ OK ] ,不信你可以试试,这样就还需要
查看是否开启了没有netstat -pant | grep 80 有80就开启了
chkconfig --level 35 httpd on
#######为便于查看可以用这个命令清楚不需要的东西######
cp http.conf http.conf.bak(先进行备份)
grep -v "#" httpd.conf.bak | grep -v "^$" > httpd.conf
##############常用的全局配置参数######################
Serverroot: 用于设置httpd服务器的根目录
Listen: 设置apache用于监听的端口号,默认为80
Serveradmin: 设置服务器管理员的e-mail地址
Directoryindex: 设置网站的默认首页格式
Pidfile: 保存服务器程序进程号(pid)的文件,默认为logs/httpd.pid
Timeout: web服务器与浏览器之间网络连接的超时秒数,默认为300秒
Keepalive: 是否使用保持连接功能:off on
Maxkeepaliverequests: 客户端每次连接允许请求的最大文件数,默认为100个。当keepalive设置为on时才生效
Keepalivetimeout: 保持连接的超时秒数,默认为15秒
###################apache的相关操作####################################
vim /usr/local/apache2/conf/httpd.conf
###在<IfModule alias_module>模块中添加一句,然后在</IfModule>下面添加几句</Directory >
#######</Directory>里面写的东西配置文件里面是有模板的copy之后改动一点就ok了然后保存退出
/data目录可以是挂载到linux系统中的,所以这个目录就看你硬盘多大了
在新建的目录里面 vim index.html里面随便写一点东东就ok了
访问的时候 http://ip/test(记住这里一定不要敲/直接回车)
vim /usr/local/apache2/conf/httpd.conf
<VirtualHost 172.16.1.1:8001>
ServerAdmin webmaster@dummy-host.example.com
DocumentRoot /data/web/test1
ErrorLog /data/web/log/test1.err.log
CustomLog /data/web/log/test1.acc.log common
<VirtualHost 172.16.1.1:8002>
ServerAdmin webmaster@dummy-host.example.com
DocumentRoot /data/web/test2
ErrorLog /data/web/log/test2.err.log
CustomLog /data/web/log/test2.acc.log common
ServerAdmin webmaster@dummy-host.example.com
DocumentRoot /data/web/test1
(这个是写域名的,有自己的域名,就写自己的域名,没有域名随便写了也不要紧,因为我们用ip访问)
CustomLog data/web/log/test1.acc.log common
(用于设置httpd服务器访问日志文件的路径和格式类型,这个文件里面写入这你登录的记录)
ErrorLog /data/web/log/test1.err.log
(用于设置错误日志文件的路径和文件名(如果你设置了,那这个目录和文件必须存在,木有就新建)这个文件写入的是,你登录错误的记录)
新建配置文件里面指定的虚拟主机目录,因为没有,那就要新建
cd /data/web/ (切换目录,在这个目录里面去新建)
mkdir test1 test2 log (新建两个存放网页目录的文件和一个存放日志的文件)
touch test1.err.log test1.acc.log test2.err.log test2.acc.log (新建四个日志文件)
vim /data/web/test1/index.html (编辑两个网页文件便于测试)
vim /data/web/test2/index.html
访问测试 http://ip:8001 (看见this is test1 page 就ok了)
http://ip:8002 (看见this is test2 page 就ok了)
vim /usr/local/apache2/conf/httpd.conf
<VirtualHost 172.16.1.1:80>
ServerAdmin webmaster@dummy-host.example.com
DocumentRoot /data/web/test1
ErrorLog /data/web/log/test1.err.log
CustomLog /data/web/log/test1.acc.log common
<VirtualHost 172.16.1.1:80>
ServerAdmin webmaster@dummy-host.example.com
DocumentRoot /data/web/test2
ErrorLog /data/web/log/test2.err.log
CustomLog /data/web/log/test2.acc.log common
(!!!还是要新建配置文件里面指定的虚拟主机目录!!!)
访问测试 http://www.test1.com (看见this is test1 page 就ok了)
http://www.test2.com (看见this is test2 page 就ok了)
vim /usr/local/apache2/conf/httpd.conf
<VirtualHost 172.16.1.10:80>
ServerAdmin webmaster@dummy-host.example.com
DocumentRoot /data/web/test1
ErrorLog /data/web/log/test1.err.log
CustomLog /data/web/log/test1.acc.log common
<VirtualHost 172.16.1.20:80>
ServerAdmin webmaster@dummy-host.example.com
DocumentRoot /data/web/test2
ErrorLog /data/web/log/test2.err.log
CustomLog /data/web/log/test2.acc.log common
ifconfig eth0:0 172.16.1.10 up
ifconfig eth0:1 172.16.1.20 up
访问测试 http://172.16.1.10 (看见this is test1 page 就ok了)
http://172.16.1.20 (看见this is test2 page 就ok了)
vim /usr/local/apache2/conf/httpd.conf
LoadModule userdir_module modules/mod_userdir.so
Include conf/extra/httpd-userdir.conf
#################################
#################################
vim index.html(为li用户新建自己的主页)
vim index.html(为liu用户新建自己的主页)
chmod o+x /home/li* (为宿主目录中的用户修改权限)
#################访问浏览器##################
http://ip/~li/ (其中li为用户名)
###############################################
vim /usr/local/apache2/conf/httpd.conf
Options Indexes MultiViews FollowSymLinks
AuthUserFile /usr/local/apache2/conf/httppwd
/usr/local/apache2/bin/htpasswd -c /usr/local/apache2/conf/httppwd liu
/usr/local/apache2/conf/httppwd 这个就是AuthUserFile认证用户文件的路径文件)
vim /usr/local/apache2/conf/httpd.conf
Options Indexes MultiViews FollowSymLinks
AuthUserFile /usr/local/apache2/conf/httppwd
AuthGroupFile /usr/local/apache2/conf/httpgrp
vim /usr/local/apache2/conf/httpgrp
admin:test jie(需要加入直接玩后面添加)
#######apache配置文件的一些其它参数######
#Include conf/extra/httpd-userdir.conf (把这个#号去掉就可以做个人主页网址)
这个可以自己写路径,建议路径的目录最好在conf目录下
#LoadModule userdir_module modules/mod_userdir.so (这个# 号是随着上面的一起的,这个
就是userdir的模块,这句也在配置文件中,可以找到)
#Include conf/extra/httpd-vhosts.conf
#########建议主配置文件内容越少越好######
$$$$$$$$$$$额外的补充$$$$$$$$$$$$$$$$$$$
1. 新建立一个默认主机,即出现在所有<VirtualHost *:80>最重要的
DocumentRoot /var/www/error
2. 编辑文件/var/www/error/400.php, 输出以下代码:
header("HTTP/1.1 400 Bad Request");
1. 将对默认主机的所有请求重写向到/var/www/error/400.php
不足之处,apache服务器必须安装php解析模块。
$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$
$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$参考脚本$$$$$$$$$$$$$$$$$$$$$
这个是一个脚本,运行这个脚本能够一次性成功安装完源码包搭建的apache,此脚本只供方便,我执行这个脚本是已经成功安装几遍了,此脚本运行成功,先要搭建好yum(如何搭建yum这里不在此介绍了),然后解压好所需的源码包。解压没有先后顺序,但是安装的时候有先后顺序。
tar zxvf httpd-2.4.3.tar.gz -C /usr/src/
tar zxvf apr-1.4.2.tar.gz -C /usr/src/
tar zxvf apr-util-1.3.10.tar.gz -C /usr/src/
tar zxvf pcre-8.11.tar.gz -C /usr/src/
然后把下面的copy到httpd.sh里面保存退出在给httpd.sh添加可执行的权限
chmod +x /usr/src/httpd.sh
然后在执行脚本 /usr/src/httpd.sh
以下所有都是需要复制的内容(从#bin/bash都开始复制)
echo "####first,use yum install this rpm####"
yum -y install openssl-devel
echo "###second,install httpd the dependencies###"
echo "#####welcome to apr install#####"
./configure --prefix=/usr/local/apr && make && make install
echo "#####apr is installed#####"
echo "#####welcome to apr-util install#####"
cd /usr/src/apr-util-1.3.10
./configure --prefix=/usr/local/apr-util --with-apr=/usr/local/apr/bin/apr-1-config && make && make install
echo "#####apr-util is installed#####"
echo "#####welcome to pcre install#####"
./configure --prefix=/usr/local/pcre && make && make install
echo "#####prce is installed#####"
echo "###now,install httpd###"
echo "#####welcome to httpd install######"
./configure --prefix=/usr/local/apache2 --with-apr=/usr/local/apr --with-apr-util=/usr/local/apr-util --with-pcre=/usr/local/pcre --enable-so --enable-rewrite --enable-ssl --with-ssl=/usr/lib--enable-auth-digest --enable-cgi --enable-suexec --with-suexec-caller=daemon --with-suexec-docroot=/usr/local/apache2/htdocs && make && make install
echo "#####httpd is installed#####"
echo "####please check httpd is ok,if no error above before,please start httpd #####"