linux服务之Apache

Apache

1. 基础知识

Apache HTTP Server
(简称Apache)是Apache基金会
的一个开放源码的网页服务器,可以在大多数电脑操作系统中运行,由于其跨平台和安全性 被广泛使用,是最流行的Web服务器端软件之一。它快速、可靠并且可通过简单的API扩充,将PerlPython编译到服务器中。
Nginx("engine x") 是一个高性能的 HTTP 和反向代理服务器,也是一个 IMAP/POP3/SMTP 代理服务器。 Nginx 是由 Igor Sysoev 为俄罗斯访问量第二的 Rambler.ru 站点开发的,它已经在该站点运行超过三年了。Igor 将源代码以类BSD许可证的形式发布。

Tengine是由淘宝网发起的Web服务器项目。它在Nginx的基础上,针对大访问量网站的需求,添加了很多高级功能和特性。Tengine的性能和稳定性已经在大型的网站如淘宝网,天猫商城等得到了很好的检验。它的最终目标是打造一个高效、稳定、安全、易用的Web平台。

nginx 相对 apache 的优点: 

  • 轻量级,同样起web 服务,比apache 占用更少的内存及资源
  • 抗并发,nginx 处理请求是异步非阻塞的,而apache 则是阻塞型的,在高并发下nginx 能保持低资源低消耗高性能
  • 高度模块化的设计,编写模块相对简单
  • 社区活跃,各种高性能模块出品迅速

2. 配置



2.1基本知识


