linux系统之apache基本配置及语言支持及虚拟主机 访问控制
一.apache的安装
yum install httpd -y
systemctl start httpd
systemctl stop firewalld
systemctl enable httpd
systemctl disable firewalld
二.apache的基础信息
主配置目录:/etc/httpd/conf 主配置文件:/etc/httpd/conf/http.conf 子配置目录:/etc/httpd/conf.d/ 子配置文件:/etc/httpd/conf.d/*.conf 默认发布目录:/var/www/html/ 默认发布文件:index.html 默认端口:80 默认安全上下文:httpd_sys_content_t 程序开启默认用户:apache apache日志:/etc/http/logs/* <1>.修改默认端口: vim /etc/httpd/conf/httpd.conf 43 Listen 8080 ###修改默认端口为8080
<2>.修改默认发布文件: 默认发布文件就是访问apache时没有指定文件名称时默认访问的文件 这个文件可以指定多个,有访问先后顺序! vim /etc/httpd/conf/httpd.conf 164 DirectoryIndex index.html test.html ##当index.html不存在时访问test.html
<3>.修改默认发布目录 vim /etc/httpd/conf/httpd.conf 120 DocumentRoot "/www/html" 121 <Directory "/www"> 122 Require all granted 123 </Directory>
semanage fcontext -a -t httpd_sys_content '/www(/.*)?'
###修改安全上下文 storecon -RvvF /www/
###**刚才修改的安全上下文
三.apache的虚拟主机
vim /var/www/html/index.html
<h1> 恭喜你闯关成功!!! </h1>
mkdir /var/www/virtual/linux.bb.com/html -p mkdir /var/www/virtual/java.bb.com/html -p
vim /var/www/virtual/linux.bb.com/html/linux.html
<h1> Welcome to linux.bb.com !</h1>
vim /var/www/virtual/java.bb.com/html/java.html
<h1> Welcome to java.bb.com !</h1>
vim /etc/httpd/conf/httpd.conf164 DirectoryIndex index.html linux.html java.html ###修改默认发布文件
356 <VirtualHost _default_:80>
357 DocumentRoot "/var/www/html"
358 CustomLog "logs/www.bb.com.log" combined
359 </VirtualHost>
360 <VirtualHost *:80>
361 ServerName linux.bb.com
362 DocumentRoot "/var/www/virtual/linux.bb.com/html"
363 CustomLog "logs/linux.bb.com.log" combined
364 </VirtualHost>
365 <Directory "/var/www/virtual/linux.bb.com/html">
366 require all granted
367 </Directory>
368 <VirtualHost *:80>
369 ServerName java.bb.com
370 DocumentRoot "/var/www/virtual/java.bb.com/html"
371 CustomLog "logs/java.bb.com.log" combined
372 </VirtualHost>
373 <Directory "/var/www/virtual/java.bb.com/html">
374 require all granted
375 </Directory>
systemctl restart httpd
测试:
浏览器所在主机(测试主机)做好本地解析
vim /etc/hosts
172.25.254.117 网址1 网址2 网址3
测试结果:
四.apache内部的访问控制
<1>针对主机的访问控制 vim /etc/httpd/conf/httpd.conf <Directory "/var/www/html/"> order deny,allow ###列表读取顺序,后读取的列表会覆盖限制内容的重复部分 Allow from 172.25.254.17 ###只允许此ip能访问 Deny from all </Directory>
<2>用户方式的访问控制 vim /etc/httpd/conf/httpd.conf <Directory "/var/www/html/"> order deny,allow Allow from 172.25.254.17 ###只允许此ip能访问 Deny from all </Directory> <Directory "/var/www/html/admin"> AuthUserFile /etc/httpd/userpass AuthName "please input your username and passwd!" ###对话框弹出提示 AuthType basic ###最基本的认证方式 #Require user admin ###允许admin用户 Require valid-user ###允许有效的admin用户 </Directory> htpasswd -cm /etc/httpd/userpass admin ###首次建立用户加-cm htpasswd -m /etc/httpd/userpass admin2 ###后续建立不加c cat /etc/httpd/userpass ###查看建立的用户信息 mkdir /var/www/html/admin vim /var/www/html/admin/index.html systemctl restart httpd.service
测试结果:
测试结果:
五.apache默认支持的语言
<1>html:超文本标记语言 <2>php:超文本预处理器
PHP(外文名:PHP: Hypertext Preprocessor,中文名:“超文本预处理器”)是一种通用开源脚本语言。
语法吸收了C语言、Java和Perl的特点,利于学习,使用广泛,主要适用于Web开发领域。
PHP 独特的语法混合了C、Java、Perl以及PHP自创的语法。
用PHP做出的动态页面与其他的编程语言相比,PHP是将程序嵌入到HTML(标准通用标记语言下的一个应用)文档中去执行,
PHP还可以执行编译后代码,编译可以达到加密和优化代码运行,使代码运行更快。
[[email protected] conf.d]# vim /var/www/html/index.php <?php phpinfo(); ?>
[[email protected] conf.d]# yum install php -y ###安装php
vim /etc/httpd/conf/httpd.conf
systemctl restart httpd.service
测试: 172.25.254.117/index.php ###可以看见phpinfo()的结果
<3>cgi:公共网关接口
CGI是外部应用程序(CGI程序)与WEB服务器之间的接口标准,是在CGI程序和Web服务器之间传递信息的过程。
mkdir /var/www/html/cgi semanage fcontext -a -t httpd_sys_script_exec_t '/var/www/html/cgi(/.*)?' ###修改安全上下文 restorecon -RvvF /var/www/html/cgi/ vim /var/www/html/cgi/index.cgi #!/usr/bin/perl print "Content-type: text/html\n\n"; print `date`; chmod +x /var/www/html/cgi/index.cgi /var/www/html/cgi/index.cgi ###执行脚本看是否运行正常
vim /etc/httpd/conf/httpd.conf
<Directory "/var/www/html/cgi">
Options +ExecCGI
AddHandler cgi-script .cgi
</Directory>
<IfModule dir_module>
DirectoryIndex index.html text.html index.php index.cgi
</IfModule>
systemctl restart httpd.service
测试结果:
六.设定https虚拟主机并设定网页重写
^(/.*)$ ###客户在浏览器地址栏输入的所有字符
https:// ###强制客户加密访问
%{HTTP_HOST} ###客户请求主机
$1 ###表示^(/.*)$的值
[redirect=301] ###临时重写成https 302永久转换