设为首页 收藏本站
查看: 812|回复: 0

[经验分享] 源码包搭建apache(2.4.x)

[复制链接]

尚未签到

发表于 2018-11-24 11:51:20 | 显示全部楼层 |阅读模式
  apache(源码包安装)
apache的安装  (用脚本安装下面有脚本安装的方法)
最新版本的就是变态,本来你安装了apr和apr-util包了,但就是预编译配置通不过,那就直接上源码包。
安装前的准备:
yum -y install gcc
yum -y install gcc-c++
yum -y install openssl-devel
以为安装这些了就可以了,编译的时候出现error,基本我属于那种有警告不管,但是尼玛出现error了,木有办法了,那只有解决了。
[root@localhost /]# rpm -qa | grep apr
apr-util-ldap-1.3.9-3.el6.i686
apr-1.3.9-3.el6.i686
apr-util-1.3.9-3.el6.i686
这几个是搭建apache必须安装的,系统显示已经安装了相应的rpm包了。但是你去编译apache的时候还是可能出现错误,那不管了,直接上源码包

error1:
configure: error: APR not found. Please read the documentation.

解决error1:
tar zxvf apr-1.4.2.tar.gz -C /usr/src/
   
   cd /usr/src/apr-1.4.2
  ./configure --prefix=/usr/local/apr
  make && make install

error2:
configure: error: APR-util not found. Please read the documentation

解决error2:cd /
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
  make && make install

error3:
configure: error: pcre-config for libpcre not found. PCRE is required and available from http://pcre.org/

解决error3:
tar zxvf pcre-8.11.tar.gz -C /usr/src/

   cd /usr/src/pcre-8.11
   ./configure --prefix=/usr/local/pcre
   make && make install

最后这些都解决完了,尼玛终于没有错误了!!!!我感动啊!!
tar zxvf httpd-2.4.3.tar.gz -C /usr/src/

  cd /usr/src/httpd-2.4.3
  ./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

apache搭建完成后
装完成后,了解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

