首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >Apache介绍和Apache包安装

Apache介绍和Apache包安装

原创
作者头像
Raymond运维
修改2025-09-25 07:56:53
修改2025-09-25 07:56:53
3600
举报
文章被收录于专栏:干货分享干货分享

Apache介绍和安装

1.Apache介绍

t1
t1

Apache一般指Apache HTTP Server,是Apache软件基金会的一个开源网页服务器软件,以下为你详细介绍:

基本信息

它具有简单、快速、可靠等特点,能运行在几乎所有广泛使用的计算机平台上,由于其跨平台和安全性,被广泛使用,是最流行的Web服务器软件之一。

发展历程

  • 1995年,美国国家超级电脑应用中心(NCSA)的HTTPd服务器项目停滞后,开发者们将修补代码汇总,形成了Apache HTTP Server,同年4月正式发布。
  • 此后不断更新完善,功能日益强大,逐渐成为互联网上使用最广泛的Web服务器软件。

特点

  • 开放源代码:遵循Apache许可证,用户可自由使用、修改和分发,众多开发者参与贡献,不断改进其功能和性能。
  • 跨平台性:支持多种操作系统,如Windows、Linux、Unix等,方便不同环境部署。
  • 模块化设计:拥有丰富模块,如身份验证、URL重写、缓存等,用户可根据需求灵活加载或卸载,定制服务器功能。
  • 稳定性与可靠性:经过长期发展和大量实践检验,能在高负载下稳定运行,确保网站持续提供服务。
  • 安全性:提供多种安全机制,如SSL/TLS加密、访问控制、防止DDoS攻击等,保护网站和用户数据安全。

应用场景

  • 企业网站:为各类企业搭建官方网站,展示企业信息、产品和服务,处理客户咨询和订单。
  • 电子商务平台:支撑在线购物网站,处理大量用户访问、交易数据和支付流程,保障交易安全稳定。
  • 内容管理系统(CMS):作为WordPress、Drupal等CMS的服务器平台,发布和管理各种类型的内容。

2.Apache安装

2.1 主机初始化

2.1.1 设置网卡名

  • Rocky Linux 9/10、Almalinux 9/10、CentOS Stream 9/10、AnolisOS 23、OpenCloudOS 9:
  • 创建 systemd 链接文件: 创建 /etc/systemd/network/70-eth0.link 文件。
代码语言:javascript
复制
[root@rocky10 ~]# mkdir -p /etc/systemd/network/
[root@rocky10 ~]# touch /etc/systemd/network/70-eth0.link

[root@rocky10 ~]# ip addr
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host noprefixroute 
       valid_lft forever preferred_lft forever
2: ens160: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000
    link/ether 00:0c:29:02:55:30 brd ff:ff:ff:ff:ff:ff
    altname enp3s0
    altname enx000c29025530
    inet 172.31.15.1/20 brd 172.31.15.255 scope global dynamic noprefixroute ens160
       valid_lft 1776sec preferred_lft 1776sec
    inet6 fe80::20c:29ff:fe02:5530/64 scope link noprefixroute 
       valid_lft forever preferred_lft forever

[root@rocky10 ~]# cat > /etc/systemd/network/70-eth0.link << EOF
[Match]
MACAddress=00:0c:29:f8:60:8f

[Link]
Name=eth0
EOF

# 也可以执行下面命令
ETHNAME=`ip addr | awk -F"[ :]" '/^2/{print $3}'`
ETHMAC=`ip addr show ${ETHNANME} | awk -F' ' '/ether/{print $2}'`
mkdir /etc/systemd/network/
touch /etc/systemd/network/70-eth0.link
cat > /etc/systemd/network/70-eth0.link << EOF
[Match]
MACAddress=${ETHMAC}

[Link]
Name=eth0
EOF
  • 修改 NetworkManager 配置文件: 如果使用 NetworkManager 管理网络,需要修改 /etc/NetworkManager/system-connections 下的配置文件。
代码语言:javascript
复制
[root@rocky10 ~]# mv /etc/NetworkManager/system-connections/ens160.nmconnection /etc/NetworkManager/system-connections/eth0.nmconnection

[root@rocky10 ~]# sed -i.bak 's/'ens160'/eth0/' /etc/NetworkManager/system-connections/eth0.nmconnection

