Apache服务

实验环境:需要一台全新的虚拟机,将IP地址改成真机IP+100并配置yum源
1.Apache服务:APACHE是WEB服务器软件,功能是让别的电脑在浏览器上输入它的地址时,它能把相应的网页文件、媒体文件发送给浏览器。PHP是PHP程序设计语言的解释程序,用来执行用PHP语言写的程序,PHP的程序可以在命令行执行完成数据库备份、同步、归并等功能,不过多数情况下的PHP程序都是接收浏览器发来的命令、生成浏览器可以查看的文本,用来做网页使用。但是做网页时,PHP是被APACHE调用的。

2.Apache的两种工作模式:
1.什么是MPM
MPM(Multi-Processing Modules,多路处理模块)是Apache的核心组件之一,Apache通过MPM来使用操作系统的资源,对进程和线程池进行管理。Apache为了 能够获得更好的运行性能,针对不同的平台 (Unix/Linux、Window)提供了不同的MPM,用户可以根据实际情况进行选择,其中最常使用的MPM有 prefork和worker两种。
2.Prefork
工作原理:Prefork是非线程、预生成进程型MPM,会预先启动一些子进程,每个子进程一个时间只能处理一个请求,并且会根据并发请求数量动态生成更多子进程。
配置参数:

StartServices    服务器启动默认启动的子进程;

MinSpareServers    最小空闲进程数量;

MaxSpareServers    最大空闲进程数量;

MaxClients     最高的并发量;

ServerLimit    最大限制的并发量;

MaxRequestsPerChild      每个子进程默认最多处理多少个请求。当达到设定值时,这个进程就会被kill掉,重新生成一个新的进程(避免内存泄露等安全性问题,运行太久怕出一些bug,可能出现假死,或者占用太多内存等);

3.worker
Workder是线程化、多进程的MPM,每个进程可以生成多个线程,每个线程处理一个请求;不需要启用太多的子进程,每个进程能够拥有的 线程数量是固定的。服务器会根据负载情况增加或减少进程数量。一个单独的控制进程(父进程)负责子进程的建立。每个子进程能够建立 ThreadsPerChild数量的服务线程和一个监听线程,该监听线程监听接入请求并将其传递给服务线程处理和应答。
配置参数:

StartServers 服务器启动时建立的子进程数,默认值是"3"。

MaxClients  允许同时服务的最大接入请求数量(最大线程数量)。任何超过MaxClients限制的请求都将进入等候队列,默认值是"400"。

MinSpareThreads 最小空闲线程数,默认值是"75"。

MaxSpareThreads  设置最大空闲线程数。默认值是"250"。

ThreadsPerChild  每个子进程建立的常驻的执行线程数。默认值是25

MaxRequestsPerChild  设置每个子进程在其生存期内允许处理的最大请求数量。

4.Prefork和Worker的比较

  1. prefork方式速度要稍高于worker,然而它需要的cpu和memory资源也稍多于woker。

  2. prefork的无线程设计在某些情况下将比worker更有优势:它可以使用那些没有处理好线程安全的第三方模块,并且对于那些线程调试困难的平台而言,它也更容易调试一些。
  3. 在一个高流量的HTTP服务器上,Worker MPM是个比较好的选择,因为Worker MPM的内存使用比Prefork MPM要低得多。


3.常用的Apache模块(十个常用的)

1、单点登录模块 LemonLDAP
LemonLdap可以很棒地实现Apache的SSO功能,并且可以处理超过 20 万的用户请求。LemonLdap支持Java, PHP, .Net, Perl, Ruby, Python等Web开发技术,也就是说,只要你将WEB应用部署到Apache上,你就可以使用LemonLdap实现单点登录功能。

2、并发限制模块 limitipconn
limitipconn 是一个 Apache 的模块,用来限制每个 IP 的并发连接数。支持 Apache 1.x 和 2.x。
3、日志监控模块 Apache Live Log
Apache Live Log 是一个用Perl开发的在浏览器通过Ajax技术对Apache 日志文件进行实时监控的Apache模块。它可以根据IP地址分组显示最近的访问者。
4、负载均衡模块 mod_backhand
mod_backhand 是一个Apache 的负载均衡模块 。每一个请求都会重定向到一个Apache服务器集群中,并利用一套“候选人算法”来选择最适合的服务器,然后将请求重定向至该服务器。
5、图像处理模块 mod_gfx
mod_gfx是一个Apache的图像处理模块,它有一系列灵活可扩展的接口,并且可以非常方便地植入到自己的网站中,目前支持以下功能:1.改变图片大小 2.重新取样 3.加水印 4.图片裁剪 4.添加文本 5.翻转图片 6.绘制多边形
6、压缩模块 mod-gzip-disk
mod-gzip-disk 是一个用来对磁盘中存放的页面进行预压缩的Apache模块,和 mod-gzip 不同的是它每次请求都要重新压缩一次。

