源码编译安装httpd 2.4,提供系统服务管理脚本并测试(两种方法实现)

添加用户和组

root@localhost httpd-2.4.46\]# groupadd -r -g 48 apache \[root@localhost httpd-2.4.46\]# useradd -r -u 48 -g 48 -c "Apache server" -s /sbin/nologin apache **1.下载源码** \[root@localhost \~\]# wget -c https://archive.apache.org/dist/httpd/httpd-2.4.46.tar.gz **2.解压** \[root@localhost \~\]# tar xf httpd-2.4.46.tar.gz -C /usr/local/src/ **3.安装依赖** \[root@localhost httpd-2.4.46\]# yum install gcc gcc-c++ openssl-devel pcre-devel make -y **4、./configure** \[root@localhost \~\]# cd /usr/local/src/httpd-2.4.46/ \[root@localhost httpd-2.4.46\]# ./configure --prefix=/usr/local/apache --enable-so --enable-ssl 出现提示信息: checking for APR... no configure: error: APR not found. Please read the documentation. \[root@localhost httpd-2.4.46\]# yum list \| grep -i apr # 查询依赖安装包 \[root@localhost httpd-2.4.46\]# yum install apr-devel apr-util-devel -y 再重复./configure \[root@localhost httpd-2.4.46\]# ./configure --prefix=/usr/local/apache --enable-so --enable-ssl ![](https://i-blog.csdnimg.cn/direct/1e21917353074f1f9c8ddc49585608c4.png) **5、编译---make** ![](https://i-blog.csdnimg.cn/direct/e2df70ddc71548ad9bc4b7e112368569.png) **6、安装 make install** ![](https://i-blog.csdnimg.cn/direct/557995e2638b4fdfb6a32967458fae24.png)

方法一:使用systemctl服务文件

1、 创建/usr/lib/systemd/system/httpd.service 文件,并添加以下内容:

Unit

Description=The Apache HTTP Server

After=network.target

Service

Type=forking

PIDFile=/usr/local/apache/logs/httpd.pid

ExecStart=/usr/local/apache/bin/httpd -k start

ExecReload=/usr/local/apache/bin/httpd -k restart

ExecStop=/usr/local/apache/bin/httpd -k stop

PrivateTmp=true

Install

WantedBy=multi-user.target

2、测试

root@localhost httpd-2.4.46\]#vim /usr/local/apache/conf/httpd.conf #将用户和组改成系统用户 \[root@localhost httpd-2.4.46\]# systemctl daemon-reload #重新加载所有的单元文件 \[root@localhost httpd-2.4.46\]# systemctl start httpd.service #开启服务 ![](https://i-blog.csdnimg.cn/direct/a9c317da48b644ea9ea64c5572ac87e8.png)

为什么在源码安装Apache时需要创建用户和组?

因为使用系统默认的用户和组可能会带来安全风险。具体来说,使用系统默认的用户和组可能会导致以下问题:

  1. ‌权限问题‌:如果Apache以root用户运行,它将对系统拥有完全的控制权,这可能导致安全风险。通过创建一个专门的用户和组,可以限制Apache的权限,减少潜在的安全威胁。
  2. ‌资源管理‌:使用专门的用户和组可以更好地管理Apache进程的资源使用情况,避免对系统资源的不必要占用。
  3. ‌日志和错误处理‌:通过创建专门的用户和组,可以更方便地管理和查看Apache的日志文件和错误信息,有助于故障排查和维护。

方法二:使用 init.d 脚本

1、 参考、复制Apache官方提供的兼容RHEL6系统服务的脚本,并添加两行内容

root@localhost \~\]# cd /usr/local/apache/bin/ \[root@localhost bin\]# ls ab checkgid envvars-std htdbm httpd rotatelogs apachectl dbmmanage fcgistarter htdigest httxt2dbm apxs envvars htcacheclean htpasswd logresolve \[root@localhost bin\]# vim apachectl \[root@localhost bin\]# cp apachectl /etc/init.d/httpd #查看该文件是否有执行权限 \[root@localhost bin\]# ll /etc/init.d/httpd -rwxr-xr-x 1 root root 3500 Jan 16 18:18 /etc/init.d/httpd \[root@localhost bin\]# vim /etc/init.d/httpd 里面添加以下两行: #chkconfig: 35 85 15 #description: Apache is an HTTP(S) server

2、添加成系统服务脚本、设置开机自启动 和测试

root@localhost bin\]# chkconfig --level 35 --add httpd \[root@localhost bin\]# chkconfig --level 35 httpd on \[root@localhost bin\]# ll /etc/init.d/httpd #查看是否有执行权限,没有则加 -rwxr-xr-x 1 root root 3504 Jan 16 19:51 /etc/init.d/httpd \[root@localhost bin\]# chkconfig --level 35 httpd off #开机不自启动 \[root@localhost bin\]# chkconfig --level 35 --del httpd #删除 \[root@localhost bin\]# rm -rf /etc/init.d/httpd ![](https://i-blog.csdnimg.cn/direct/a9c317da48b644ea9ea64c5572ac87e8.png)

注意:

1、 init.d 脚本必须位于 /etc/init.d/ 目录下;

2、脚本必须有执行权限;

3、 init.d 脚本可能不适用于所有系统,特别是那些默认使用 systemd 的系统。

相关推荐
苏三福35 分钟前
交叉编译linux-arm32位程序
linux·运维·服务器
Lin南舟1 小时前
掌握正则表达式与文本处理:提升 Shell 编程效率的关键技巧
linux·正则表达式
青瓦梦滋1 小时前
Linux基本工具(yum、vim、gcc、Makefile、git、gdb)
linux·运维·服务器·c++
梅坞茶坊2 小时前
Centos安装unoconv文档转换工具并在PHP中使用phpword替换word模板中的变量后,使用unoconv将word转换成pdf
linux·服务器·centos
2004v20042 小时前
交叉编译 手动安装 libzip 库 移植ARM 需要 zlib的
linux·运维·arm开发
Clownseven2 小时前
堡垒机(跳板机)入门指南:构建更安全的多服务器运维架构
运维·服务器·安全
TG_yilongcloud3 小时前
亚马逊云代理商:如何选择适合的AWS EC2实例类型?
服务器·云计算·aws·实例类型
ajassi20003 小时前
开源 C++ QT Widget 开发(十)IPC进程间通信--共享内存
linux·c++·qt·开源
努力努力再努力@李3 小时前
利用本地电脑上的MobaXterm连接虚拟机上的Ubuntu
linux·运维·ubuntu
百思可瑞教育4 小时前
Jenkins+Docker 实现一键自动化部署项目
运维·docker·容器·自动化·jenkins·北京百思可瑞教育·百思可瑞教育