# 也可以执行下面命令
mv /etc/NetworkManager/system-connections/${ETHNAME}.nmconnection /etc/NetworkManager/system-connections/eth0.nmconnection
sed -i.bak 's/'${ETHNAME}'/eth0/' /etc/NetworkManager/system-connections/eth0.nmconnection
  • Rocky Linux 8、Almalinux 8、CentOS 7、CentOS Stream 8、openEuler 22.03和24.03 LTS、AnolisOS 8、OpenCloudOS 8、Kylin Server v10/v11、UOS Server v20:
  • 修改 GRUB 配置文件: 打开 /etc/default/grub 文件,添加以下内容到 GRUB_CMDLINE_LINUX 行
代码语言:javascript
复制
net.ifnames=0 biosdevname=0

执行以下命令:

代码语言:javascript
复制
sed -ri.bak '/^GRUB_CMDLINE_LINUX=/s@"$@ net.ifnames=0 biosdevname=0"@' /etc/default/grub

然后更新 GRUB 配置:

代码语言:javascript
复制
grub2-mkconfig -o /boot/grub2/grub.cfg

如果是 UEFI 引导系统,更新命令为:

代码语言:javascript
复制
# Rocky
grub2-mkconfig -o /boot/efi/EFI/rocky/grub.cfg

# Almalinux
grub2-mkconfig -o /boot/efi/EFI/almalinux/grub.cfg

# CentOS
grub2-mkconfig -o /boot/efi/EFI/centos/grub.cfg

# openEuler
grub2-mkconfig -o /boot/efi/EFI/openEuler/grub.cfg

# AnolisOS
grub2-mkconfig -o /boot/efi/EFI/anolis/grub.cfg

# OpenCloudOS
grub2-mkconfig -o /boot/efi/EFI/opencloudos/grub.cfg

# Kylin Server
grub2-mkconfig -o /boot/efi/EFI/kylin/grub.cfg

# UOS Server
grub2-mkconfig -o /boot/efi/EFI/uos/grub.cfg

# UEFI 引导系统可以直接执行下面命令:
EFI_DIR=`find /boot/efi/ -name "grub.cfg" | awk -F"/" '{print $5}'`
grub2-mkconfig -o /boot/efi/EFI/${EFI_DIR}/grub.cfg
  • 创建 Udev 规则文件: 创建 /etc/udev/rules.d/10-network.rules 文件,并添加以下内容:
代码语言:javascript
复制
SUBSYSTEM=="net", ACTION=="add", ATTR{address}=="<网卡MAC地址>", NAME="eth0"

注意:创建Udev这个步骤只在AnolisOS 8上执行。

将 <网卡MAC地址> 替换为实际网卡的 MAC 地址。

代码语言:javascript
复制
[root@anolisos8 ~]# ip addr
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host 
       valid_lft forever preferred_lft forever
2: ens33: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
    link/ether 00:0c:29:47:02:3f brd ff:ff:ff:ff:ff:ff
    altname enp2s1
    inet 172.31.15.25/20 brd 172.31.15.255 scope global dynamic noprefixroute ens33
       valid_lft 1785sec preferred_lft 1785sec
    inet6 fe80::20c:29ff:fe47:23f/64 scope link noprefixroute 
       valid_lft forever preferred_lft forever

[root@anolis8 ~]# cat >> /etc/udev/rules.d/10-network.rules << EOF
SUBSYSTEM=="net", ACTION=="add", ATTR{address}=="00:0c:29:c5:38:3b", NAME="eth0"
EOF

# 也可以执行下面命令
ETHNAME=`ip addr | awk -F"[ :]" '/^2/{print $3}'`
ETHMAC=`ip addr show ${ETHNANME} | awk -F' ' '/ether/{print $2}'`
cat >> /etc/udev/rules.d/10-network.rules << EOF
SUBSYSTEM=="net", ACTION=="add", ATTR{address}=="${ETHMAC}", NAME="eth0"
EOF
  • 修改网卡配置文件: 创建 /etc/sysconfig/network-scripts/ifcfg-eth0 文件,并配置网卡参数,例如:
代码语言:javascript
复制
ETHNAME=`ip addr | awk -F"[ :]" '/^2/{print $3}'`
mv /etc/sysconfig/network-scripts/ifcfg-${ETHNAME} /etc/sysconfig/network-scripts/ifcfg-eth0
sed -i.bak 's/'${ETHNAME}'/eth0/' /etc/sysconfig/network-scripts/ifcfg-eth0
  • Ubuntu和Debian:
代码语言:javascript
复制
# Ubuntu和Debian先启用root用户,并设置密码
raymond@ubuntu2404:~$ cat set_root_login.sh 
#!/bin/bash