###添加这句(直接copy)
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 (这次开启的时候发现什么都木有)
但是服务已经开启了!!
查看一下httpd的端口状态和进程状态
[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
先修改脚本启动配置文件
vim /etc/init.d/httpd

########修改一些内容
prog=$(basename $0 | sed -e 's/^[SK][0-9][0-9]//')
if [ -f /etc/sysconfig/${prog} ]; then
        . /etc/sysconfig/${prog}
fi
httpd=${HTTPD-/usr/local/apache2/bin/httpd}
prog=httpd
pidfile=${PIDFILE-/usr/local/apache2/${prog}.pid}
lockfile=${LOCKFILE-/var/lock/subsys/${prog}}
RETVAL=0
check13 () {
        CONFFILE=/usr/local/apache2/conf/httpd.conf  
########保存退出

然后在修改apache的配置文件
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
Unable to open logs
                                                           [FAILED]
[root@localhost init.d]# service httpd stop
Stopping httpd:                                            [FAILED]
发现还是出现这样的错误,别急,在来小小的修改一下
[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
Starting httpd:                                            [  OK  ]
[root@localhost rpm]# service httpd restart
Stopping httpd:                                            [  OK  ]
Starting httpd:                                            [  OK  ]
[root@localhost rpm]#

有人说何必这么费劲也可以这样
cp /usr/local/apache2/bin/apachectl /etc/init.d/httpd  #复制为系统服务
vim /etc/init.d/httpd    #编辑此服务,将前三行修改为
#!/bin/bash
# chkconfig: 35 85 15
#description:Apache httpd
service httpd start
但是这样敲了之后,这个命令不会出现Starting httpd:    [  OK  ] ,不信你可以试试,这样就还需要
查看是否开启了没有netstat -pant | grep 80 有80就开启了
确保开机服务器自动启动
chkconfig --add httpd
chkconfig --level 35 httpd on

每次打开配置文件的时候都有很多无用的
#######为便于查看可以用这个命令清楚不需要的东西######
   cp http.conf http.conf.bak(先进行备份)
grep -v "#" httpd.conf.bak | grep -v "^$" > httpd.conf
grep -v "#" 去掉#号
grep -v "^$" 去掉空格
##############常用的全局配置参数######################
Serverroot: 用于设置httpd服务器的根目录
Listen: 设置apache用于监听的端口号,默认为80
User: 设置运行httpd进程的用户身份
Group: 设置运行httpd进程的组身份
Serveradmin: 设置服务器管理员的e-mail地址
Servername: 设置服务器的完整主机名
Documentroot: 设置网页文档根目录
Directoryindex: 设置网站的默认首页格式
Errorlog: 错误日志的路径和文件名
LogLevel:记录日志的级别,默认为warn
Customlog: 访问日志的路径和格式类型
Pidfile: 保存服务器程序进程号(pid)的文件,默认为logs/httpd.pid
Timeout: web服务器与浏览器之间网络连接的超时秒数,默认为300秒
Keepalive: 是否使用保持连接功能:off on
Maxkeepaliverequests: 客户端每次连接允许请求的最大文件数,默认为100个。当keepalive设置为on时才生效
Keepalivetimeout: 保持连接的超时秒数,默认为15秒
Include: 用于包含另一个配置文件的内容
###################apache的相关操作####################################
1.虚拟目录
先修改配置文件
vim /usr/local/apache2/conf/httpd.conf
###在模块中添加一句,然后在下面添加几句

     Alias    /test         "/data/web"      


    AllowOverride None
    Options None
    Require all granted


#######里面写的东西配置文件里面是有模板的copy之后改动一点就ok了然后保存退出

然后要新建那个虚拟目录
mkdir -p /data/web
   /data目录可以是挂载到linux系统中的,所以这个目录就看你硬盘多大了
在新建的目录里面 vim index.html里面随便写一点东东就ok了
然后重启httpd服务器
访问的时候 http://ip/test(记住这里一定不要敲/直接回车)


2.虚拟主机
  a)同ip同域名不同端口
vim /usr/local/apache2/conf/httpd.conf
修改配置文件

####添加这些
Listen 8001
Listen 8002

ServerAdmin  webmaster@dummy-host.example.com
DocumentRoot  /data/web/test1
ServerName    www.test.com
ErrorLog      /data/web/log/test1.err.log
CustomLog     /data/web/log/test1.acc.log common


ServerAdmin  webmaster@dummy-host.example.com
DocumentRoot  /data/web/test2
ServerName    www.test.com
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  
   (这个是存放网页文件的目录)
ServerName www.test.com            
   (这个是写域名的,有自己的域名,就写自己的域名,没有域名随便写了也不要紧,因为我们用ip访问)
CustomLog  data/web/log/test1.acc.log common
   (用于设置httpd服务器访问日志文件的路径和格式类型,这个文件里面写入这你登录的记录)
ErrorLog     /data/web/log/test1.err.log
   (用于设置错误日志文件的路径和文件名(如果你设置了,那这个目录和文件必须存在,木有就新建)这个文件写入的是,你登录错误的记录)

新建配置文件里面指定的虚拟主机目录,因为没有,那就要新建
cd /data/web/                                                  (切换目录,在这个目录里面去新建)
mkdir test1 test2 log                          (新建两个存放网页目录的文件和一个存放日志的文件)
cd log/                                                        (切换到日志的目录文件中)
touch test1.err.log test1.acc.log  test2.err.log test2.acc.log (新建四个日志文件)
vim /data/web/test1/index.html                                 (编辑两个网页文件便于测试)
    this is test1 page
vim /data/web/test2/index.html  
    this is test2 page


访问测试 http://ip:8001 (看见this is test1 page  就ok了)
         http://ip:8002  (看见this is test2 page  就ok了)

b)同ip不同域名同端口
  vim /usr/local/apache2/conf/httpd.conf
修改配置文件

####添加这些:wq

ServerAdmin  webmaster@dummy-host.example.com
DocumentRoot  /data/web/test1
ServerName    www.test1.com
ErrorLog      /data/web/log/test1.err.log
CustomLog     /data/web/log/test1.acc.log common


ServerAdmin  webmaster@dummy-host.example.com
DocumentRoot  /data/web/test2
ServerName    www.test2.com
ErrorLog       /data/web/log/test2.err.log
CustomLog      /data/web/log/test2.acc.log  common

#####保存退出
重启服务

如果临时的不能搭建dns,可以用host文件代替
vim /etc/hosts
172.16.1.1   www.test1.com
172.16.1.1  www.test2.com
   (!!!还是要新建配置文件里面指定的虚拟主机目录!!!)
访问测试 http://www.test1.com (看见this is test1 page  就ok了)
         http://www.test2.com  (看见this is test2 page  就ok了)
c)不同ip同域名同端口

vim /usr/local/apache2/conf/httpd.conf
修改配置文件

####添加这些

ServerAdmin  webmaster@dummy-host.example.com
DocumentRoot  /data/web/test1
ServerName    www.test.com
ErrorLog      /data/web/log/test1.err.log
CustomLog     /data/web/log/test1.acc.log common


ServerAdmin  webmaster@dummy-host.example.com
DocumentRoot  /data/web/test2
ServerName    www.test.com
ErrorLog       /data/web/log/test2.err.log
CustomLog      /data/web/log/test2.acc.log  common

