************************9.Apache*********************
互联网主流架构
lamp = linux apache mysql php
lnmp = linux nginx mysql php
若要使用 html cgi jsp asp 等闭源网页编辑软件
需使用翻译软件 tomcat jboss
##1.Apache基本配置##
安装apache软件包: httpd httpd-manual(手册插件)
查看监听端口: netstat -antlpe | grep httpd

linux笔记 3-9 Apache(http,https)_http 


##2.Apache简单配置##
主配置文件:/etc/httpd/conf/httpd.conf
1.默认主页名称 DirectoryIndex

在默认发布目录下/var/www/html目录中,在test文件中写入自定义内容

linux笔记 3-9 Apache(http,https)_apache_02 

文件的顺序表示服务访问的顺序,从前到后直到访问到存在的文件

linux笔记 3-9 Apache(http,https)_apache_03 

网页测试

linux笔记 3-9 Apache(http,https)_https_04
2.默认端口 Listen

修改配置文件

linux笔记 3-9 Apache(http,https)_https_05 

网页测试,修改默认端口后,直接访问ip访问不到网页

linux笔记 3-9 Apache(http,https)_apache_06 

必须在ip后加上修改后的端口才可以访问到

linux笔记 3-9 Apache(http,https)_http_07
3.默认发布目录 DocumentRoot

建立目录/www/myweb,在目录里写入主页内容以供测试

linux笔记 3-9 Apache(http,https)_https_08linux笔记 3-9 Apache(http,https)_apache_09 

 

修改配置文件

linux笔记 3-9 Apache(http,https)_http_10 

网页测试

linux笔记 3-9 Apache(http,https)_http_11
注:若开启了selinux需更改目录安全上下文
使用 semanage fcontext -a -t httpd_sys_content_t “/directory(/.*)?” 更改安全上下文
使用 restorecon -RvvF /directory 重新加载安全上下文
4.更改默认发布目录权限
1)基于ip

linux笔记 3-9 Apache(http,https)_http_12 

用主机ip为172.25.254.8进行网页测试时,只能看到apache的测试页,看不到默认发布目录里的内容

linux笔记 3-9 Apache(http,https)_apache_13
2)基于用户

添加用户,并制定密码

linux笔记 3-9 Apache(http,https)_apache_14
限制用户

linux笔记 3-9 Apache(http,https)_https_15
b.不限制用户

linux笔记 3-9 Apache(http,https)_https_16 

只有拥有正确匹配的用户名和密码,而且没有被限制的用户才可访问网页

linux笔记 3-9 Apache(http,https)_http_17
以上更改都需要重启服务才可生效
##2.虚拟主机##
虚拟主机允许您从一个httpd服务器同时为多个网站提供服务基于名称的虚拟主机是其中多个主机名都指向同一个IP地址,但是Web服务器根据用于到达站点的主机名提供具有不同内容的不同网站。

1./etc/httpd/conf.d目录下

编辑默认主页配置文件 vim default.conf

linux笔记 3-9 Apache(http,https)_http_18 

编辑news主页配置文件 vim news.conf

linux笔记 3-9 Apache(http,https)_http_19 

编辑 music主页配置文件 vim music.conf

linux笔记 3-9 Apache(http,https)_apache_20 

2.在默认发布目录下,建立虚拟主机的目录

linux笔记 3-9 Apache(http,https)_apache_21 

linux笔记 3-9 Apache(http,https)_https_22 

linux笔记 3-9 Apache(http,https)_http_23 

3.网页测试主机添加host记录 vim /etc/hosts

linux笔记 3-9 Apache(http,https)_http_24 

网页测试

linux笔记 3-9 Apache(http,https)_https_25 

linux笔记 3-9 Apache(http,https)_http_26 

linux笔记 3-9 Apache(http,https)_apache_27
##3.https##
客户拿到的是公钥,用于加密认证。 服务器解密,减轻服务器压力
1.安装软件 mod_ssl 和用于生成签名证书的 crypto-utils软件包
2.调用genkey,生成签名证书

linux笔记 3-9 Apache(http,https)_https_28 

具体生成步骤如下:

记录生成的证书和关联的私钥的生成位置

linux笔记 3-9 Apache(http,https)_http_29 

继续使用对话框,并选择合适的密钥大小

linux笔记 3-9 Apache(http,https)_apache_30 

在生成随机数时比较慢,敲键盘和移动鼠标可以加速

linux笔记 3-9 Apache(http,https)_http_31 

拒绝向认证机构(CA)发送证书请求(CSR)

linux笔记 3-9 Apache(http,https)_http_32 

linux笔记 3-9 Apache(http,https)_http_33 

为服务器提供合适的身份。Common Name必须与服务器的主机全名完全匹配。
(注意,任何逗号都应使用前导反斜线[\]进行转义)