read -p "请输入密码: " PASSWORD
echo ${PASSWORD} |sudo -S sed -ri 's@#(PermitRootLogin )prohibit-password@\1yes@' /etc/ssh/sshd_config
sudo systemctl restart sshd
sudo -S passwd root <<-EOF
${PASSWORD}
${PASSWORD}
EOF

raymond@ubuntu2404:~$ bash set_root_login.sh 
请输入密码: 123456
[sudo] password for raymond: New password: Retype new password: passwd: password updated successfully
  • 修改 GRUB 配置文件: 打开 /etc/default/grub 文件,添加以下内容到 GRUB_CMDLINE_LINUX 行
代码语言:javascript
复制
net.ifnames=0 biosdevname=0

执行以下命令:

代码语言:javascript
复制
sed -ri.bak '/^GRUB_CMDLINE_LINUX=/s@"$@net.ifnames=0 biosdevname=0"@' /etc/default/grub

然后更新 GRUB 配置:

代码语言:javascript
复制
grub-mkconfig -o /boot/grub/grub.cfg

如果是 UEFI 引导系统,更新命令为:

代码语言:javascript
复制
# Ubuntu
grub-mkconfig -o /boot/efi/EFI/ubuntu/grub.cfg

# Debian
grub-mkconfig -o /boot/efi/EFI/debian/grub.cfg

# UEFI 引导系统可以直接执行下面命令:
EFI_DIR=`find /boot/efi/ -name "grub.cfg" | awk -F"/" '{print $5}'`
grub-mkconfig -o /boot/efi/EFI/${EFI_DIR}/grub.cfg
  • 修改网卡配置文件
代码语言:javascript
复制
# Ubuntu Server 24.04 LTS
ETHNAME=`ip addr | awk -F"[ :]" '/^2/{print $3}'`
sed -i.bak 's/'${ETHNAME}'/eth0/' /etc/netplan/50-cloud-init.yaml

# Ubuntu Server 22.04  LTS
ETHNAME=`ip addr | awk -F"[ :]" '/^2/{print $3}'`
touch /etc/cloud/cloud.cfg.d/99-disable-network-config.cfg
cat > /etc/cloud/cloud.cfg.d/99-disable-network-config.cfg <<-EOF
network: {config: disabled}
EOF
sed -i.bak 's/'${ETHNAME}'/eth0/' /etc/netplan/50-cloud-init.yaml

# Ubuntu Server 20.04 LTS
ETHNAME=`ip addr | awk -F"[ :]" '/^2/{print $3}'`
sed -i.bak 's/'${ETHNAME}'/eth0/' /etc/netplan/00-installer-config.yaml

# Ubuntu Server 18.04 LTS
ETHNAME=`ip addr | awk -F"[ :]" '/^2/{print $3}'`
sed -i.bak 's/'${ETHNAME}'/eth0/' /etc/netplan/01-netcfg.yaml

# Debian
ETHNAME=`ip addr | awk -F"[ :]" '/^2/{print $3}'`
sed -i.bak 's/'${ETHNAME}'/eth0/' /etc/network/interfaces
  • 重启系统
代码语言:javascript
复制
reboot

重启后,网卡名称将变为 eth0。

2.1.2 设置ip地址

代码语言:javascript
复制
1ETHNAME=`ip addr |awk -F"[ :]"'/^2/{print $3}'`
2
3# IP变量是ip地址,PREFIX变量是子网掩码位数;GATEWAY变量是网关地址;PRIMARY_DNS变量是主DNS,BACKUP_DNS变量是备用DNS,根据自己的需求修改。
4IP=172.31.0.10
5PREFIX=20
6GATEWAY=172.31.0.2
7PRIMARY_DNS=223.5.5.5
8BACKUP_DNS=180.76.76.76

Rocky Linux 9/10、Almalinux 9/10、CentOS Stream 9/10、AnolisOS 23、OpenCloudOS 9:

代码语言:javascript
复制
1cat> /etc/NetworkManager/system-connections/${ETHNAME}.nmconnection <<-EOF
2[connection]
3id=${ETHNAME}
4type=ethernet
5interface-name=${ETHNAME}
6
7[ipv4]
8address1=${IP}/${PREFIX},${GATEWAY}
9dns=${PRIMARY_DNS};${BACKUP_DNS};
10method=manual
11EOF

Rocky Linux 8、Almalinux 8、CentOS 7、CentOS Stream 8、openEuler 22.03和24.03 LTS、AnolisOS 8、OpenCloudOS 8、Kylin Server v10/v11、UOS Server v20:

