源码安装apache
相关依赖
gcc、 gcc-c++ | c语言编译环境 |
---|---|
openssl-deve | 提供网站证书服务 |
pcre-devel | 是一个Perl库,包括 perl兼容的正则表达式库解决C语言中使用正则表达式的问题 |
expat-devel | 解析XML文档的开发库 |
libtool | 库文件 |
apr | 早期为了兼容各系统,提供一个统一操作的函数接口,包含了一些通用的开发组件 |
apr-utils | 包含了一些常用的开发组件。这些组件与apr目录下的相比,它们与apache的关系更加密切一些。比如存储段和存储段组,加密等等 |
实验思路
- 先安装gcc ,gcc++ 环境
- 安装openssl-devel pcre-devel expat-devel libtool
- 安装apr 和apr-utils
- 安装apache
- 编写环境变量
- 启动服务
- 关闭防火墙
实验流程
- 第一步:安装gcc ,gcc-c++
[root@cloud1 ~]# yum install -y gcc gcc-c++
- 第二步:安装openssl-devel pcre-devel expat-devel libtool
[root@cloud1 ~]# yum install -y openssl-devel pcre-devel expat-devel libtool
- 第三步:安装apr和apr-utils
- 下载地址:http://archive.apache.org/dist/apr/
#用xftp传到/opt
[root@cloud1 opt]# ls
apr-1.6.3.tar.gz apr-util-1.6.1.tar.gz
[root@cloud1 opt]# tar -xf apr-1.6.3.tar.gz
[root@cloud1 opt]# tar -xf apr-util-1.6.1.tar.gz
[root@cloud1 opt]# cd apr-1.6.3/
[root@cloud1 apr-1.6.3]# vim configure
30976 #$RM "$cfgfile" #在30976行添加注释
[root@cloud1 apr-1.6.3]# ./configure --prefix=/usr/local/apr
[root@cloud1 apr-1.6.3]# make && make install
[root@cloud1 apr-1.6.3]# cd /opt/apr-util-1.6.1/
[root@cloud1 apr-util-1.6.1]# ./configure --prefix=/usr/local/apr-util --with-apr=/usr/local/apr
[root@cloud1 apr-util-1.6.1]# make & make install
- 第四步:安装apache
- 下载地址:http://httpd.apache.org/download.cgi
#xftp传到/opt
[root@cloud1 opt]# tar xf httpd-2.4.46.tar.gz
[root@cloud1 opt]# cd httpd-2.4.46/
[root@cloud1 httpd-2.4.46]# ./configure --prefix=/usr/local/apache \
--sysconfdir=/etc/httpd24 \
--enable-so \
--enable-ssl \
--enable-cgi \
--enable-rewrite \
--with-zlib \
--with-pcre \
--with-apr=/usr/local/apr \
--with-apr-util=/usr/local/apr-util/ \
--enable-modules=most \
--enable-mpms-shared=all \
--with-mpm=prefork
[root@cloud1 httpd-2.4.46]# make && make install
- 编写环境变量
[root@z1 yum.repos.d]# echo 'export PATH=/usr/local/apache/bin/:$PATH' > /etc/profile.d/apache.sh
[root@z1 yum.repos.d]# source /etc/profile.d/apache.sh
- 启动服务
[root@z1 httpd-2.4.46]# apachectl start
AH00558: httpd: Could not reliably determine the server's fully qualified domain name, using fe80::20c:29ff:fec4:1136. Set the 'ServerName' directive globally to suppress this message
-
编辑.server文件实现systemctl控制
.server文件分为三部分
-
[Unit]:部分主要是对这个服务的说明
-
Description 用于描述服务 After 描述服务启动依赖 -
[Service]:是服务的一些具体运行参数的设置
-
Type=forking 后台运行的形式 PIDFile 存放PID的文件路径 ExecStart 服务的运行命令路径(绝对路径) ExecReload 服务的重启命令路径(绝对路径) ExecStop 服务的停止命令路径(绝对路径) -
[Install]:是服务安装的相关设置,可设置为多用户等
-
[root@cloud1 ~]vim /usr/lib/systemd/system/httpd.server
[Unit] #区块:启动顺序与依赖关系
Description=httpd #当前配置文件的描述信息
After=network.target #表示当前服务是在那个服务后面启动,一般定义为网络服务启动后启动
[Service] #区块:启动行为
Type=forking #定义启动类型
ExecStart=/usr/local/apache/bin/apachectl start #定义启动进程时执行的命令。
ExecReload=/usr/local/apache/bin/apachectl restart #重启服务时执行的命令
ExecStop=/usr/local/apache/bin/apachectl stop #定义关闭进程时执行的命令。
PrivateTmp=true #是否分配独立空间
[Install]
WantedBy=multi-user.target
[root@z1 ~]# systemctl start httpd.service
[root@z1 ~]# ss -antl
State Recv-Q Send-Q Local Address:Port Peer Address:Port Process
LISTEN 0 128 0.0.0.0:111 0.0.0.0:*
LISTEN 0 32 192.168.122.1:53 0.0.0.0:*
LISTEN 0 128 0.0.0.0:22 0.0.0.0:*
LISTEN 0 5 127.0.0.1:631 0.0.0.0:*
LISTEN 0 100 127.0.0.1:25 0.0.0.0:*
LISTEN 0 128 *:9000 *:*
LISTEN 0 80 *:3306 *:*
LISTEN 0 128 [::]:111 [::]:*
LISTEN 0 128 *:80 *:*
LISTEN 0 128 [::]:22 [::]:*
LISTEN 0 5 [::1]:631 [::]:*
LISTEN 0 100 [::1]:25 [::]:*
- 第六步:关闭防火墙和selinux
[root@cloud1 ~]# setenforce 0
[root@cloud1 ~]# systemctl stop firewalld
代理
- 正向代理
- 有点类似于科学上网
- 工作流程:client 把请求数据发往proxy服务器 ,代理服务器则向服务器请求数据,然后发给client
- 特点:服务器不知道client的真实地址
- 反向代理
- 和正向代理相反
- 工作流程:client 把请求数据发往proxy服务器 ,代理服务器则向服务器请求数据,但此时该服务器下有多台服务器提供服务,但对外表示为一台。心跳服务器根据相应算法,挑选一台服务器为client提供服务
- 特点:client不知道server的真实服务器
- 透明代理
假设A为内部网络客户机,B为外部网络服务器,C为防火墙。当A对B有连接请求时,TCP连接请求被防火墙截取并加以监控。截取后当发现连接需要使用代理服务器时,A和C之间首先建立连接,然后防火墙建立相应的代理服务通道与目标B建立连接,由此通过代理服务器建立A 和目标地址B的数据传输途径。从用户的角度看,A和B的连接是直接的,而实际上A 是通过代理服务器C和B建立连接的。反之,当B对A有连接请求时原理相同。由于这些连接过程是自动的,不需要客户端手工配置代理服务器,甚至用户根本不知道代理服务器的存在,因而对用户来说是透明的