安装流程
不要安装在Kali Linux系统下,Kali中已经有apache2了
-
检查系统中是否已经有httpd程序在运行
ps -ef | grep httpd #ps即Process Status,该指令会列出执行ps命令的那个时刻系统中执行的所有进程 #grep即Global Regular Expression Print,它搜索指定文件的内容匹配特定的内容,默认情况下输出匹配成功所在的行,但是grep只支持匹配,但是不支持替换
-
先检查是否已安装GCC/GCC-c++
gcc -v #如果有返回信息,说明已经安装了GCC,若没有执行下面这条语句 sudo apt-get install build-essential
-
由于httpd安装需要依赖于APR、APR-Util、PCRE。将它们安装在/usr/local
sudo mkdir /usr/local/httpd sudo mkdir /usr/local/apr sudo mkdir /usr/local/apr-util sudo mkdir /usr/local/pcre
-
所以依次下载APR、APR-Util、PCRE、Apache官方网站的安装包。
-
解压压缩包
tar -zxf *文件名* #-x 从存档中提取文件 #-z 过滤文档gzip #-f 使用归档文件
-
安装APR
cd apr-1.7.0 sudo ./configure --prefix=/usr/local/apr sudo make sudo make install
- configure:配置。它是一个可执行脚本,用于探测操作系统的特性和相关依赖,根据检测结果生成Makefile文件。在待安装的源码路径下使用./configure –help输出详细功能。其中prefix是配置安装的路径,可以指定把所有资源文件放在/usr/local/xxx路径下,不会杂乱。否则会比较杂乱:
- 可执行文件会在/usr/local/bin
- 库文件会在/usr/local/lib
- 配置文件在/usr/local/etc
- 其他资源在/usr/local/share
- make:编译。执行该命令需要从Makefile文件中读取信息。
- make install:安装,它也从Makefile文件中读取信息
- 每一步骤执行完可以通过echo $?查看命令是否执行成功,如果成功,返回0
- configure:配置。它是一个可执行脚本,用于探测操作系统的特性和相关依赖,根据检测结果生成Makefile文件。在待安装的源码路径下使用./configure –help输出详细功能。其中prefix是配置安装的路径,可以指定把所有资源文件放在/usr/local/xxx路径下,不会杂乱。否则会比较杂乱:
-
安装apr-util
cd apr-util-1.6.1 sudo ./configure --prefix=/usr/local/apr-util --with-apr=/usr/local/apr/bin/apr-1-config sudo make sudo make install
-
可能会遇到找不到expat.h的问题,原因是缺少expat。安装之后需要重新探测环境,执行configure。
sudo apt-get install libexpat1-dev #Ubuntu sudo yum install -y expat-devel #Centos
-
-
安装pcre
cd pcre-8.44 sudo ./configure --prefix=/usr/local/pcre --with-apr=/usr/local/apr/bin/apr-1-config sudo make sudo make install
-
安装httpd
cd httpd-2.4.46 sudo ./configure --prefix=/usr/local/httpd --with-pcre=/usr/local/pcre --with-apr=/usr/local/apr --with-apr-util=/usr/local/apr-util sudo make sudo make install
-
配置Apache
cd /usr/local/httpd/conf vim httpd.conf
- Listen port ,默认为80端口
-
启动、关闭、重启
cd /usr/local/httpd/bin ./apachectl start ./apachectl stop ./apachectl restart
- httpd通常不会直接执行
- 在Unix系统中,被apachectl调用
-
由于每次到/usr/local/httpd/bin/apachectl执行启动比较麻烦,所以可以把它设置成Linux系统服务,并设置开机启动
sudo cp /usr/local/httpd/bin/apachectl /etc/rc.d/init.d/httpd #centos sudo cp /usr/local/httpd/bin/apachectl /etc/init.d/httpd #ubuntu、kali #重启电脑之后,就可以通过service控制httpd了
- runlevel control directory,大多数Linux发行版本中,启动脚本都被放在/etc/rc.d/init.d/
-
常用命令
sudo service httpd start #启动 sudo service httpd stop #关闭 sudo service httpd restart #重启 sudo systemctl status httpd.service #查看状态