APACHE
一、介绍
apache是企业中常用的web服务,用来提供http://(超文本传输协议)
二、apache的安装
yum install httpd -y #安装apache软件包
systemctl start httpd #打开服务
systemctl enable httpd #开机自启动
systemctl stop firewalld #关闭防火墙
systemctl disable firewalld #开机不启动防火墙
测试:
访问apache默认页面http://172.25.254.148

apache还有一个使用手册:需要安装httpd-manual包,访问http://主机ip/manual可以查看
三、apache的基础信息
主配置目录: /etc/httpd/conf
主配置文件:/etc/httpd/conf/httpd.conf
子配置目录:/etc/httpd/conf.d
子配置文件:/etc/httpd/conf.d/*.conf
默认发布目录:/var/www/html
默认发布文件:index.html
默认端口:80
默认安全上下文:httpd_sys_content_t
程序开启默认用户:apache
apache日志:/etc/httpd/logs/*
四、配置apache服务
1.在默认发布目录发布内容
vim /var/www/html/index.html
<h1>redhat</h1>
访问http://172.25.254.142
2.修改默认端口
vim /etc/httpd/conf/httpd.conf
42 Listen 80 ##修改默认端口为8080
3.修改默认发布文件:
默认发布文件就是访问apache时没有指定文件名称时默认访问的文件。这个文件可以指定多个,有访问顺序
vim /etc/httpd/conf/httpd.conf
164 DirectoryIndex index.html test ##当index.html不存在时访问test
##如果将test放到index.html前面,在两个文件都存在的情况下会默认访问test里面的内容
测试:
rm -f /var/www/html/*
vim /var/www/html/test
<h1>test</h1>
systemctl restart httpd.service ##修改完配置文件记得一定要重启服务生效
4.修改默认发布目录
vim /etc/httpd/conf/httpd.conf
120 DocumentRoot "/www/html"
121 <Directory "/www/html">
122 Require all granted
123 </Directory>
##将原本的DocumentRoot "/var/www/html"替换为以上内容
mkdir /www/html -p
[root@desktop ~]# ls -Z /var/www/html/ -d
drwxr-xr-x. root root system_u:object_r:httpd_sys_content_t:s0 /var/www/html/
[root@desktop ~]# ls -Z /www/html/ -d
drwxr-xr-x. root root unconfined_u:object_r:default_t:s0 /www/html/
由于selinux的存在,新建的目录安全上下文和默认发布目录是不同的
semanage fcontext -a -t httpd_sys_content_t '/www(/.*)?' ##修改安全上下文
restorecon -FvvR /www/ ##刷新安全上下文
[root@desktop ~]# ls -Z /www/html/ -d
drwxr-xr-x. root root system_u:object_r:httpd_sys_content_t:s0 /www/html/
systemctl restart httpd.service
vim /etc/httpd/conf/httpd.conf
<h1>新目录</h1>
五、apache的虚拟主机
1.
恢复默认发布目录,并创建默认文件index.html
[root@desktop conf.d]# cat /var/www/html/index.html
<h1>默认目录</h1>
2.
mkdir /var/www/virtual/news/html -p #虚拟主机放置路径
mkdir /var/www/virtual/music/html -p #第二个虚拟主机路径
vim /var/www/virtual/news/html/index.html #建立虚拟主机发布文件
<h1>news.redhat.com</h1>
vim /var/www/virtual/music/html/index.html
<h1>music.redhat.com</h1>
cd /etc/httpd/conf.d/ #进入apache服务子配置目录
vim adefault.conf #建立默认发布目录配置文件
1 <VirtualHost _default_:80>
2 DocumentRoot /var/www/html #发布文件路径
3 CustomLog "logs/adefault.log" combined #日志路径,这里写相对路径,内容在/etc/httpd/logs/*.log里面
4 </VirtualHost>
vim news.conf #建立虚拟发布目录文件
1 <VirtualHost *:80>
2 ServerName news.redhat.com #虚拟主机的域名
3 DocumentRoot /var/www/virtual/news/html #发布目录
4 Customlog "logs/news.log" combined #站点日志,combined表示四种日志类型的合集
5 </VirtualHost>
6 <Directory "/var/www/virtual/news/html">
7 Require all granted #建立认证关系
8 </Directory>
vim music.conf
1 <VirtualHost *:80>
2 ServerName music.redhat.com
3 DocumentRoot /var/www/virtual/music/html
4 Customlog "logs/music.log" combined
5 </VirtualHost>
6 <Directory "/var/www/virtual/music/html">
7 Require all granted
8 </Directory>
systemctl restart httpd.service
测试:
在客户端访问以上网页时,做好本地解析,方法:
vim /etc/hosts
172.25.254.148 www.redhat.com news.redhat.com music.redhat.com
六、apache访问限制
1.通过黑白名单
vim /etc/httpd/conf.d/adefault.conf
<Directory "/var/www/html/westos">
Order Deny,Allow ##deny和allow哪个在前就先读取下面的哪个配置
Allow from 172.25.254.1 ##允许1这台主机访问
Deny from All ##拒绝所有
</Directory>
2.通过密码
1)创建密码文件:
[root@desktop conf.d]# htpasswd -cm /etc/httpd/userpass admin
New password: ##输入密码
Re-type new password: ##确认密码
Adding password for user admin
如果还要增加一个用户要去掉c参数,否则会覆盖原来的用户密码
htpasswd -m /etc/httpd/userpass admin1
密码文件在这里:
[root@desktop conf.d]# cat /etc/httpd/userpass
admin:$apr1$GNsdwvzs$ONpK.ap5kzyJYUBe0XPRg/
admin1:$apr1$8KpmN94R$KRkKghToPsRf9X4vCdhGB0
可以查看一下,系统中是没有admin用户的,这是http服务建立的
[root@desktop conf.d]# id admin
id: admin: no such user
2)增加配置
mkdir /var/www/html/admin
vim /var/www/html/admin/index.html
<h1>admin</h1>
vim /etc/httpd/conf.d/adefault.conf
<Directory "/var/www/html/admin">
AuthUserFile /etc/httpd/userpass #密码存放位置
AuthName "Input Name and Password" #登陆前提示语
AuthType basic #(最小化)基本模式
Require valid-user #允许所有/etc/httpd/userpass里面的用户
#Require user admin #只允许/etc/httpd/userpass里面的admin用户
</Directory>
访问http://172.25.254.142/admin,需要密码登陆,输入刚才创建的用户和密码即可
七、apache支持的语言
1.php
yum install php -y #安装php包
vim /var/www/html/index.php #默认发布目录下写一个php文件
<?php
phpinfo();
?>
vim /etc/httpd/conf/httpd.conf
164 DirectoryIndex index.php index.html ##将php文件加入到服务识别中
systemctl restart httpd.service
2.cgi
cd /var/www/cgi-bin/
vim index.cgi #建立相关文件
#!/usr/bin/perl
print "Content-type: text/html\n\n";
print `date`; #表示执行date这个命令(脚本)
chmod +x index.cgi #增加可执行权限
vim /etc/httpd/conf.d/adefault.conf
Alias /cgi /var/www/cgi-bin
<Directory "/var/www/cgi-bin">
Options +ExecCGI #告诉系统可以执行index.cgi中的命令(脚本)
AddHandler cgi-script .cgi #识别的文件类型是cgi-script或以cgi结尾的
</Directory>
vim /etc/httpd/conf/httpd.conf
164 DirectoryIndex index.php index.html index.cgi
systemctl restart httpd.service
测试:可见执行了`date`这个命令,这里也可以是一个脚本执行后的结果
3.其他
还支持jsp和asp,但不能直接使用,还需要中间键(程序)支持,如tomcat等。
八、https(ssl加密认证)
1.ssl制作与使用
vim /var/www/html/index.html
<h1>!!redhat!!</h1>
yum install mod_ssl -y #安装ssl认证模块
yum install crypto-utils -y #安装ssl生成工具genkey www.redhat.com #执行命令运行ssl生成工具进入文本化图形

加密大小选择1024即可,太大的话文件生成过程也会变长:

等待加密过程:

到这一步需要到发布服务的主机上不停的随机敲字母,否则进度条会一直停止不动。具体原因与/dev/random文件有关,随机敲字母这个文件会随之增大:

是否加入CA认证(需要互联网|需要收费),选择否:

密码这里选择空-->Next,否则一会儿打开网页认证还需要输入此密码:

填写注册信息:

[root@desktop ~]# genkey www.redhat.com
...
output will be written to /etc/pki/tls/certs/www.redhat.com.crt #生成的证书位置
output key written to /etc/pki/tls/private/www.redhat.com.key #生成的锁的位置
...
vim /etc/httpd/conf.d/ssl.conf #修改ssl配置文件,用下面内容替换原来行的内容,将新生成的证书和锁加进配置文件中
101 SSLCertificateFile /etc/pki/tls/certs/www.redhat.com.crt
109 SSLCertificateKeyFile /etc/pki/tls/private/www.redhat.com.key
systemctl restart httpd.service #重启http服务
用https加密方式访问172.25.254.148服务器:



添加完认证证书就可以访问148主机发布的内容了

查看一下我们的ssl证书:


2.设定https虚拟主机和网页重写
1)设定https虚拟主机
vim /etc/httpd/conf.d/login.redhat.conf
<VirtualHost *:443> #虚拟主机,与ssl加密服务同一个端口
ServerName login.redhat.com #域名
DocumentRoot /var/www/virtual/login #服务发布目录
CustomLog "logs/login.logs" combined #日志存放目录
SSLEngine on #打开ssl加密
SSLCertificateFile /etc/pki/tls/certs/www.redhat.com.crt
SSLCertificateKeyFile /etc/pki/tls/private/www.redhat.com.key #两个加密文件
</VirtualHost>
mkdir -p /var/www/virtual/login
vim /var/www/virtual/login/index.html
<h1>ssl虚拟主机</h1>
systemctl restart httpd.service
vim /etc/hosts #客户端主机做一个域名解析
172.25.254.148 login.redhat.com
在客户端浏览器输入https://login.redhat.com

2)网页重写
一般我们在访问一个域名的时候是不会在域名前面加一个https://的,那如何保证访问的安全性呢?
用户访问百度的时候输入www.baidu.com,等网页加载完成后的网址会变成https://www.baidu.com可以看到前面有一个ssl认证(锁)的标识。这里可以用网页重写来实现,用户不用在域名前面特意输入https://就能自动以https安全方式访问。

修改虚拟主机配置文件:
vim /etc/httpd/conf.d/login.redhat.conf
<VirtualHost *:443>
ServerName login.redhat.com
DocumentRoot /var/www/virtual/login
CustomLog "logs/login.logs" combined
SSLEngine on
SSLCertificateFile /etc/pki/tls/certs/www.redhat.com.crt
SSLCertificateKeyFile /etc/pki/tls/private/www.redhat.com.key
</VirtualHost>
<VirtualHost *:80> #网页重写,客户端访问apache默认会访问80端口,因此重写也在这个端口
ServerName login.redhat.com
RewriteEngine on #打开网页重写功能
RewriteRule ^(/.*)$ https://%{HTTP_HOST}$1 [redirect=301] #网页重写规则,^(/.*)$用户输入的内容;https://%{HTTP_HOST}转换成https格式;$1代表用户刚才输入的内容;[redirect=301]临时转换
</VirtualHost>

systemctl restart httpd.service


可以看到输入login.redhat.com的域名,等网页加载完毕变成了https的方式。其实就是本身要访问默认80端口的服务却被重新定向到了443的ssl虚拟主机上,并且强制以https方式访问内容。
581

被折叠的 条评论
为什么被折叠?