#####保存退出
重启服务
模拟ip出来
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了)

3.系统用户的个人主页
a)修改配置文件
vim /usr/local/apache2/conf/httpd.conf

####把配置文件中的这两句前面的#去掉
LoadModule userdir_module modules/mod_userdir.so
Include conf/extra/httpd-userdir.conf  
#####保存退出,这里就采用默认的路径
b)新建用户给出密码
#################################
useradd li
useradd liuh
passwd li(li)
passwd liu(liu)
#################################
c)在li和liu用户的宿主目录中新建文件
cd /home/li
mkdir public_html
cd public_html
vim index.html(为li用户新建自己的主页)
cd /home/liu
mkdir public_html
cd public_html
vim index.html(为liu用户新建自己的主页)
chmod o+x /home/li* (为宿主目录中的用户修改权限)
d)重启服务
#################访问浏览器##################
http://ip/~li/  (其中li为用户名)
###############################################


4.做授权认证
修改配置文件
vim /usr/local/apache2/conf/httpd.conf

#####添加这几句(用了一个虚拟目录)
     Alias  /test     "/data/web"

    Options Indexes MultiViews FollowSymLinks
    AllowOverride All
    AuthType basic
    AuthName "welcome test"
    AuthUserFile /usr/local/apache2/conf/httppwd
    Require user liu

####保存退出

建立网页目录和文件
mkdir -p /data/web
vim /data/web/index.html

建立存储认证用户账号及口令的文件
/usr/local/apache2/bin/htpasswd -c /usr/local/apache2/conf/httppwd liu
New password:
Re-type new password:  
(添加第二个,或者多个的时候都不需要-c了)
/usr/local/apache2/conf/httppwd 这个就是AuthUserFile认证用户文件的路径文件)

然后重启服务

访问 http://ip/test
  输入用户名和密码

组的认证

修改配置文件
vim /usr/local/apache2/conf/httpd.conf

#####添加这几句(用了一个虚拟目录)
     Alias  /test     "/data/web"

    Options Indexes MultiViews FollowSymLinks
    AllowOverride All
    AuthType basic
    AuthName "welcome test"
    AuthUserFile /usr/local/apache2/conf/httppwd
    AuthGroupFile /usr/local/apache2/conf/httpgrp
    Require group admin

####保存退出

建立组认证的文件
vim /usr/local/apache2/conf/httpgrp

###添加组里面的成员
admin:test jie(需要加入直接玩后面添加)
####然后保存退出

用户密码和之前建立的一样

然后重启服务


#######apache配置文件的一些其它参数######
# User home directories
#Include conf/extra/httpd-userdir.conf  (把这个#号去掉就可以做个人主页网址)
         这个可以自己写路径,建议路径的目录最好在conf目录下
#LoadModule userdir_module modules/mod_userdir.so (这个# 号是随着上面的一起的,这个
就是userdir的模块,这句也在配置文件中,可以找到)

# Virtual hosts
#Include conf/extra/httpd-vhosts.conf
这句是做虚拟主机
#########建议主配置文件内容越少越好######

$$$$$$$$$$$额外的补充$$$$$$$$$$$$$$$$$$$
禁止使用IP直接访问apache
1. 新建立一个默认主机,即出现在所有最重要的


  ServerName x.x.x
  DocumentRoot /var/www/error
  RewriteEngine On
  RewriteRule   ^.*  /400.php


2. 编辑文件/var/www/error/400.php, 输出以下代码:

Bad Request

如此,即可实现禁止直接用ip访问apache。

解释一下上面的原理:
1. 将对默认主机的所有请求重写向到/var/www/error/400.php
2.   利用php程序输出400状态。

不足之处,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/
然后在/usr/src/目录下面vim 一个文件
eg:vim httpd.sh
然后把下面的copy到httpd.sh里面保存退出在给httpd.sh添加可执行的权限
chmod +x /usr/src/httpd.sh
然后在执行脚本 /usr/src/httpd.sh
以下所有都是需要复制的内容(从#bin/bash都开始复制)

#bin/bash
echo "####first,use yum install this rpm####"
yum -y install gcc
yum -y install gcc-c++
yum -y install openssl-devel
echo "###second,install httpd the dependencies###"
echo "#####welcome to apr install#####"
cd /usr/src/apr-1.4.2
./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#####"
cd /usr/src/pcre-8.11
./configure --prefix=/usr/local/pcre && make && make install
echo "#####prce is installed#####"

echo "###now,install httpd###"
echo "#####welcome to httpd install######"
cd /usr/src/httpd-2.4.3
./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 #####"





运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-639004-1-1.html 上篇帖子: redhat or centos rpm包搭建apache 下篇帖子: rpm包搭建apache的shell脚本
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表