linux笔记 3-9 Apache(http,https)_apache_34 


3.修改配置文件 /etc/httpd/conf.d/ssl.conf

linux笔记 3-9 Apache(http,https)_https_35 

linux笔记 3-9 Apache(http,https)_http_36 

网页测试,可以看到自己添加的证书内容

linux笔记 3-9 Apache(http,https)_http_37 

##配置虚拟主机的https服务##

/etc/httpd/conf.d 目录下

muisc和news虚拟主机配置文件进行修改。添加模块

linux笔记 3-9 Apache(http,https)_https_38 

测试

linux笔记 3-9 Apache(http,https)_https_39 

##4.网页重写 ##

把所有80端口的请求全部重定向由https来处理

/etc/httpd/conf.d 目录下

muisc和news虚拟主机配置文件进行修改例如:

<Virtualhost *:80>

ServerName www0.example.com

RewriteEngine on

RewriteRule ^(/.*)$ https://%{HTTP_HOST}$1 [redirect=301]

</Virtualhost>

linux笔记 3-9 Apache(http,https)_https_40 

当你输入music.westos.com时自动访问的是https://music.westos.com

linux笔记 3-9 Apache(http,https)_http_41 

## 5.php ##

安装 yum install php

编写在默认发布目录下编写php测试页 vim index.php

linux笔记 3-9 Apache(http,https)_https_42 

修改 /etc/httpd/conf/httpd.conf 使其访问测试页

linux笔记 3-9 Apache(http,https)_apache_43 

重启服务

测试

linux笔记 3-9 Apache(http,https)_https_44 

## 6.CGI ##

通用网关接口(CGI)是网站上放置动态内容的最简单的方法。CGI脚本可用于许多目

,但是谨慎控制使用哪个CGI脚本以及允许谁添加和运行这些脚本十分重要。编写质量差的CGI

脚本可能为外部攻击者提供了破坏网站及其内容安全性的途径。因此,在Web服务器级别和

SELinux策略级别,都存在用于限制CGI脚本使用的设置。

1.在默认发布目录/etc/www/html下建立cgi目录,并在目录下建立index.cgi 编写主页内容,并给index.cgi添加执行权限

linux笔记 3-9 Apache(http,https)_apache_45 

可用perl index.cgi 测试主页内容

linux笔记 3-9 Apache(http,https)_https_46 

2.修改/etc/httpd/conf.d/default.conf

linux笔记 3-9 Apache(http,https)_http_47 

3.重启服务

4.测试

linux笔记 3-9 Apache(http,https)_http_48
注:
1.内容模板可访问 www.westos.com/manual 查看到
2.若开启了selinux需更改目录安全上下文
使用 semanage fcontext -a -t httpd_sys_script_exec_t “/var/www/html/cgi/(/.*)?” 更改安全上下文
使用 restorecon -RvvF /directory 重新加载安全上下文
使用ls -Zd查看安全上下文

## 7.搭建论坛 ##
1.安装mariadb-server 和php-mysql 并开启mariadb服务
2.在 /etc/my.cnf 的【mysqld】添加 skip-networking =1参数,关闭端口
3.使用mysql_secure_installation执行安全性配置
4.在默认发布目录下下载Discuz安装包,按readme里面的提示完成安装

linux笔记 3-9 Apache(http,https)_apache_49 

linux笔记 3-9 Apache(http,https)_apache_50linux笔记 3-9 Apache(http,https)_http_51 

 

linux笔记 3-9 Apache(http,https)_https_52

##9.squid.缓存代理服务##
1.正向解析 ---从内网访问外网(×××)
安装服务 squid
配置 /etc/squid/squid.conf

linux笔记 3-9 Apache(http,https)_https_53

linux笔记 3-9 Apache(http,https)_http_54

 

重启服务
实验前提
web_xx 主机是双网卡主机,一个内网的ip,一个外网的ip。
mail_westos 主机是单网卡主机 具有一个内网的ip
在双网卡主机上配置squid服务
测试

直接访问依旧访问不到

linux笔记 3-9 Apache(http,https)_http_55 

需要进行如下设置

linux笔记 3-9 Apache(http,https)_https_56

linux笔记 3-9 Apache(http,https)_http_57

 

重新测试,就可以访问了

linux笔记 3-9 Apache(http,https)_https_58

2.反向解析
普通反向解析
配置 /etc/squid/squid.conf,添加如下内容

linux笔记 3-9 Apache(http,https)_https_59

重启服务
测试,恢复以上测试设置,可以直接访问

linux笔记 3-9 Apache(http,https)_http_60
轮询
配置 /etc/squid/squid.conf

linux笔记 3-9 Apache(http,https)_http_61
重启服务
测试 ,一次访问172.25.254.37 一次访问172.25.254.36

linux笔记 3-9 Apache(http,https)_apache_62