代码语言:javascript
复制
1cat> /etc/sysconfig/network-scripts/ifcfg-${ETHNAME}<<-EOF
2NAME=${ETHNAME}
3DEVICE=${ETHNAME}
4ONBOOT=yes
5BOOTPROTO=none
6TYPE=Ethernet
7IPADDR=${IP}
8PREFIX=${PREFIX}
9GATEWAY=${GATEWAY}
10DNS1=${PRIMARY_DNS}
11DNS2=${BACKUP_DNS}
12EOF

Ubuntu:

代码语言:javascript
复制
1# Ubuntu Server 18.04 LTS
2cat> /etc/netplan/01-netcfg.yaml <<-EOF
3network:
4  version: 2
5  renderer: networkd
6  ethernets:
7${ETHNAME}:
8      dhcp4: no
9      dhcp6: no
10      addresses: [${IP}/${PREFIX}]
11      gateway4: ${GATEWAY}
12      nameservers:
13        addresses: [${PRIMARY_DNS}, ${BACKUP_DNS}]
14
15# Ubuntu Server 20.04 LTS
16cat> /etc/netplan/00-installer-config.yaml <<-EOF
17network:
18  version: 2
19  renderer: networkd
20  ethernets:
21${ETHNAME}:
22      dhcp4: no
23      dhcp6: no
24      addresses: [${IP}/${PREFIX}]
25      gateway4: ${GATEWAY}
26      nameservers:
27        addresses: [${PRIMARY_DNS}, ${BACKUP_DNS}]
28EOF
29
30# Ubuntu Server 22.04/24.04 LTS
31cat> /etc/netplan/50-cloud-init.yaml <<-EOF
32network:
33  version: 2
34  renderer: networkd
35  ethernets:
36${ETHNAME}:
37      dhcp4: no
38      dhcp6: no
39      addresses: [${IP}/${PREFIX}]
40      routes:
41        - to: default
42          via: ${GATEWAY}
43      nameservers:
44        addresses: [${PRIMARY_DNS}, ${BACKUP_DNS}]
45EOF

Debian:

代码语言:javascript
复制
1sed-ri-e"s/allow-hotplug/auto/g"-e"s/dhcp/static/g" /etc/network/interfaces
2sed-i'/static/a\address '${IP}'/'${PREFIX}'\ngateway '${GATEWAY}'\ndns-nameservers '${PRIMARY_DNS}' '${BACKUP_DNS}'\n' /etc/network/interfaces

openSUSE:

代码语言:javascript
复制
1cat> /etc/sysconfig/network/ifcfg-${ETHNAME}<<-EOF
2STARTMODE='auto'
3BOOTPROTO='static'
4IPADDR='${IP}/${PREFIX}'
5EOF
6touch /etc/sysconfig/network/routes
7cat> /etc/sysconfig/network/routes  <<-EOF
8default ${GATEWAY} - -
9EOF
10sed-ri's/(NETCONFIG_DNS_STATIC_SERVERS=).*/\1"'${PRIMARY_DNS}' '${BACKUP_DNS}'"/g' /etc/sysconfig/network/config

2.1.3 配置镜像源

Rocky:

代码语言:javascript
复制
1# 阿里云镜像站Rocky系统镜像源地址是:mirrors.aliyun.com/rockylinux,火山引擎镜像站Rocky系统镜像源地址是:mirrors.volces.com/rockylinux,后面地址是rockylinux,使用下面命令执行
2MIRROR=mirrors.aliyun.com
3sed-i.bak-e's|^mirrorlist=|#mirrorlist=|g'-e's|^#baseurl=http://dl.rockylinux.org/$contentdir|baseurl=https://'${MIRROR}'/rockylinux|g' /etc/yum.repos.d/[Rr]ocky*.repo
4
5# 搜狐镜像站Rocky系统镜像源地址是:mirrors.sohu.com/Rocky,后面地址是Rocky,使用下面命令执行
6MIRROR=mirrors.sohu.com
7sed-i.bak-e's|^mirrorlist=|#mirrorlist=|g'-e's|^#baseurl=http://'${OLD_MIRROR}'/$contentdir|baseurl=https://'${MIRROR}'/Rocky|g' /etc/yum.repos.d/[Rr]ocky*.repo
8
9# 其余镜像站Rocky系统镜像源地址后面地址都是rocky,使用下面命令执行
10MIRROR=mirrors.tencent.com
11sed-i.bak-e's|^mirrorlist=|#mirrorlist=|g'-e's|^#baseurl=http://dl.rockylinux.org/$contentdir|baseurl=https://'${MIRROR}'/rocky|g' /etc/yum.repos.d/[Rr]ocky*.repo
12
13dnf clean all && dnf makecache

