Apache介绍和安装
1.Apache介绍t1Apache一般指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:
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:
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.nmconnectionRocky 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:
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:
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-eth0Ubuntu和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.76Rocky 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
11EOFRocky 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}
12EOFUbuntu:
代码语言: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}]
45EOFDebian:
代码语言: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/interfacesopenSUSE:
代码语言: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/config2.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 makecacheAlmalinux:
代码语言: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*.repoCentOS 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 makecacheCentOS 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 makecacheCentOS 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 makecacheUbuntu 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 updateUbuntu 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 updateDebian:
代码语言: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 updateopenEuler:
代码语言: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 makecacheAnolisOS:
代码语言: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 makecacheOpenCloudOS:
代码语言: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 makecacheopenSUSE:
代码语言: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 refresh2.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 apparmor2.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
7EOF2.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:002.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:092.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
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