Apache部署
Apache HTTP Server是Apache软件基金会的一个开放源代码的网页服务器,可以在大多数计算机操作系统中运行,由于其跨平台和安全性。被广泛使用,是最流行的Web服务器端软件之一。它快速、可靠并且可通过简单的API扩充,将Perl/Python等解释器编译到服务器中。
源码编译安装
openEuler系统
系统版本
此案例基于openLuer-24.03 (LTS)版本
cat /etc/os-release获取源码
wget https://archive.apache.org/dist/httpd/httpd-2.4.54.tar.gz
wget https://dlcdn.apache.org/apr/apr-1.7.5.tar.g
wget https://dlcdn.apache.org/apr/apr-util-1.6.3.tar.gz安装支持程序
dnf install -y gcc gcc-c++ make zlib-devel pcre-devel expat-devel libtool openssl-devel解压安装包到指定路径
tar xf httpd-2.4.54.tar.gz -C /usr/src/
tar xf apr-1.7.5.tar.gz -C /usr/src
tar xf apr-util-1.6.3.tar.gz -C /usr/src
## 将apr和apr-util 移动到/httpd-2.4.54/srclib/下
mv /usr/src/apr-1.7.5/ /usr/src/httpd-2.4.54/srclib/apr
mv /usr/src/apr-util-1.6.3/ /usr/src/httpd-2.4.54/srclib/apr-util进行预配置
# 执行完预配置后,立刻执行echo $? 结果必须是0才表明上一步操作没有问题
./configure --prefix=/usr/local/apache编译
# 如果编译失败可使用make clean清除编译缓存
# 使用-j参数同时运行多个编译任务,$(nproc)可以识别计算机核心数如:make -j$(nproc)
make
# 检测是否编译成功
echo $?安装
make install
# 检测是否编译成功
echo $?Centos系统
和openEuler系统一样
Ubuntu系统
系统版本
此案例为Ubuntu-20.04.2 LTS (Focal Fossa)版本
cat /etc/os-release获取源码
wget https://archive.apache.org/dist/httpd/httpd-2.4.54.tar.gz
wget https://dlcdn.apache.org/apr/apr-1.7.5.tar.g
wget https://dlcdn.apache.org/apr/apr-util-1.6.3.tar.gz安装支持程序
apt update -y
apt install build-essential libpcre3 libpcre3-dev libssl-dev libexpat1-dev libapr1-dev libaprutil1-dev -y解压安装包到指定路径
tar xf httpd-2.4.54.tar.gz -C /usr/src/
tar xf apr-1.7.5.tar.gz -C /usr/src
tar xf apr-util-1.6.3.tar.gz -C /usr/src
## 将apr和apr-util 移动到/httpd-2.4.54/srclib/下
mv /usr/src/apr-1.7.5/ /usr/src/httpd-2.4.54/srclib/apr
mv /usr/src/apr-util-1.6.3/ /usr/src/httpd-2.4.54/srclib/apr-util进行预配置
# 执行完预配置后,立刻执行echo $? 结果必须是0才表明上一步操作没有问题
./configure --prefix=/usr/local/apache编译
# 如果编译失败可使用make clean清除编译缓存
# 使用-j参数同时运行多个编译任务,$(nproc)可以识别计算机核心数如:make -j$(nproc)
make
# 检测是否编译成功
echo $?安装
make install
# 检测是否编译成功
echo $?配置
安装后的路径为/usr/local/apache,是由预配置时--prefix设定的
修改配置文件
备份配置文件
cd /usr/loacl/apache/conf && mkdir bak
cp ./httpd.conf bak/httpd-$(date +%F).conf
# vim打开文件搜索ServerName将195的注释取消,
#ServerName www.example.com:80httpd.conf详解
全局环境配置
全局环境配置部分主要设置一些全局性的参数,这些参数对整个 Apache 服务器实例起作用。
ServerRoot "/etc/httpd"
PidFile run/httpd.pid
Timeout 60- ServerRoot: 指定 Apache 的根目录,通常包含配置文件、日志文件等。
- PidFile: 指定存储 Apache 主进程 ID(PID)的文件位置。
- Timeout: 设置服务器等待请求完成的时间,单位为秒。
核心服务器配置
这些指令控制服务器的一些基本特性,如模块加载、用户权限等。
LoadModule authz_core_module modules/mod_authz_core.so
User apache
Group apache- LoadModule: 加载指定的模块,使其在服务器中可用。
- User 和 Group: 指定运行 Apache 进程的用户和用户组。
日志配置
日志配置部分定义了错误日志和访问日志的记录方式和位置。
ErrorLog "logs/error_log"
LogLevel warn
LogFormat "%h %l %u %t \"%r\" %>s %b" common
CustomLog "logs/access_log" common- ErrorLog: 指定错误日志文件的位置。
- LogLevel: 设置日志记录的详细程度。
- LogFormat: 定义日志格式。
- CustomLog: 指定访问日志文件的位置及使用的日志格式。
主机配置
主机配置部分可以包含多个虚拟主机的配置,每个虚拟主机都是一个独立的网站。
<VirtualHost *:80>
ServerAdmin webmaster@example.com
DocumentRoot "/var/www/html/example"
ServerName example.com
ErrorLog "logs/example-error_log"
CustomLog "logs/example-access_log" common
</VirtualHost>- : 定义一个虚拟主机。
- ServerAdmin: 指定管理员的电子邮件地址。
- DocumentRoot: 指定网站的根目录。
- ServerName: 指定虚拟主机的域名。
- ErrorLog 和 CustomLog: 定义虚拟主机的日志文件。
目录配置
目录配置部分定义了如何处理特定目录中的请求,可以设置访问权限、索引文件等。
<Directory "/var/www/html">
Options Indexes FollowSymLinks
AllowOverride None
Require all granted
</Directory>: 定义对特定目录的设置。
Options: 设置目录的选项,如是否允许目录浏览(Indexes),是否跟随符号链接(FollowSymLinks)等。
AllowOverride: 指定是否允许 .htaccess 文件覆盖配置。
Require: 设置访问权限。
模块配置
模块配置部分用于配置特定模块的行为,例如 SSL 模块、代理模块等。
<IfModule ssl_module>
Listen 443
SSLCertificateFile "/etc/pki/tls/certs/localhost.crt"
SSLCertificateKeyFile "/etc/pki/tls/private/localhost.key"
</IfModule>
<IfModule mod_proxy.c>
ProxyRequests Off
<Proxy *>
Order deny,allow
Allow from all
</Proxy>
ProxyPass /example http://backend_server:8080/example
ProxyPassReverse /example http://backend_server:8080/example
</IfModule>: 条件性地包含模块配置,当模块被加载时才应用这些配置。
SSLCertificateFile 和 SSLCertificateKeyFile: 定义 SSL 证书和密钥文件的位置。
ProxyRequests, ProxyPass, ProxyPassReverse: 配置代理服务器的相关设置。
文件包含
可以包含其他配置文件,以组织和管理配置。
Include conf.modules.d/*.conf
IncludeOptional sites-enabled/*.conf- Include: 包含指定路径下的配置文件。
- IncludeOptional: 可选地包含配置文件,如果文件不存在不会报错。
启动
/usr/local/apache/bin/apachectl startsystemctl 命令启动
创建服务用户
useradd -Ms /sbin/nologin www修改服务目录为程序用户
chown www:www -R /usr/local/apache修改httpd.conf程序用户
sed -i 's/User daemon/User www/;s/Group daemon/Group www/' /usr/local/apache/conf/httpd.conf编辑.service
cat > /usr/lib/systemd/system/httpd.service << EOF
[Unit]
Description=The Apache HTTP Server
After=network.target remote-fs.target nss-lookup.target
[Service]
Type=forking
EnvironmentFile=/usr/local/apache/conf/httpd.conf
ExecStart=/usr/local/apache/bin/apachectl
ExecReload=/usr/local/apache/bin/apachectl graceful
ExecStop=/usr/local/apache/bin/apachectl stop
Restart=on-failure
RestartSec=5s
[Install]
WantedBy=multi-user.target
EOF重新加载unit文件
systemctl daemon-reload设置开机自动启动
systemctl enable httpd启动apache
systemctl start httpd停止apache
systemctl stop httpd服务检测
# 查看进程
ps aux | grep "httpd"关闭防火墙
# 关闭防火墙
systemctl stop firewalld
# 永久关闭
systemctl disable firewalld