Almalinux:

代码语言:javascript
复制
1MIRROR=mirrors.tencent.com
2OLD_MIRROR=$(sed-rn'/^.*baseurl=/s@.*=http.*://(.*)/(.*)/\$releasever/.*/$@\1@p' /etc/yum.repos.d/almalinux*.repo |head-1)
3sed-i.bak-e's|^mirrorlist=|#mirrorlist=|g'-e's|^# baseurl=https://'${OLD_MIRROR}'|baseurl=https://'${MIRROR}'|g' /etc/yum.repos.d/almalinux*.repo

CentOS Stream 9和10:

代码语言:javascript
复制
1cat update_mirror.pl
2#!/usr/bin/perl
3
4use strict;
5use warnings;
6use autodie;
7
8# 要修改镜像源,请去修改url变量!
9my $url='mirrors.aliyun.com';
10my $mirrors="https://$url/centos-stream";
11
12if(@ARGV <1){
13    die "Usage: $0...\n";
14}
15
16while(my $filename=shift @ARGV){
17    my $backup_filename=$filename.'.bak';
18rename$filename, $backup_filename;
19
20open my $input, "<", $backup_filename;
21open my $output, ">", $filename;
22
23while(<$input>){
24        s/^metalink/# metalink/;
25
26if(m/^name/){
27            my (undef, $repo, $arch)=split /-/;
28$repo=~ s/^\s+|\s+$//g;
29($arch= defined $arch ? lc($arch):'')=~ s/^\s+|\s+$//g;
30
31if($repo=~ /^Extras/){
32$_ .="baseurl=${mirrors}/SIGs/\$releasever-stream/extras".($arch eq 'source' ? "/${arch}/":"/\$basearch/")."extras-common\n";
33}else{
34$_ .="baseurl=${mirrors}/\$releasever-stream/$repo".($arch eq 'source' ? "/":"/\$basearch/").($arch ne '' ? "${arch}/tree/":"os")."\n";
35}
36}
37
38        print $output$_;
39}
40}
41
42rpm-q perl &> /dev/null ||{echo-e"\\033[01;31m "安装perl工具,请稍等..."\033[0m";yum -yinstall perl ;}
43
44perl ./update_mirror.pl /etc/yum.repos.d/centos*.repo
45
46dnf clean all && dnf makecache

CentOS Stream 8:

代码语言:javascript
复制
1MIRROR=mirrors.aliyun.com
2sed-i.bak-e's|^mirrorlist=|#mirrorlist=|g'-e's|^#baseurl=http://mirror.centos.org/$contentdir|baseurl=https://'${MIRROR}'/centos-vault|g' /etc/yum.repos.d/CentOS-*.repo
3
4dnf clean all && dnf makecache

CentOS 7:

代码语言:javascript
复制
1MIRROR=mirrors.aliyun.com
2OS_RELEASE_FULL_VERSION=`cat /etc/centos-release |sed-rn's/^(CentOS Linux release )(.*)( \(Core\))/\2/p'`
3sed-i.bak-e's|^mirrorlist=|#mirrorlist=|g'-e's|^#baseurl=http://mirror.centos.org/centos|baseurl=https://'${MIRROR}'/centos-vault|g'-e"s/\$releasever/${OS_RELEASE_FULL_VERSION}/g" /etc/yum.repos.d/CentOS-*.repo
4
5yum clean all && yum makecache

Ubuntu Server 24.04 LTS:

代码语言:javascript
复制
1MIRROR=mirrors.aliyun.com
2sed-ri"s@^(URIs: )(http.*://)(.*)(/ubuntu).?@\1https://${MIRROR}\4@g" /etc/apt/sources.list.d/ubuntu.sources
3
4apt update

Ubuntu Server 18.04/20.04/22.04 LTS:

代码语言:javascript
复制
1MIRROR=mirrors.aliyun.com
2OLD_MIRROR=`sed-rn"s@^deb http(.*)://(.*)/ubuntu/? $(lsb_release -cs) main.*@\2@p" /etc/apt/sources.list`
3SECURITY_MIRROR=`sed-rn"s@^deb http(.*)://(.*)/ubuntu.* $(lsb_release -cs)-security main.*@\2@p" /etc/apt/sources.list`
4sed-i.bak-e's@http.*://'${OLD_MIRROR}'@https://'${MIRROR}'@g'-e's@http.*://'${SECURITY_MIRROR}'@https://'${MIRROR}'@g' /etc/apt/sources.list
5
6apt update

