curl -I www.baidu.com ###查看所用的服务类型
查看服务端口: netstat -lntup |grep httpd
apache日志: /etc/httpd/logs/*
注意:如果selinux未关,修改安全上下文为httpd_sys_content_t
一、介绍
apache是企业中常用的web服务,用来提供http://(超文本传输协议)
二、apache的安装
yum install httpd -y #安装apache软件包
systemctl start httpd #打开服务
systemctl enable httpd #开机自启动
systemctl stop firewalld #关闭防火墙
systemctl disable firewalld #开机不启动防火墙
yum install httpd -y #安装apache软件包
systemctl start httpd #打开服务
systemctl enable httpd #开机自启动
firewalld-cmd --permanent --add-service=http #在防火墙策略中添加http和https服务
firewalld-cmd --permanent --add-service=https
firewalld-cmd --reload #重新加载策略
测试:
访问apache默认页面http://172.25.254.110
apache还有一个使用手册:需要安装httpd-manual包
访问http://主机ip/manual可以查看,自带的手册,点中文翻译没用
apache手册中文版,在百度中搜索apache手册,语言转换即可:
三、apache的基础信息
四、配置apache服务
1.在默认发布目录发布内容
vim /var/www/html/index.html ##默认发布文件
hello world
主配置目录: /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/*
systemctl restart httpd
访问http://172.25.254.110
netstat -antlupe | grep httpd ##查看当前http服务的网络接口
2.修改默认端口
vim /etc/httpd/conf/httpd.conf
42 Listen 8080 ##修改默认端口为8080
[root@apache html]# firewall-cmd --permanent --add-port=8080/tcp
[root@apache html]# firewall-cmd --reload
[root@apache html]# systemctl restart httpd
测试:
3.修改默认发布文件:
恢复实验环境:将apache的端口恢复为80
默认发布文件就是访问apache时没有指定文件名称时默认访问的文件。
这个文件可以指定多个,有访问顺序
vim /etc/httpd/conf/httpd.conf
164 DirectoryIndex westos.html index.html
##当index.html不存在时,访问westos.html
##如果将westos.html放到index.html前面,
在两个文件都存在的情况下会默认访问westos.html里面的内容
[root@apache html]# vim westos.html
[root@apache html]# cat westos.html
westos.html
[root@apache html]# ls
index.html westos.html
[root@apache html]# rm -f index.html
[root@apache html]# ls
westos.html
##如果没编辑/etc/httpd/conf/httpd.conf(没添加加westoshtml),
要想看到westos的页面,则在浏览器中输入:http端IP/westos.html 即可
[root@apache html]# systemctl restart httpd.service 修改完配置文件记得一定要重启服务生效
ctrl shift delete 清除缓存
测试:
4.修改默认发布目录
vim /etc/httpd/conf/httpd.conf
120 DocumentRoot "/www/html"
121
122 Require all granted
123
将119行的DocumentRoot "/var/www/html"注释掉复制到下面编辑新的默认发布目录,
再将124-128行的内容复制到,121行到125行,
在删掉AllowOverride None # Allow open access:,
将/var/www 改为/www/html即可
##将原本的DocumentRoot "/var/www/html"替换为以上内容
mkdir /www/html -p
vim /www/html/index.html
systemctl restart httpd
为了方便期间我的selinux设置为disabled
注意:如selinux为enforcing则操作如下(改为enforcing重启)
将新建的文件夹的安全上下文改为与/var/www/相同即可
[root@desktop ~]# ls -Zd /var/www/html/
drwxr-xr-x. root root system_u:object_r:httpd_sys_content_t:s0 /var/www/html/
[root@desktop ~]# ls -Zd /www/html/
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
测试
五、apache的虚拟主机
index.html:apache默认发布文件
news.conf 或 music.conf:apache子配置文件
1.
恢复默认发布目录,并创建默认文件index.html
[root@desktop conf.d]# cat /var/www/html/index.html
172.25.254.110
mkdir /var/www/virtual/news/html -p #虚拟主机放置路径
mkdir /var/www/virtual/music/html -p #第二个虚拟主机路径
vim /var/www/virtual/news/html/index.html #建立虚拟主机发布文件
news.westos.com
vim /var/www/virtual/music/html/index.html
music.westos.com
cd /etc/httpd/conf.d/ #进入apache服务子配置目录
vim adefault.conf #建立默认发布目录配置文件
DocumentRoot /var/www/html #发布文件路径
CustomLog "logs/adefault.log" combined #日志路径,这里写相对路径,内容在/etc/httpd/logs/*.log里面
vim news.conf #建立虚拟发布目录文件
ServerName news.westos.com #虚拟主机的域名
DocumentRoot /var/www/virtual/news/html #发布目录
Customlog "logs/news.log" combined #站点日志,combined表示四种日志类型的合集
Require all granted #建立认证关系
vim music.conf
1
2 ServerName music.westos.com
3 DocumentRoot /var/www/virtual/music/html
4 Customlog "logs/music.log" combined
5
6
7 Require all granted
8
systemctl restart httpd.service
测试:
在客户端访问以上网页时,做好本地解析:
vim /etc/hosts
做完后清空环境
http端:
浏览器端:
恢复apache主配置文件的默认发布目录
六、apache访问限制(http端IP:172.25.254.110 浏览器端:172.25.254.210)
重新编辑apache默认发布文件
1.通过黑白名单
vim /etc/httpd/conf.d/a_default.conf
DocumentRoot "/var/www/html"
order deny,allow #deny和allow哪个在前就先读取下面的哪个配置
allow from 172.25.254.210##允许210这台主机访问
deny from all ##拒绝所有
测试端:
IP(210)
IP(57)
直接访问html文件:
2.通过密码
1)创建密码文件:
[root@fuwu 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@fuwu conf.d]# cat /etc/httpd/userpass
admin:$apr1$GNsdwvzs$ONpK.ap5kzyJYUBe0XPRg/
admin1:$apr1$8KpmN94R$KRkKghToPsRf9X4vCdhGB0
可以查看一下,系统中是没有admin用户的,这是http服务建立的
[root@fuwu conf.d]# id admin
id: admin: no such user
2)增加配置
mkdir /var/www/html/admin
vim /var/www/html/admin/index.html
改革春风吹满地admin
vim /etc/httpd/conf/httpd.conf
DocumentRoot "/var/www/html"
# Require all granted
AuthUserFile /etc/httpd/userpass #密码存放位置
AuthName "Input Name and Password" #登陆前提示语
AuthType basic #(最小化)基本模式
Require valid-user #允许所有/etc/httpd/userpass里面的用户
#Require user admin #只允许/etc/httpd/userpass里面的admin用户
访问http://172.25.254.142/admin,需要密码登陆,输入刚才创建的用户和密码即可
输入用户和密码:admin 和******
七、apache支持的语言(html,php)
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
在客户端(210):
2.cgi
cd /var/www/cgi-bin/
vim index.cgi wq退出保存,不编辑
chmod +x index.cgi #增加可执行权限
vim index.cgi #建立相关文件
#!/usr/bin/perl
print "Content-type: text/html\n\n";
print `date`; #表示执行date这个命令(脚本)
vim /etc/httpd/conf.d/a_default.conf
[root@fuwu cgi-bin]# cat /etc/httpd/conf.d/a_default.conf
DocumentRoot "/var/www/html"
CustomLog logs/default.log combined
Options ExecCGI #告诉系统可以执行index.cgi中的命令(脚本)AddHandler cgi-script .cgi #识别的文件类型是cgi-script或以cgi结尾的
vim /etc/httpd/conf/httpd.conf
164 DirectoryIndex index.php index.html index.cgi
systemctl restart httpd.service
测试:可见执行了`date`这个命令,这里也可以是一个脚本执行后的结果
[root@fuwu cgi-bin]# systemctl restart httpd
测试:
3.其他
还支持jsp和asp,但不能直接使用,还需要中间键(程序)支持,如tomcat等。
八、https(ssl加密认证)
1.ssl制作与使用
vim /var/www/html/index.html
yum install mod_ssl -y #安装ssl认证模块
yum install crypto-utils -y #安装ssl生成工具
genkey www.westos.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.110服务器:
添加完认证证书就可以访问110主机发布的内容了
查看一下我们的ssl证书:
2.设定https虚拟主机和网页重写
1)设定https虚拟主机
vim /etc/httpd/conf.d/login.westos.conf
ServerName login.westos.com #域名
DocumentRoot /var/www/virtual/login #服务发布目录
CustomLog "logs/login.logs" combined #日志存放目录
SSLEngine on #打开ssl加密
SSLCertificateFile /etc/pki/tls/certs/www.westos.com.crt
SSLCertificateKeyFile /etc/pki/tls/private/www.westos.com.key #两个加密文件
mkdir -p /var/www/virtual/login
vim /var/www/virtual/login/index.html
172.25.254.110 login.westos.com
在客户端浏览器输入https://login.westos.com
2)网页重写
一般我们在访问一个域名的时候是不会在域名前面加一个https://的,
那如何保证访问的安全性呢?
用户访问百度的时候输入www.baidu.com,
等网页加载完成后的网址会变成https://www.baidu.com可以看到前面有一个 ssl认证(锁)的标识。
这里可以用网页重写来实现,用户不用在域名前面特意输入https://就能自动以https安全方式访问。
修改虚拟主机配置文件:
vim /etc/httpd/conf.d/login.redhat.conf
ServerName login.westos.com
DocumentRoot /var/www/virtual/login
CustomLog "logs/login.logs" combined
SSLEngine on
SSLCertificateFile /etc/pki/tls/certs/www.westos.com.crt
SSLCertificateKeyFile /etc/pki/tls/private/www.westos.com.key
ServerName login.westos.com
RewriteEngine on #打开网页重写功能
RewriteRule ^(/.*)$ https://%{HTTP_HOST}$1 [redirect=301] #网页重写规则,^(/.*)$用户输入的内容;https://%{HTTP_HOST}转换成https格式;$1代表用户刚才输入的内容; [redirect=301]临时转换
systemctl restart httpd.service
可以看到输入login.westos.com的域名,等网页加载完毕变成了https的方式。
其实就是本身要访问默认80端口的服务却被重新定向到了443的ssl虚拟主机上,
并且强制以https方式访问内容。