使用方法:

gunzip -c mod_gzip_disk-0.5.tar.gz | tar -xvpf -
cd mod_gzip_disk
sudo make module

 7、音乐模块 mod_musicindex
mod_musicindex 是一个 Apache 的模块,其功能类似 Perl 模块的 Apache::MP3,可友好的现实包含 MP3, Ogg Vorbis, FLAC, or MP4/AAC 文件的目录,并进行各种字段的排序,下载和在线播放,构建播放列表和进行搜索,同时提供RSS输出和Podcast种子,支持多个CSS和打包下载。
8、LDAP认证模块 mod_psldap
LDAP是轻量目录访问协议,它是基于X.500标准的,但是简单多了并且可以根据需要定制。mod_psldap是一个Apache模块,它执行一个 LDAP反对使用管理认证和授权过程几种不同的手段服务器认证授权。这个实现也可以通过Web界面管理记录,并验证对一个LDAP服务器,限制从阅读的密 码和基于Kerberos的身份验证实现连接到LDAP服务器本身的用户。
9、带宽限制模块 mod_cband
mod_cband 是一个用来限制请求占用带宽的 Apache 模块,可以在一定程度上控制服务器的流量。
10、V8引擎的CGI封装 v8cgi
v8cgi 是一个小型的 C++ 和 JS 文件的集合,允许开发者在服务器端使用 JS 语言,基本的功能包括 IO、GD、MySQL、Sockets、模板、FastCGI和 Apache 模块。

4.Apache与tomact的不同。
1.Apache是web服务器,Tomcat是应用(java)服务器,它只是一个servlet容器,是Apache的扩展。
2. Apache和Tomcat都可以做为独立的web服务器来运行,但是Apache不能解释java程序(jsp,serverlet)。
3. Apache是普通服务器,本身只支持html即普通网页。不过可以通过插件支持php,还可以与Tomcat连通(单向Apache连接Tomcat,就是说通过Apache可以访问Tomcat资源。反之不然)
4. 两者都是一种容器,只不过发布的东西不同:Apache是html容器,功能像IIS一样;Tomcat是jsp/servlet容器,用于发布jsp及java的,类似的有IBM的webshere、EBA的Weblogic,sun的JRun等等。
5. Apache和Tomcat是独立的,在通一台服务器上可以集成。
打个比方:Apache是一辆卡车,上面可以装一些东西如html等。但是不能装水,要装水必须要有容器(桶),Tomcat就是一个桶(装像Java这样的水),而这个桶也可以不放在卡车上。
Apache只支持静态网页,但像asp,php,cgi,jsp等动态网页就需要Tomcat来处理。
Apache和Tomcat整合使用:如果客户端请求的是静态页面,则只需要Apache服务器响应请求;如果客户端请求动态页面,则是Tomcat服务器响应请求;因为jsp是服务器端解释代码的,这样整合就可以减少Tomcat的服务开销 。


Apache的安装和测试

yum install -y httpd httpd-manual    ##安装httpd服务和使用手册
systemctl start httpd                ##启动服务
systemctl enable httpd.service       ##开机自启
ss -antlupe |grep httpd              ##查看httpd的端口号
firewall-cmd --list-all              ##列出火墙信息
firewall-cmd --permanent --add-service=http ##永久允许http服务
firewall-cmd --reload           ##火墙重新加载策略
 /var/www/html/                      ##apache的/目录,默认发布目录
vim /var/www/html/index.html         ##默认发布文件编辑
<h1>your first  apache</h1>

测试: http://172.25.8.10/    和  http://172.25.8.10/manual/

HTTP服务信息