Debian:

代码语言:javascript
复制
1MIRROR=mirrors.aliyun.com
2OLD_MIRROR=`sed-rn"s@^deb http(.*)://(.*)/debian/? $(lsb_release -cs) main.*@\2@p" /etc/apt/sources.list`
3SECURITY_MIRROR=`sed-rn"s@^deb http(.*)://(.*)/debian-security $(lsb_release -cs)-security main.*@\2@p" /etc/apt/sources.list`
4sed-ri.bak-e's/'${OLD_MIRROR}'/'${MIRROR}'/g'-e's/'${SECURITY_MIRROR}'/'${MIRROR}'/g'-e's/^(deb cdrom.*)/#\1/g' /etc/apt/sources.list
5
6apt update

openEuler:

代码语言:javascript
复制
1MIRROR=mirrors.aliyun.com
2OLD_MIRROR=$(awk -F'/''/^baseurl=/{print $3}' /etc/yum.repos.d/openEuler.repo |head-1)
3sed-i.bak-e's|^metalink=|#metalink=|g'-e's|http.*://'${OLD_MIRROR}'|https://'${MIRROR}'/openeuler|g' /etc/yum.repos.d/openEuler.repo
4
5dnf clean all && dnf makecache

AnolisOS:

代码语言:javascript
复制
1OLD_MIRROR=$(sed-rn'/^.*baseurl=/s@.*=http.*://(.*)/(.*)/\$releasever/.*/$@\1@p' /etc/yum.repos.d/AnolisOS*.repo |head-1)
2
3# 中国科学院软件研究所镜像站AnolisOS系统镜像源地址是:mirror.iscas.ac.cn/openanolis,后面地址是openanolis,使用下面命令执行
4MIRROR=mirror.iscas.ac.cn
5sed-i.bak-e's|http.*://'${OLD_MIRROR}'/anolis|https://'${MIRROR}'/openanolis|g' /etc/yum.repos.d/AnolisOS*.repo
6
7# 其余镜像站AnolisOS系统镜像源地址后面地址都是anolis,使用下面命令执行
8MIRROR=mirrors.aliyun.com
9sed-i.bak-e's|http.*://'${OLD_MIRROR}'/anolis|https://'${MIRROR}'/anolis|g' /etc/yum.repos.d/AnolisOS*.repo
10
11dnf clean all && dnf makecache

OpenCloudOS:

代码语言:javascript
复制
1MIRROR=mirrors.tencent.com
2OLD_MIRROR=$(awk -F'/''/^baseurl=/{print $3}' /etc/yum.repos.d/OpenCloudOS*.repo |head-1)
3sed-i.bak-e's|http.*://'${OLD_MIRROR}'|https://'${MIRROR}'|g' /etc/yum.repos.d/OpenCloudOS*.repo
4
5dnf clean all && dnf makecache

openSUSE:

代码语言:javascript
复制
1MIRROR=mirrors.aliyun.com
2OLD_MIRROR=$(awk -F'/''/^baseurl=/{print $3}' /etc/zypp/repos.d/repo-*.repo |head-1)
3sed-i.bak's|http.*://'${OLD_MIRROR}'|https://'${MIRROR}'/opensuse|g' /etc/zypp/repos.d/repo-*.repo
4
5zypper clean &&zypper refresh

2.1.4 关闭防火墙

代码语言:javascript
复制
1# Rocky、Almalinux、CentOS、openEuler、AnolisOS、OpenCloudOS、openSUSE、Kylin Server、UOS Server
2systemctl disable --now firewalld
3
4# CentOS 7还要执行下面命令
5systemctl disable --now NetworkManager
6
7# Ubuntu
8systemctl disable --now ufw
9
10# Debian默认没有安装防火墙,不用设置

2.1.5 禁用SELinux

代码语言:javascript
复制
1# Rocky、Almalinux、CentOS、openEuler、AnolisOS、OpenCloudOS、Kylin Server、UOS Server
2setenforce 0
3sed-i's#SELINUX=enforcing#SELINUX=disabled#g' /etc/selinux/config
4
5# Ubuntu、Debian和openSUSE默认没有安装SELinux,不用设置

2.1.6 禁用AppArmor

代码语言:javascript
复制
1# openSUSE发行版默认不启用SELinux,而是使用AppArmor来提供强制访问控制(MAC)功能,需要禁用AppArmor。
2systemctl disable --now apparmor

