linux—Apache

#概念:

Apache HTTP server(简称apache)是Apache软件基金会的一个开放源码的网页服务器,可以在大多数计算机操作系统中运行,由于其多平台和安全性被广泛使用,是最流行的Web服务器端软件之一。它快速、可靠并且可通过简单的API扩展,将Perl/Python等解释器编译到服务器中。

Apache HTTP服务器是一个模块化的服务器,源于NCSAhttpd服务器,经过多次修改,成为世界使用排名第一的Web服务器软件。它可以运行在几乎所有广泛使用的计算机平台上。

Apache源于NCSAhttpd服务器,经过多次修改,成为世界上最流行的Web服务器软件之一。Apache取自“a patchy server”的读音,意思是充满补丁的服务器,因为它是自由软件,所以不断有人来为它开发新的功能、新的特性、修改原来的缺陷。Apache的特点是简单、速度快、性能稳定,并可做代理服务器来使用。


环境:

server 172.25.254.162
yum源配置完成
 

一.apache的安装部署

1.安装apache软件

2.安装apache手册

3.永久开启httpd服务

4.永久添加http,https服务

5.编辑apache的默认发布文件

cd /var/www/html        ##apache的/目录,默认发布目录

测试: 

http://172.25.254.162


 http://172.25.254.162/manual        ##apache手册    

 

二.apache的基础信息