http://172.25.254.117/maunal
主配置文件: /etc/httpd/conf/httpd.confyum 
子配置目录:/etc/httpd/conf.d
子配置文件:/etc/httpd/conf.d/*.conf
默认发布目录:/var/www/html
默认发布文件:index.html
默认端口:80
默认安全上下文:httpd_sys_content_t
程序开启默认用户:apache
apache日志:   /etc/httpd/logs/*
如果开启了selinux需要修改安全上下文为httpd_sys_content_t

默认发布文件修改

vim /etc/httpd/conf/httpd.conf          ##编辑主配置文件
163 <IfModule dir_module>
164     DirectoryIndex index index.html ##可多个 按顺序依次进行读写
165 </IfModule>
systemctl restart httpd
vim /var/www/html/index                ##里面写内容就好
<h1>change sucess</h1>

测试: http://172.25.8.10/


默认发布目录的修改

mkdir -p /apache/westos
vim /apache/westos/index.html       ##显示hello westos
<h1> hello westos</h1>
vim /etc/httpd/conf/httpd.conf      ##编辑主配置文件
119 #DocumentRoot "/var/www/html"
120 DocumentRoot "/apache/westos"
121 
122 #
123 # Relax access to content within /var/www.
124 #
125 <Directory "/apache/westos">
126     #AllowOverride None
127     # Allow open access:
128     Require all granted         ##允许所有对于/apache/westos目录
129 </Directory> 
systemctl restart httpd


###测试  http://172.25.8.10/

 

修改默认端口为8080(原默认端口80)

vim /etc/httpd/conf/httpd.conf
 42 Listen 8080            ##更改端口为8080
systemctl restart httpd    ##重启服务
firewall-cmd --permanent --add-port=8080/tcp   ##需要在防火墙中添加修改的端口号
firewall-cmd --reload      ##重新加载防火墙策略
netstat -antlp |grep httpd ##查看httpd端口
ss -antlupe|grep httpd     ##查看htpd端口


##实验效果 http://172.25.8.10:8080/


Apache访问控制

###先将刚才更改的端口改成80  将默认发布目录也改回默认
mkdir /var/www/html/admin         ##建立一个目录进行访问控制
vim /etc/httpd/conf/httpd.conf
 42 Listen 80                   
119 DocumentRoot "/var/www/html"
120 #DocumentRoot "/apache/westos"
121 <Directory "/var/www/html/admin"> ##对admin目录进行访问控制
122         Require all granted
123         Order Deny,Allow          ##用户读取顺序 后读的会覆盖先读的
124         Allow from 172.25.8.100   ##先读Deny后面Allow会覆盖  只允许100访问
125         Deny from All
126 </Directory>
127 #
128 # Relax access to content within /var/www.
129 #
130 <Directory "/var/www">
131     AllowOverride None
132     # Allow open access:
133     Require all granted
134 </Directory>
systemctl restart httpd

##

###测试   http://172.25.8.10/admin 无法访问         http://172.25.8.10/  可以正常访问

针对用户的访问控制

 

 

htpasswd -cm /etc/httpd/webuser westos   ##存在webuser文件时建立访问用户不要参数c
vim /etc/httpd/conf/httpd.conf
119 DocumentRoot "/var/www/html"
120 #DocumentRoot "/apache/westos"
121 <Directory "/var/www/html/westos">
122 #       Require all granted
123         AuthUserfile /etc/httpd/webuser
124         AuthName "please enter username and passwd"
125         AuthType basic
126 #       Require user westos ##下面的方法与这个相同选一个即可
127         Require valid-user
128 #       Order Deny,Allow
129 #       Allow from 172.25.8.100
130 #       Deny from All
131 </Directory>
systemctl restart httpd.service 
mkdir /var/www/html/westos
vim /var/www/html/westos/aa
<h1>hello  world world </h1>

 

##测试   http://172.25.8.10/westos/aa  输入刚才创建的用户和密码 进入


生成不同的访问界面

 

在浏览器所在主机上添加解析
vim /etc/hosts
172.25.8.10 www.westos.com news.westos.com music.westos.com

在服务端上添加配置
cd /etc/httpd/conf.d/
vim a_default.conf
<VirtualHost _default_:80>
        DocumentRoot /var/www/html   
        CustomLog logs/default.log combined  ##所有的日志都放在这里/etc/httpd
</VirtualHost>
vim news.conf         ##
<VirtualHost *:80>
        ServerName news.westos.com
        DocumentRoot /var/www/virtual/news.westos.com/html
        CustomLog logs/news.log combined
</VirtualHost>
<Directory "/var/www/virtual/news.westos.com/html">
        Require all granted
</Directory>
vim music.conf       ##
<VirtualHost *:80>
        ServerName music.westos.com
        DocumentRoot /var/www/virtual/music.westos.com/html
        CustomLog logs/music.log combined
</VirtualHost>
<Directory "/var/www/virtual/music.westos.com/html">
        Require all granted
</Directory>
mkdir /var/www/virtual/news.westos.com/html -p
mkdir /var/www/virtual/music.westos.com/html -p
vim /var/www/virtual/news.westos.com/html/index.html
<h1>news.westos.com</h1>
vim /var/www/virtual/music.westos.com/html/index.html
<h1>music.westos.com</h1>
systemctl restart httpd.service   





##测试  依次访问  http://www.westos.com/     http://news.westos.com/     http://music.westos.com/

 


PHP服务

 

安装并测试PHP服务
yum install -y php
cd /var/www/html/
vim info.php
<?php
        phpinfo();
?>
systemctl restart httpd.servic

测试:访问  http://172.25.8.10/info.php

CGI格式动态显示
 

mkdir /var/www/html/cgi
vim /var/www/html/cgi/index.cgi
#!/usr/bin/perl
print "Content-type: text/html\n\n";
print `date`;
cd /var/www/html/cgi
./index.cgi     ###检测代码是否有问题
vim /etc/httpd/conf.d/a_default.conf
<VirtualHost _default_:80>
        DocumentRoot /var/www/html
        CustomLog logs/default.log combined
</VirtualHost>
<Directory "/var/www/html/cgi">
        Options +ExecCGI
        AddHandler cgi-script .cgi
</Directory>
systemctl restart httpd

###检测  浏览器访问  http://172.25.8.10/cgi/index.cgi


HTTPS服务

 

yum install -y  mod_ssl
systemctl restart httpd
firewall-cmd --list-all         ##列出火墙信息
firewall-cmd --permanent --add-service=https    ##永久允许https服务
firewall-cmd --reload           ##火墙重新加载策略


如果想要修改关于安全证书的信息:

yum install -y crypto-utils.x86_64
genkey www.westos.com   ##进入界面中选择并安装证书



如果在下面这个界面卡住不动请晃动鼠标或者输入字符 因为它是通过获取随机字符来生成证书和钥匙

是否将证书发送给CA组织认证 企业认证都是收费的 我们选择NO

这里不要勾选Encrypt the private key,不然无法设置自启动

填写证书信息

将这些key复制到/etc/httpd/conf.d/ssl.conf对应的位置

vim /etc/httpd/conf.d/ssl.conf 
systemctl restart httpd.service 

查看加密是否成功   可以发现已经变成我们所修改的信息   点及图片左下角进行下一步


HTTPS虚拟主机设定及网页重写
 

mkdir /var/www/virtual/login.westos.com/html -p
vim /var/www/virtual/login.westos.com/html/index.html
<h1>login.westos.com</h1>
vim /etc/httpd/conf.d/login.conf
<VirtualHost *:443>
           ServerName login.westos.com
           DocumentRoot /var/www/virtual/login.westos.com/html
           CustomLog  logs/login.log combined
           SSLEngine on
           SSLCertificateFile /etc/pki/tls/certs/www.westos.com.crt
           SSLCertificateKeyFile /etc/pki/tls/private/www.westos.com.key
</VirtualHost>
<Directory /var/www/virtual/login.westos.com/html>
           Require all granted
</Directory>
<VirtualHost *:80>
           ServerName login.westos.com
           RewriteEngine on
           RewriteRule ^(/.*)$ https://%{HTTP_HOST}$1 [redirect=301]
</VirtualHost>
systemctl restart httpd       
#######参数意义
^(/.*)$        ##客户在浏览器地址中输入的所有字符
https://    ##强制用户加密访问  
%{HTTP_HOST}    ##客户请求主机
$1		##"$1"标示^(/.*)$的值
[redirect=301]  ##临时重写 302永久转换

##在浏览器所在机器上添加解析
vim /etc/hosts
172.25.8.10  login.westos.com


测试:输入https://login.westos.com成功
删除掉“https://”回车打开,发现会自动加上“https://“


###访问https://login.westos.com/


 

 




 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值