添加用户和组
[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
5、编译---make
6、安装 make install
方法一:使用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 #开启服务
为什么在源码安装Apache时需要创建用户和组?
因为使用系统默认的用户和组可能会带来安全风险。具体来说,使用系统默认的用户和组可能会导致以下问题:
- 权限问题:如果Apache以root用户运行,它将对系统拥有完全的控制权,这可能导致安全风险。通过创建一个专门的用户和组,可以限制Apache的权限,减少潜在的安全威胁。
- 资源管理:使用专门的用户和组可以更好地管理Apache进程的资源使用情况,避免对系统资源的不必要占用。
- 日志和错误处理:通过创建专门的用户和组,可以更方便地管理和查看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 httxt2dbmapxs 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
注意:
1、 init.d 脚本必须位于 /etc/init.d/
目录下;
2、脚本必须有执行权限;
3、 init.d 脚本可能不适用于所有系统,特别是那些默认使用 systemd 的系统。