主配置目录:    /etc/httpd/conf
主配置文件:    /etc/httpd/conf/httpd.conf
子配置目录:    /etc/httpd/conf.d/
子配置文件:    /etc/httpd/conf.d/*.conf
默认发布目录:  /var/www/html
默认发布文件:  index.htmml
默认端口:      80
默认安全上下文: http_sys_content_t
程序开启默认用户: apache
apache日志:    /etc/httpf/logs/*

三.apache的管理

1.修改默认端口:

1)编辑apache配置文件


2)修改默认端口80为8080

3)重启httpd服务

4)添加8080端口到火墙上

检测:

可以访问172.25.254.162,且默认的端口是8080

5)配置不提供httpd服务的端口

#将selinux设置为警告状态

#在httpd配置文件中将默认端口设置为6666

#在火墙上永久添加6666端口
semanage port -l | grep http  ##查看提供httpd服务的端口,没有6666,所以此时不能访问6666


#添加

#将6666端口永久添加httpd服务

semanage port -a -t http_port_t -p tcp 6666
systemctl restart httpd

检测:

此时可以可以通过默认端口6666访问

#2.修改默认发布文件:

默认发布文件就是访问apache时没有指定文件名称时默认访问的文件,这个文件可以指定多个,有访问顺序

1)修改httpd配置文件

#将默认端口还原

#添加默认发布文件是westos.html,这个文件优先级大于index.html

2)编辑默认发布文件
 


文件内容如下:


3)重启httpd服务

检测:

可以查看到默认发布文件被修改


rm -fr westos.html


172.25.254.162 ---可以查看到first page


#3.修改默认发布目录

1)新建默认发布目录及默认发布文件


  文件发布内容如下:

2)修改httpd配置文件

vim /etc/httpd/conf/httpd.conf

120 DocumentRoot "/westos/web/html"   ##默认发布目录是/westos/web/html
121 <Directory "/westos/web/html">   ##认证
122         Require all granted
123 </Directory>

3)重启httpd服务

systemctl restart httpd

4)修改文件安全上下文


检测:

#4.apache的虚拟主机

环境:

#更改客户端

vim /etc/hosts
172.25.254.162  www.westos.com news.westos.com music.westos.com

#服务端

还原实验环境:
rm -fr /etc/httpd/conf/httpd.conf  
yum reinstall httpd -y

1)新建虚拟主机发布目录

2)新建虚拟主机发布文件

3)编辑apache子配置文件

cd /etc/httpd/conf.d/          ##切换到apache的子配置目录


#新建apache子配置文件


 <VirtualHost _default_:80>  ##本机默认发布端口为80
        DocumentRoot /var/www/html    ##发布目录为/var/www/html
        CustomLog logs/default.log combined   ##报错文件是/etc/httpd/logs/default.log ;combined日志类型是混合的
 </VirtualHost>


#重启httpd服务

#news.westos.com的默认发布配置


 <VirtualHost *:80>   ##虚拟主机news.westos.com的端口是80
        ServerName news.westos.com    ##虚拟主机域名
        DocumentRoot /var/www/westos.com/news/html   ##news.westos.com的发布目录为/var/www/westos.com/westos/news/html
        CustomLog logs/news.log combined   
 </VirtualHost>
 <Directory "/var/www/westos.com/news/html">   ##认证
        Require all granted                 ##/var/www/westos.com/news/html下所有文件可以被查看
 </Directory>


#重启httpd服务

#music的默认发布配置

cp news.conf music.conf
vim music.conf           ##music.westos的发布配置


<VirtualHost *:80>    ##虚拟主机域名的接口是80
        ServerName music.westos.com       ##虚拟主机域名
        DocumentRoot /var/www/westos.com/music/html
        CustomLog logs/music.log combined
</VirtualHost>
<Directory "/var/www/westos.com/music/html">
        Require all granted
</Directory>
systemctl restart httpd

检测:

#添加客户端的本地解析

#访问172.25.254.162

www,westos.com的文件内容:


查看虚拟主机news.westos.com的发布目录下的文件

music虚拟主机的发布内容:

 

#5.apache的访问控制

1)基于ip

#编辑httpd配置文件

vim /etc/httpd/conf.d/a_default.conf


 <Directory "var/www/html">
        Order Allow,Deny     ##先读Allow,再读Deny内容,后读取的会覆盖前面的内容
        Allow from all        ##允许所有用户进行访问
        Deny from 172.25.254.62 ##禁止172.25.254.162访问
 </Directory>


#重启httpd服务

检测:

真机62打开浏览器输入
172.25.254.162,不能重看到发布内容


2)基于用户身份

#新建httpd用户

htpasswd -cm http_userlist admin    ##创建httpd用户列表http_userlist,列表中添加用户admin,设置admin的密码
cat http_userlist  ##查看admin的密码
htpasswd -m http_userlist admin1  ##在列表中添加用户admin1
cat http_userlist   


pwd          ##查看列表所在路径
 /etc/httpd/conf.d        

#编辑默认发布配置文件
vim a_default.conf    ##编辑默认发布配置文件


 <Directory "var/www/html">  
        AuthUserFile /etc/httpd/conf.d/http_userlist   ##只允许http_userlist列表中的用户访问
        AuthName "PLEASE input username and password!!"  ##用户登陆前可以看见的内容
        AuthType basic   ##基本认证
 #      Require user admin  ##只有admin用户可以通过认证,与下面的设置重复,注释
        Require valid-user  ##允许所有用户通过认
 </Directory>


#重启httpd服务

检测:

172.25.254.162,需要输入用户及密码


此时输入正确的用户及密码,可以访问成功

检测之后,将内容注释,还原实验环境


#6.apache支持的语言

1)html

上面的内容都是html,不再赘述

2)php

#新建php文件

vim /var/www/html/index.php


 <?php
        phpinfo();
 ?>


#安装php


#重启httpd服务

检测:

172.25.254.141/index.php     

             

3)cgi

#新建自定义cgi发布目录


#新建cgi默认发布文件


 #!/usr/bin/perl           
 print "Content-type: text/html\n\n";  ##打印文本
 print`date`;   ##执行命令date

#添加执行权限

#修改发布文件的安全上下文
semanage fcontext -a -t httpd_sys_script_exec_t '/var/www/html/cgi(/.*)?'    ##修改安全上下文,这是个执行的文件


restorecon -RvvF /var/www/html/cgi   ##重新读取文件/var/www/html/cgi

/var/www/html/cgi/index.cgi   ##执行下脚本确保脚本运行正常

 

#编辑默认发布目录配置文件


 <Directory "/var/www/html/cgi">      ##针对/var/www/html/cgi目录的描述
        Options ExecCGI   ##执行cgi
        AddHandler cgi-script .cgi  ##
 </Directory>

#重启httpd服务

测试:

172.25.254.141/cgi/index.cgi
可以查看到脚本运行结果,脚本是显示时间,重复执行,时间在变化

 

#7.apache的加密访问

#https与http的区别

超文本传输协议HTTP协议被用于在Web浏览器和网站服务器之间传递信 息。HTTP协议以明文方式发送内容,不提供任何方式的数据加密,如果攻击者截取了Web浏览器和网站服务器之间的传输报文,就可以直接读懂其中的信息, 因此HTTP协议不适合传输一些敏感信息,比如信用卡号、密码等。

为了解决HTTP协议的这一缺陷,需要使用另一种协议:安全套接字层超文本传输协议HTTPS。为了数据传输的安全,HTTPS在HTTP的基础上加入了SSL协议,SSL依靠证书来验证服务器的身份,并为浏览器和服务器之间的通信加密。

HTTPS和HTTP的区别主要为以下四点:

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

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

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

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

 

1)安装提供生成加密key的软件

cd /etc/httpd/conf.d/
ls
yum install crypto-utils -y  

2)重启httpd服务

3)此时可以查看到新出现的文件sssl.conf

检测:

https://172.25.254.162,可以看到如下图的窗口

Add exception  进行加密

添加加密地址

通过验证,可以查看到发布内容

通过左上角的锁图标,可以查看具体信息

可以查看加密key到这是apache发布的,不太安全

 

#添加私有的加密key

1)安装可以生成加密key的软件

2)生成加密key

加密key具体设置如下

加密key长度

 

通过认证,需要收费,所以此时选择no

 

设置加密具体信息

域名加密钥匙生成如下

3)在https配置文件中添加自主加密key


101 SSLCertificateFile /etc/pki/tls/certs/www.westos.com.crt    ##在getenkey命令生成的后面找这个路径
109 SSLCertificateKeyFile /etc/pki/tls/private/www.westos.com.key    ##在getenkey命令生成的后面找这个路径


#重启httpd服务

检测:

https://172.25.254.162


此时可以查看到加密key是本地生成的

 

 

#8.网页重写

如何在访问域名时,自动加密

1)添加虚拟主机login.westos.com

 


 


#重启httpd服务

检测:

真机vim /etc/hosts
login.westos.com


此时可以在浏览器中访问虚拟主机login.westos.com

2)配置网页重写


编辑虚拟主机的配置文件


 <VirtualHost *:443>
        SSLEngine on
        ServerName login.westos.com
        DocumentRoot /var/www/westos.com/login/html
        CustomLog logs/login.log combined
        SSLCertificateFile /etc/pki/tls/certs      www.westos.com.crt   ##这是文件vim /etc/httpd/conf.d/ssl.conf 的101行
        SSLCertificateKeyFile /etc/pki/tls/private www.westos.com.key   ##这是文件vim /etc/httpd/conf.d/ssl.conf 的109行
 </VirtualHost>
 <Directory "/var/www/westos.com/login/html">
        Require all granted
 </Directory>
 <VirtualHost *:80>
        ServerName login.westos.com
        RewriteEngine on
        RewriteRule ^(/.*)$ https://%{HTTP_HOST}$1 [redirect=301]
</VirtualHost>

^(/.*)$   ##客户在浏览器地址栏中输入的所有字符
https://  ##强制客户加密访问
%{HTTP_HOST}  ##客户请求主机
$1         ##“$1”表示 ^(/.*)$的值
[redirect=301]   ##临时重写   302永久转换

检测:

login.westos.com
可以自动访问https://login.westos.com

访问login.westos.com,最后自动访问的是https://login.westos.com

 

 

#6.apache的应用

一.lamp部署

LAMP指的Linux(操作系统)、ApacheHTTP 服务器,MySQL(有时也指MariaDB,数据库软件) 和PHP(有时也是指PerlPython) 的第一个字母,一般用来建立web应用平台。

虽然这些开放源代码程序本身并不是专门设计成同另几个程序一起工作的,但由于它们的免费和开源,这个组合开始流行(大多数Linux发行版本捆绑了这些软件)。当一起使用的时候,它们表现的像一个具有活力的解决方案包。其他的方案包有苹果的WebObjects(最初是应用服务器),Java/J2EE和微软的.NET架构。

LAMP包的脚本组件中包括了CGIweb接口,它在90年代初期变得流行。这个技术允许网页浏览器的用户在服务器上执行一个程序,并且和接受静态的内容一样接受动态的内容。程序员使用脚本语言来创建这些程序因为它们能很容易有效的操作文本流,甚至当这些文本流并非源自程序自身时也是。正是由于这个原因系统设计者经常称这些脚本语言为胶水语言

linux+apahce+mariadb+php/perl/python=LAMP架构
 

1.将python脚本放到/var/www/cgi-bin下

脚本内容如下


2.给脚本添加执行权限

chmod +x webapp.wsgi     


3.安装在http中提供python支持的软件


4.重启httpd服务


5.编辑lamp的配置文件


<VirtualHost *:80>
        ServerName webapp.westos.com
        DocumentRoot /var/www/cgi-bin
        CustomLog logs/webapp.log combined
        WSGIScriptAlias / /var/www/cgi-bin/webapp.wsgi         ##指定脚本锁在路径
</VirtualHost>


6.chongqihttpd服务


测试:

客户端添加本地解析
1.vim /etc/hosts
172.25.254.162 www.westos.com news.westos.com music.westos.com login.westos.com webapp.westos.com
浏览器输入webapp.westos.com

 

客户端进行测试,可以进行访问


二.论坛部署

1.配置虚拟主机

cd /etc/httpd/conf.d                    ##进入虚拟主机配置目录
cp music.conf bbs.conf                  ##以music为模板新建bbs的虚拟主机

vim bbs.conf                             ##虚拟主机bbs的配置


 <VirtualHost *:80>
    ServerName bbs.westos.com       ##虚拟主机域名时bbs.westos.com
    DocumentRoot /var/www/westos.com/bbs/html   ##默认发布文件路径
    CustomLog logs/bbs.log combined             ##日志路径,日志类型混合
 </VirtualHost>
 <Directory "/var/www/westos.com/bbs/html">         ##授权
    Require all granted
 </Directory>

2.下载论坛安装包

mkdir /var/www/westos.com/bbs/html -p    ##apache发布目录
cd /var/www/westos.com/bbs/html/         ##进入apache发布目录
get Discuz_X3.2_SC_UTF8.zip              ##下载论坛安装包
unzip Discuz_X3.2_SC_UTF8.zip          ##解压


rm -fr Discuz_X3.2_SC_UTF8.zip         ##删除多余的压缩包

3.论坛初始化部署

cd upload/                               ##根据安装说明readme内容,上传upload目录,进入指定目录给权限,这也是进入论坛部署时进入的指定目录


less readme.txt                             ##查看说明文件
chmod -R 777 config                    ##根据说明给满权限
chmod -R 777 data                      ##根据说明给满权限
systemctl restart httpd                  ##重启httpd服务,使配置生效

此时浏览器访问bbs.westos.com/upload      ##可以查看到论坛部署需要的部署
setenforce 0                           ##selinux设置为警告状态


chmod 777 uc_client uc_server          ##需要给满权限
chmod 777 uc_client uc_server -R       ##需要给满权限


yum install mariadb-server           ##根据需要安装数据库


systemctl start mariadb              ##开启数据库服务


systemctl enable mariadb           ##数据库开机启动


vim /etc/my.cnf                    ##数据库对网络开放的接口关闭


  skip-networking=1                ##关闭网络开放接口

systemctl restart mariadb.service  ##重启数据库服务


netstat -atnlupe | grep mysql     ##查看数据库对网络开放的接口是否还存在


mysql_secure_installation         ##数据库初始化


yum search php           
yum install php-mysql.x86_64      ##下载php的的数据库支持的插件

#重启httpd服务

检测:

vim /etc/hosts          ##客户端添加本地解析
172.25.254.162 bbs.westos.com


此时论坛部署所需要的条件全部满足

开始进行论坛安装

设置论坛具体信息

论坛正在安装

安装完毕,进入论坛

登录管理员帐号

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值