2.1.7 设置时区

代码语言:javascript
复制
1timedatectl set-timezone Asia/Shanghai
2echo'Asia/Shanghai'>/etc/timezone
3
4# Ubuntu还要设置下面内容
5cat>> /etc/default/locale <<-EOF
6LC_TIME=en_DK.UTF-8
7EOF

2.2 包安装

2.2.1 Yum资源库安装Httpd

在Rocky、Almalinux、CentOS、openEuler、AnolisOS、OpenCloudOS、Kylin Server、UOS Server上安装httpd:

代码语言:javascript
复制
1[root@rocky10 ~]# yum list httpd --showduplicates
2Last metadata expiration check: 0:00:56 ago on Tue 23 Sep 2025 04:03:20 PM CST.
3Available Packages
4httpd.x86_64                                     2.4.63-1.el10                                          appstream
5httpd.x86_64                                     2.4.63-1.el10_0.2                                      appstream
6
7[root@rocky10 ~]# yum install -y httpd
8
9[root@rocky10 ~]# systemctl daemon-reload && systemctl enable --now httpd
10
11[root@rocky10 ~]# ss -ntl |grep 80
12LISTEN 0511                *:80              *:*
13
14[root@rocky10 ~]# httpd -v
15Server version: Apache/2.4.63 (Rocky Linux)
16Server built:   Jul 152025 00:00:00

2.2.2 Apt资源库安装Apache2

在Ubuntu和Debian上安装apache2:

代码语言:javascript
复制
1root@ubuntu2404:~# apt-cache madison apache2
2   apache2 |2.4.58-1ubuntu8.8 | https://mirrors.aliyun.com/ubuntu noble-updates/main amd64 Packages
3   apache2 |2.4.58-1ubuntu8.8 | https://mirrors.aliyun.com/ubuntu noble-security/main amd64 Packages
4   apache2 |2.4.58-1ubuntu8 | https://mirrors.aliyun.com/ubuntu noble/main amd64 Packages
5
6root@ubuntu2404:~# apt install -y apache2
7
8root@ubuntu2404:~# systemctl daemon-reload && systemctl enable --now apache2
9
10root@ubuntu2404:~# ss -ntl |grep 80
11LISTEN 0511                *:80              *:*
12
13root@ubuntu2404:~# apache2 -v
14Server version: Apache/2.4.58 (Ubuntu)
15Server built:   2025-08-11T11:10:09

2.2.3 SUSE资源库安装Apache2

在openSUSE上安装apache2:

代码语言:javascript
复制
1opensuse15:~ # zypper search "apache2"
2Loading repository data...
3Reading installed packages...
4
5S | Name                                | Summary                                                    | Type
6--+-------------------------------------+------------------------------------------------------------+-----------
7| apache2                             | The Apache HTTPD Server                                    | package
8| apache2                             | The Apache HTTPD Server                                    | srcpackage
9| apache2-devel                       | The Apache HTTPD Server                                    | package
10| apache2-devel                       | The Apache HTTPD Server                                    | srcpackage
11| apache2-event                       | The Apache HTTPD Server                                    | package
12| apache2-event                       | The Apache HTTPD Server                                    | srcpackage
13| apache2-icons-oxygen                | Oxygen icons for Apache 2| package
14| apache2-manual                      | The Apache HTTPD Server                                    | package
15| apache2-manual                      | The Apache HTTPD Server                                    | srcpackage
16| apache2-mod_apparmor                | AppArmor module for apache2                                | package
17| apache2-mod_auth_gssapi             | GSSAPI Module for Apache                                   | package
18| apache2-mod_auth_kerb               | Kerberos Module for Apache                                 | package
19| apache2-mod_auth_mellon             | A SAML 2.0 authentication module for the Apache Server     | package
20| apache2-mod_auth_mellon-diagnostics | Build of mod_auth_mellon with diagnostic logging           | package
21| apache2-mod_auth_mellon-doc         | Documentation for mod_auth_mellon module                   | package
22| apache2-mod_auth_openidc            | Apache2.x module for an OpenID Connect enabled Identity ->| package
23| apache2-mod_auth_openidc            | Apache2.x module for an OpenID Connect enabled Identity ->| srcpackage
24| apache2-mod_authn_otp               | Apache module for one-time password authentication         | package
25| apache2-mod_dnssd                   | Apache2 module for Zeroconf support via DNS-SD             | package
26| apache2-mod_encoding                | Non-ASCII filename interoperability module for the Apach->| package
27| apache2-mod_evasive                 | Denial of Service evasion module for Apache                | package
28| apache2-mod_fcgid                   | Alternative FastCGI module for Apache2                     | package
29| apache2-mod_jk                      | Connectors between Apache and Tomcat Servlet Container     | package
30| apache2-mod_jk                      | Connectors between Apache and Tomcat Servlet Container     | srcpackage
31| apache2-mod_maxminddb               | MaxMind DB Apache Module                                   | package
32| apache2-mod_mono                    | Run ASP.NET Pages on Unix with Apache and Mono             | package
33| apache2-mod_nss                     | SSL/TLS module for the Apache HTTP server                  | package
34| apache2-mod_perl                    | Embedded Perl for Apache                                   | package
35| apache2-mod_perl-devel              | Embedded Perl for Apache - Development package             | package
36| apache2-mod_php7                    | PHP7 module for the Apache 2.x webserver                   | package
37| apache2-mod_php7                    | PHP7 module for the Apache 2.x webserver                   | srcpackage
38| apache2-mod_php8                    | PHP module for the Apache 2.x webserver                    | package
39| apache2-mod_php8                    | PHP module for the Apache 2.x webserver                    | srcpackage
40| apache2-mod_security2               | Web Application Firewall for apache httpd                  | package
41| apache2-mod_security2               | Web Application Firewall for apache httpd                  | srcpackage
42| apache2-mod_uwsgi                   | uWSGI Module for Apache 2.0| package
43| apache2-mod_wsgi                    | A WSGI interface for Python3 web applications in Apache    | package
44| apache2-mod_wsgi-python3            | A WSGI interface for Python3 web applications in Apache    | package
45| apache2-prefork                     | The Apache HTTPD Server                                    | package
46| apache2-prefork                     | The Apache HTTPD Server                                    | srcpackage
47| apache2-utils                       | The Apache HTTPD Server                                    | package
48| apache2-utils                       | The Apache HTTPD Server                                    | srcpackage
49| apache2-worker                      | The Apache HTTPD Server                                    | package
50| apache2-worker                      | The Apache HTTPD Server                                    | srcpackage
51| dehydrated-apache2                  | Apache Integration for dehydrated                          | package
52| owasp-modsecurity-crs-apache2       | OWASP ModSecurity Common Rule Set (CRS)| package
53| perl-Apache2-AuthCookieDBI          | An AuthCookie module backed by a DBI database              | package
54| rubygem-passenger-apache2           | Passenger apache module                                    | package
55
56opensuse15:~ # zypper info apache2
57Loading repository data...
58Reading installed packages...
59
60
61Information for package apache2:
62--------------------------------
63Repository     : Update repository with updates from SUSE Linux Enterprise 15
64Name           : apache2
65Version        :2.4.58-150600.5.35.1
66Arch           : x86_64
67Vendor         : SUSE LLC <https://www.suse.com/>
68Installed Size :1.4 MiB
69Installed      : No
70Status         : not installed
71Source package : apache2-2.4.58-150600.5.35.1.src
72Upstream URL   : https://httpd.apache.org/
73Summary        : The Apache HTTPD Server
74Description    :
75    The Apache HTTP Server Project is an effort to develop and
76    maintain an open-source HTTP server for modern operating
77    systems including UNIX and Windows. The goal of this project
78    is to provide a secure, efficient and extensible server that
79    provides HTTP services insync with the current HTTP standards.
80
81opensuse15:~ # zypper install -y apache2
82
83opensuse15:~ # systemctl daemon-reload && systemctl enable --now apache2
84
85opensuse15:~ # ss -ntl |grep 80
86LISTEN 04096               *:80              *:*
87
88opensuse15:~ # httpd -v
89Server version: Apache/2.4.58 (Linux/SUSE)
90Server built:   2025-07-21 02:11:38.000000000 +0000

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • Apache介绍和安装
  • 1.Apache介绍
  • 2.Apache安装
    • 2.1 主机初始化
      • 2.1.1 设置网卡名
      • 2.1.2 设置ip地址
      • 2.1.3 配置镜像源
      • 2.1.4 关闭防火墙
      • 2.1.5 禁用SELinux
      • 2.1.6 禁用AppArmor
      • 2.1.7 设置时区
    • 2.2 包安装
      • 2.2.1 Yum资源库安装Httpd
      • 2.2.2 Apt资源库安装Apache2
      • 2.2.3 SUSE资源库安装Apache2
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档