- A+
所属分类:linux技术
安装Httpd服务
版本说明:
CentOS 7 以上,默认系统是httpd 2.4,CentOS 6 版默认为httpd 2.2
Ubuntu 18.04 默认 Apache/2.4.29
范例:CentOS 8 安装httpd
[root@CentOS8 ~]# yum info httpd Baseos 3.8 MB/s | 3.9 kB 00:00 AppStream 4.2 MB/s | 4.3 kB 00:00 EPEL 7.1 kB/s | 4.7 kB 00:00 EPEL 1.1 MB/s | 13 MB 00:11 Available Packages Name : httpd Version : 2.4.37 Release : 30.module_el8.3.0+561+97fdbbcc Architecture : x86_64 Size : 1.7 M Source : httpd-2.4.37-30.module_el8.3.0+561+97fdbbcc.src.rpm Repository : AppStream Summary : Apache HTTP Server URL : https://httpd.apache.org/ License : ASL 2.0 Description : The Apache HTTP Server is a powerful, efficient, and extensible : web server. [root@CentOS8 ~]# yum install httpd -y Last metadata expiration check: 0:00:21 ago on Mon 10 Oct 2022 10:57:38 PM CST. Dependencies resolved. ================================================================================================================================================================= Package Architecture Version Repository Size ================================================================================================================================================================= Installing: httpd x86_64 2.4.37-30.module_el8.3.0+561+97fdbbcc AppStream 1.7 M Installing dependencies: apr x86_64 1.6.3-11.el8 AppStream 125 k apr-util x86_64 1.6.1-6.el8 AppStream 105 k centos-logos-httpd noarch 80.5-2.el8 Baseos 24 k httpd-filesystem noarch 2.4.37-30.module_el8.3.0+561+97fdbbcc AppStream 37 k httpd-tools x86_64 2.4.37-30.module_el8.3.0+561+97fdbbcc AppStream 104 k mod_http2 x86_64 1.15.7-2.module_el8.3.0+477+498bb568 AppStream 154 k Installing weak dependencies: apr-util-bdb x86_64 1.6.1-6.el8 AppStream 25 k apr-util-openssl x86_64 1.6.1-6.el8 AppStream 27 k Enabling module streams: httpd 2.4 Transaction Summary ================================================================================================================================================================= Install 9 Packages Total size: 2.3 M Installed size: 6.0 M Downloading Packages: Running transaction check Transaction check succeeded. Running transaction test Transaction test succeeded. Running transaction .............. Installed: apr-1.6.3-11.el8.x86_64 apr-util-1.6.1-6.el8.x86_64 apr-util-bdb-1.6.1-6.el8.x86_64 apr-util-openssl-1.6.1-6.el8.x86_64 centos-logos-httpd-80.5-2.el8.noarch httpd-2.4.37-30.module_el8.3.0+561+97fdbbcc.x86_64 httpd-filesystem-2.4.37-30.module_el8.3.0+561+97fdbbcc.noarch httpd-tools-2.4.37-30.module_el8.3.0+561+97fdbbcc.x86_64 mod_http2-1.15.7-2.module_el8.3.0+477+498bb568.x86_64 Complete! [root@CentOS8 ~]# systemctl enable httpd httpd@ httpd.service httpd@.service httpd.socket [root@CentOS8 ~]# systemctl enable httpd.service --now Created symlink /etc/systemd/system/multi-user.target.wants/httpd.service → /usr/lib/systemd/system/httpd.service. [root@CentOS8 ~]# httpd -v Server version: Apache/2.4.37 (centos) Server built: Nov 4 2020 03:20:37
范例:Ubuntu 1804 安装apache2
tom@ubuntu1804-1:~$ apt install apache2 -y E: Could not open lock file /var/lib/dpkg/lock-frontend - open (13: Permission denied) E: Unable to acquire the dpkg frontend lock (/var/lib/dpkg/lock-frontend), are you root? tom@ubuntu1804-1:~$ sudo apt install apache2 -y [sudo] password for tom: Reading package lists... Done Building dependency tree Reading state information... Done The following additional packages will be installed: apache2-bin apache2-data apache2-utils libapr1 libaprutil1 libaprutil1-dbd-sqlite3 libaprutil1-ldap liblua5.2-0 ssl-cert Suggested packages: ............ Created symlink /etc/systemd/system/multi-user.target.wants/apache2.service → /lib/systemd/system/apache2.service. Created symlink /etc/systemd/system/multi-user.target.wants/apache-htcacheclean.service → /lib/systemd/system/apache-htcacheclean.service. Processing triggers for libc-bin (2.27-3ubuntu1.4) ... Processing triggers for systemd (237-3ubuntu10.52) ... Processing triggers for man-db (2.8.3-2ubuntu0.1) ... Processing triggers for ufw (0.36-0ubuntu0.18.04.1) ... Processing triggers for ureadahead (0.100.0-21) ... tom@ubuntu1804-1:~$ apache2 -v Server version: Apache/2.4.29 (Ubuntu) Server built: 2022-06-23T12:51:37 apache和httpd它们是同一应用程序 只是某些Linux发行版在程序包管理器和配置文件中对它的引用有所不同。 基于RedHat的发行版(CentOS,Fedora)将其称为httpd, 而基于Debian的发行版(Ubuntu)将其称为apache
源码安装httpd服务
ABI和API:
-
不同操作系统的API和ABI规范不同,软件要运行再不同的操作系统上就需要遵守不同操作系统的接口标准。
-
在早期的Apache版本中,应用程序本身必须能够处理各种具体操作系统平台的细节,并针对不同的平台调用不同的处理函数
-
随着Apache的进一步开发,Apache组织决定将这些通用的函数独立出来并发展成为一个新的项目。这样,APR的开发就从Apache中独立出来,Apache仅仅是使用 APR而已
APR:
Apache portable Run-time libraries,Apache可移植运行库,主要为上层的应用程序提供一个可以跨越多操作系统平台使用的底层支持接口库。
APR官网:http://apr.apache.org
所以要编译安装httpd,就需要先安装apr和apr-util这两个可移植的运行库。
范例:CentOS7编译安装httpd2.4
安装httpd-2.4,依赖于apr-1.4+, apr-util-1.4+ (1.4以上的版本)
1.下载软件包并安装编译工具
下载apr包和httpd包 https://httpd.apache.org/ http://apr.apache.org 安装编译工具 [root@centos7 ~]# yum -y install gcc make pcre-devel openssl-devel expat-devel
2.编译安装apr
#先编译安装apr,再安装apr-util,最后安装httpd24 [root@centos7 ~]# mkdir -p /apps/apr [root@centos7 ~]# cd apr-1.7.0 [root@centos7 ~]# ./configure --prefix=/apps/apr [root@centos7 ~]# make -j 2 && make install
3.编译安装apr-util
[root@centos7 ~]# mkdir /apps/apr-util [root@centos7 ~]# cd apr-util-1.6.1 [root@centos7 ~]# ./configure --prefix=/apps/apr-util --with-apr=/apps/apr/ [root@centos7 ~]# make -j 2 && make install
4.编译安装 httpd-2.4
[root@centos7 ~]# mkdir /apps/httpd24 [root@centos7 ~]# cd httpd-2.4.54 [root@centos7 ~]# ./configure --prefix=/apps/httpd24 --enable-so --enable-ssl --enable-cgi --enable-rewrite --with-zlib --with-pcre --with-apr=/apps/apr/ --with-apr-util=/apps/apr-util/ --enable-modules=most --enable-mpms-shared=all --with-mpm=prefork [root@centos7 ~]# make -j 4 && make install [root@centos7 ~]# useradd -s /sbin/nologin -r apache
5.编译安装后配置
Httpd编译过程:/apps/httpd24/build/config.nice 自带的服务控制脚本:/apps/httpd24/bin/apachectl
(1)创建专用用户
[root@centos7 ~]# useradd -s /sbin/nologin -r apache
(2)指定运行httpd的用户
[root@centos7 ~]# vim /apps/httpd24/conf/httpd user apache group apache
(3)配置环境变量
[root@centos7 ~]# echo 'PATH=/apps/httpd24/bin:$PATH' > /etc/profile.d/httpd.sh [root@centos7 ~]# . /etc/profile.d/httpd.sh [root@centos7 ~]# httpd -v Server version: Apache/2.4.54 (Unix) Server built: Oct 11 2022 10:31:36
(4)配置帮助
[root@centos7 ~]# vim /etc/man_db.conf MANDATORY_MANPATH /apps/httpd24/man
(5)设置开机自动启动
[root@centos7 ~]# vim /etc/rc.d/rc.local [root@centos7 ~]# /apps/httpd24/bin/apachectl start [root@centos7 ~]# chmod +x /etc/rc.d/rc.local
(6)创建service unit文件(CentOS 7 以上版本)
[root@centos7 ~]# vim /usr/lib/systemd/system/httpd24.service [Unit] Description=The Apache HTTP Server After=network.target remote-fs.target nss-lookup.target Documentation=man:httpd(8) Documentation=man:apachectl(8) [Service] Type=forking #EnvironmentFile=/etc/sysconfig/httpd ExecStart=/apps/httpd24/bin/apachectl start #ExecStart=/apps/httpd24/bin/httpd $OPTIONS -k start ExecReload=/apps/httpd24/bin/apachectl graceful #ExecReload=/apps/httpd24/bin/httpd $OPTIONS -k graceful ExecStop=/apps/httpd24/bin/apachectl stop KillSignal=SIGCONT PrivateTmp=true [Install] WantedBy=multi-user.target
创建启动脚本(CentOS 6 以前版本)
#自定义启动脚本(参考httpd-2.2的服务脚本) [root@centos6 ~]# cp /etc/rc.d/init.d/httpd /etc/rc.d/init.d/httpd24 [root@centos6 ~]# vim /etc/rc.d/init.d/httpd24 apachectl=/apps/httpd24/bin/apachectl httpd=${HTTPD-/apps/httpd24/bin/httpd} pidfile=${PIDFILE-/apps/httpd24/logs/httpd.pid} lockfile=${LOCKFILE-/var/lock/subsys/httpd24} [root@centos6 ~]# chkconfig -add httpd24 [root@centos6 ~]# chkconfig -list httpd24
编译安装httpd-2.4方法二
将apr和httpd一起进行编译安装。
1.将apr 和apr-util源码与httpd 源码合并
tar xf apr-1.7.0.tar.bz2 tar xf apr-util-1.6.1.tar.bz2 tar xf httpd-2.4.54.tar.bz2 mv apr-1.7.0 httpd-2.4.54/srclib/apr mv apr-util-1.6.1 httpd-2.4.54/srclib/apr-util ls httpd-2.4.54/srclib/ apr apr-util Makefile.in
- 将三者一并编译并安装
--with-included-apr
cd httpd-2.4.54/ ./configure --prefix=/apps/httpd24 --enable-so --enable-ssl --enable-cgi --enable-rewrite --with-zlib --with-pcre --with-included-apr --enable-modules=most --enable-mpms-shared=all --with-mpm=prefork make -j 4 && make install
安装后的配置和方法一相同。