Apache主配置文件: /etc/httpd/conf/httpd.conf
ServerRoot "/etc/httpd" 用于指定Apache的运行目录
Listen 80 监听端口
User apache 运行apache程序的用户和组
Group apache
ServerAdmin root@localhost 管理员邮箱
DocumentRoot "/var/www/html" 网页文件的存放目录
<Directory "/var/www/html"> <Directory>语句块自定义目录权限
Require all granted
</Directory>
ErrorLog "logs/error_log" 错误日志存放位置
AddDefaultCharset UTF-8 默认支持的语言
IncludeOptional conf.d/*.conf 加载其它配置文件
DirectoryIndex index.html 默认主页名称

#####安装Apache
yum install httpd.x86_64 -y



2.2基本配置


2.2.1修改默认发布文件
[root@mariadb mysqladmin]# cd /etc/httpd/conf/
[root@mariadb conf]# vim httpd.conf

 

[root@mariadb conf]# vim /var/www/html/redhat.html



[root@mariadb conf]# systemctl restart httpd


2.2.2测试:





2.3  修改默认发布目录


2.3.1  selinux开启时Permissive

[root@mariadb conf]# mkdir /redhat/www/test/ -p
[root@mariadb conf]# mv /var/www/html/westos.html  /redhat/www/test/



[root@mariadb conf]# vim httpd.conf

Require all granted     ####给文件进行授权
[root@mariadb conf]# systemctl restart httpd
###测试


2.3.2selinux开启时enforing

semanage fcontext -a -t httpd_sys_content_t '/redhat(/.*)?'   ####改变安全上下文
restorecon -RvvF /redhat       ####刷新


####测试





2.4 访问控制


2.4.1设定IP访问
###配置  vim /etc/httpd/conf/httpd.conf


 DocumentRoot "/var/www/html"
#DocumentRoot "/westos/www/test"
<Directory "/var/www/html/admin">   ####只允许21主机访问admin目录
    Order Deny,Allow
    Allow from 172.25.254.21
    Deny from All
</Directory>

[root@mariadb conf]# systemctl restart httpd

####测试





<Directory "/var/www/html/admin">   ####允许所有主机访问admin目录但拒绝21主机访问
    Order Allow,Deny
    Allow from All
    Deny from 172.25.254.21
</Directory>



[root@mariadb conf]# systemctl restart httpd

###测试




2.4.2设定用户的访问


Apache无格式文件用户身份验证在此配置中,用户账户和密码存储在本地.htpasswd文件中。处于安全原因,该文件不能
保存在网站的DocumentRoot中,而应保存在Web服务器不提供服务的一些目录中。特殊的htpasswd命令在.htpasswd文件中管理用户。


####生成文件

    htpasswd -cm /etc/httpd/accessuser admin   生成用户admin 并为之生成密码
    htpasswd -m /etc/httpd/accessuser tom         生成用户tom  并为之生成密码
 
  

#####在主配置文件里添加vim httpd.conf
<Directory "/var/www/html/admin">
 AuthUserFile /etc/httpd/accessuser     #####用户的认证文件
Authname "please name password"        #####用户认证提示信息
AuthType basic                #####认证类型
Require valid-user
[Require user admin]            #####认证用户
</Directory>

#####测试





2.5语言支持 



2.5.1html语言默认支持
2.5.2  Php语言

####安装php   yum install php -y  

#####在/var/www/html目录下创建文件 vim index.php

  <?php
    phpinfo();
     ?>
#####重启服务systemctl restart httpd


####测试



2.5.3cgi语言


2.5.3.1

      定义:CGI(CommonGateway Interface)是HTTP服务器与你的或其它机器上的程序进行“交谈”的一种工具,其程序须运行在网络服务器上。

    功能:  绝大多数的CGI程序被用来解释处理来自表单的输入信息,并在服务器产生相应的处理,或将相应的信息反馈给浏览器。CGI程序使网页具有交互功能

2.5.3.2配置

#####写cgi脚本

mkdir /var/www/html/cgi
vim index.cgi
    #!/usr/bin/perl
    print "Content-type:test/html\n\n";
    print `date`;

#####给cgi授权

 vim /etc/httpd/conf/httpd.conf
 <Directory "/var/www/html/cgi">     #####授权
         Options +ExecCGI
         AddHandler cgi-script .cgi
 </Directory>


chmod +x index.cgi

systemctl restart httpd

####测试






2.6 Apache虚拟主机

2.6.1.定义
虚拟主机允许您从一个httpd服务器同时为多个网站提供服务。在本节中,我们将了解基于名称的虚拟主机其中多个主机名都指向同一个IP地址,但是Web服务器根据用于到达站点的主机名提供具有不同内容的不同网站。

2.6.2.建立测试页
[root@mariadb conf.d]# cd /var/www
[root@mariadb www]# mkdir virtual/news.westos.com -p
[root@mariadb www]# mkdir virtual/money.westos.com -p
[root@mariadb www]# mkdir virtual/news.westos.com/html -p
[root@mariadb www]# mkdir virtual/money.westos.com/html -p
[root@mariadb www]# echo "money.westos.com'page"> virtual/money.westos.com/html/index.html
[root@mariadb www]# echo "news.westos.com'page"> virtual/news.westos.com/html/index.html
2.6.3.配置文件
在子配置文件中
[root@mariadb cgi]# cd /etc/httpd/conf.d/
[root@mariadb conf.d]# vim default.conf   ####为指定域名的默认访问都访问default



[root@mariadb conf.d]# cat default.conf
<Virtualhost _default_:80>                  #####虚拟主机开放的端口
DocumentRoot "/var/www/html"                  #####虚拟主机默认的发布目录    
CustomLog "logs/default.log" combined           #####虚拟主机日志
</Virtualhost>



[root@mariadb conf.d]# vim news.conf       #####指定域名为news.westos.com的访问到默认发布目录
[root@mariadb conf.d]# cat 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>


[root@mariadb conf.d]# cp news.conf money.conf


[root@mariadb conf.d]# vim money.conf
[root@mariadb conf.d]# cat money.conf
<Virtualhost *:80>
ServerName "money.westos.com"
DocumentRoot "/var/www/virtual/money.westos.com/html"
CustomLog "logs/money.log" combined
</Virtualhost>
<Directory "/var/www/virtual/money.westos.com/html">
Require all granted
</Directory>

[root@mariadb conf.d]# systemctl restart httpd
2.6.4.测试
在测试浏览器所在主机
[root@foundation21 Desktop]# vim /etc/hosts
[root@foundation21 Desktop]# cat /etc/hosts
172.25.254.121 www.westos.com news.westos.com  money.westos.com




2.7 自定义自签名证书


1.1定义
 


HTTPS(全称:Hypertext Transfer Protocol over Secure Socket Layer),是以安全为目标的HTTP通道,简单讲是HTTP的安全版。即HTTP下加入SSL层,HTTPS的安全基础是SSL,因此加密的详细内容就需要SSL。

SSL协议位于TCP/IP协议与各种应用层协议之间,是一种国际标准的加密及身份认证通信协议,为TCP提供一个可靠的端到端的安全服务,为两个通讯个体之间提供保密性和完整性(身份鉴别)。SSL握手协议(SSL Handshake Protocol):它建立在SSL记录协议之上,用于在实际的数据传输开始前,通讯双方进行身份认证、协商加密算法、交换加密密钥等。

1.2HTTPS和HTTP的区别

一、https协议需要到ca申请证书,一般免费证书很少,需要交费。 

二、http是超文本传输协议,信息是明文传输,https 则是具有安全性的ssl加密传输协议。 

三、http和https使用的是完全不同的连接方式,用的端口也不一样,前者是80,后者是443。 

四、http的连接很简单,是无状态的;HTTPS协议是由SSL+HTTP协议构建的可进行加密传输、身份认证的网络协议,比http协议安全。


2.7.2.配置


[root@mariadb mysqladmin]# yum install mod_ssl -y
[root@mariadb mysqladmin]# yum install crypto-utils -y
[root@mariadb mysqladmin]# genkey www.westos.com
[root@mariadb mysqladmin]# cd /etc/httpd/conf.d/
[root@mariadb conf.d]# cp money.conf login.conf
[root@mariadb conf.d]# vim login.conf
[root@mariadb conf.d]# cat login.conf


        SSLEngine on     ###开始https功能
        SSLCertificateFile /etc/pki/tls/certs/www.westos.com.crt        ###证书所在位置
        SSLCertificateKeyFile /etc/pki/tls/private/www.westos.com.key   ###秘钥所在位置
    <Virtualhost *:80>       ####网页重写实现访问https
        ServerName "login.westos.com"
        RewriteEngine on
        rewriterule ^(/.*)$ https://%{HTTP_HOST}$1 [redirect=301]
    </Virtualhost>
###############    ^(/.*)$                                  客户主机所在地址中写入的所有字符

###############   https://                                 定向成为的客户访问   

###############   %{HTTP_HOST}                客户端请求主机

###############   $1                                        表示^(/.*)$

###############   [redirect=301]                      临时定向 302 永久定向



[root@mariadb conf.d]# mkdir /var/www/virtual/login.westos.com/html -p
[root@mariadb conf.d]# vim /var/www/virtual/login.westos.com/html/index.html



[root@mariadb conf.d]# systemctl restart httpd


3.测试
在客户端主机添加解析vim /etc/resolv.conf



####第一次登陆需要证书,下载证书后会跳转


######第二次登陆时不需要证书




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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值