Linux编译安装Apache
一 安装
系统 ubuntu14.0
帮助文档:apache中文手册
下载apache:wget https://mirrors.bfsu.edu.cn/apache//httpd/httpd-2.4.43.tar.bz2
1.apache的依赖
在编译apache之前需要安装
sudo apt-get install expat libexpat1-dev
sudo apt-get install pcre libpcre3-dev
下载apr:wget http://us.mirrors.quenda.co/apache//apr/apr-1.7.0.tar.gz
解压 tar -xvf apr-1.7.0.tar.gz
cd apr-1.7.0
./configure
make && make install 默认安装目录为 /usr/local/apr
下载apr-util:wget http://us.mirrors.quenda.co/apache//apr/apr-util-1.6.1.tar.gz
解压 tar -xvf apr-util-1.6.1.tar.gz
cd apr-util-1.6.1
./configure --prefix=/usr/local/apr-util ##需要指定安装目录,不然会安装到/usr/local/apr/lib下。
make && make install
2.安装编译apache
tar -xvf httpd-2.4.43.tar.bz2
cd httpd-2.4.43
./configure --with-apr=/usr/local/apr --with-apr-util=/usr/local/util ##指定依赖,
–enable-ssl开放指定模块,默认安装目录为/usr/local/apache2
make && make install
二 apache配置
1.添加环境变量
vi ~/.bashrc
alias apache=/usr/local/apache2/bin/apachectl
保存
source ~/.bashrc
2.注册服务
将apachectl拷贝到 /etc/init.d/下命名为httpd
apchectl 与httpd的关系
apachectl是Apache HTTP服务器的前端程序。其设计意图是帮助管理员控制Apache httpd后台守护进程的功能。
apachectl脚本有两种操作模式。首先,作为简单的httpd的前端程序,设置所有必要的环境变量,然后启动httpd
,并传递所有的命令行参数。其次,作为SysV初始化脚本,接受简单的一个单词的参数,如:start, restart, stop
,并把他们翻译为适当的信号发送给httpd 。如果你的Apache安装在非标准的路径中,你将需要修改apachectl脚本使其中的路径正确地指向httpd程序。此外,还可以指定任何必要的httpd命令行参数。细节可以参见脚本中的注解。
apachectl脚本如果执行成功,则返回0 ;如果出错,则其返回值>0 。更多细节可以参见脚本中的注解。
如果你启动的是/usr/local/apache2/bin/apachectl,
会启动HTTPD=’/usr/local/apache2/bin/httpd’这个httpd
使用的配置文件应该是/usr/local/apache2/conf/httpd.conf, 你访问到的主页应该就是it
works,也就是你新安装的apache2的首页而你启动/usr/sbin/httpd 使用的配置文件应该是/etc/httpd/conf/httpd.conf
你访问到的主页应该就是apache的介绍页,也就是这个linux系统原来的apache的首页
cp /usr/local/apache2/bin/apachectl /etc/init.d/httpd
执行 chkconfig --add httpd
会报错:service httpd not suporrt chkconfig
解决办法:
vi /etc/init.d/httpd
![在这里插入图片描述](https://img-blog.csdnimg.cn/20200608103310209.PNG)
chkconfig --add httpd
如果报错无chkconfig,则需要安装chkconfig,
sudo apt-get install sysv-rc-conf
cp /usr/sbin/sysv-rc-conf /usr/sbin/chkconfig
3 添加ssl模块
安装openssl以及依赖
sudo apt-get install opensll libssl-dev libssl0.9.8
编译安装模块
/usr/local/apache2/bin/apxs -i -c -a mod_ssl.c
说明:-i 安装, -c 编译指定模块 -a激活模块(即向httpd.conf添加 LoadModule指令)
重启apache 的时候会报错,一般是没有编译时没有指定openssl的路径
/usr/local/apache24/bin/apxs -a -i -DHAVE_OPENSSL=1 -I/usr/include/openssl -L/usr/lib64/openssl -c *.c -lcrypto -lssl -ldl
如果报未包含md.h 此时需要将md以同样的方式编译。(编译这个报错可将modules/md中的文件拷贝到/usr/include中)。