企业级别Linux之Apache服务

1.安装Apache

1.yum install -y httpd httpd-manual
启动Apache服务
2.systemctl start httpd
3.systemctl enable httpd
查看监听端口:
4.ss -antulp| grep httpd

从上图中我们可以知道apache服务监听的是80端口

5.firewall-cmd --list-all  ##列出火墙信息


6.firewall-cmd --permanent --add-service=http   ##永久允许http
7.firewall-cmd --reload    ##重新加载火墙策略

8.firewall-cmd --list-all    ##再次列出火墙信息


/var/www/html/   ##apache的根目录,默认发布文件

此时在另外一台主机上访问httpd的服务主机ip,可以看到Apache的测试页面:


/var/www/html/index.html  ##apache的默认发布文件
测试:
vim /var/www/hteml/index.html   
hello world

3.apache的基础信息

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

日志文件中有登陆日志(access_log)和错误日志(error_log):

实验:修改Apache的监听接口

vim /etc/httpd/conf/httpd.conf

修改默认发布文件:
默认发布文件就是访问apache时候没有指定文件名称是默认访问的文件
这个文件可以指定多个,有访问顺序:
vim /etc/httpd/config/httpd.conf
160 # DirectoryIndex: sets the file that Apache will serve if a directory
161 # is requested.
162 #
163 <IfModule dir_module>
164     DirectoryIndex index.html test.html   ###在后面加上test.html在index
.html文件不在的时候访问test.html文件

vim /var/www/html/test.html

  1 test.html

rm -rf /var/www/html/index.html

systemctl restart httpd

访问172.25.254.106:8080此时的页面是:

注:在两个文件都存在的时候会访问写在前面的文件

 


修改默认发布目录:

vim /etc/httpd/config/httpd.conf
120 DocumentRoot "/westos/html"
124 <Directory "/westos/">
125         Require all granted
126 </Directory>

[root@localhost html]# semanage fcontext -a -t httpd_sys_content_t '/westos(/.*)?'
[root@localhost html]# restorecon -RvvF /westos/

systemctl restart httpd
注:此时的默认发布页也要修改为你在后面设定的默认优先访问的页面

再次访问得到/westos/html/'s page

 

4.apache的虚拟主机

[root@localhost html]# vim /etc/httpd/conf.d/adefault.conf            ###编辑httpd的子配置文件
  1 <VirtualHost _default_:80>                                                         ###虚拟主机的默认页监听端口
  2         DocumentRoot "/var/www/html"                                          ###虚拟主机的根目录设置成/var/www/html
  3         CustomLog "logs/www.westos.com.log" combined        ###虚拟主机默认页的日志存储位置

注:上面写的日志的存储位置是:logs/www.westos.com.log,因为上面已经将虚拟主机的根目录设置成了/var/www/html

这里日志存储的绝对位置是:/var/www/html/logs/www.westos.com.log
  4 </VirtualHost>

[root@localhost html]# vim /etc/httpd/conf.d/news.westos.conf   
  1 <VirtualHost *:80>
  2         ServerName news.westos.com
  3         DocumentRoot "/var/www/virtual/news.westos.com/html/"
  4         CustomLog "logs/news.westos.com.logs" combind
  5 </VirtualHost>
  6 <Directory "/var/www/virtual/news.westos.com/html">
  7         Require all granted
  8 </Directory>

[root@http_server www]# mkdir -p /var/www/virtual/linux.westos.com/html/

vim /var/www/virtual/linux.westos.com/html/index.html

1 welcome linux.westos.com's page

测试:访问linux.westos.com

在测试端要有linux.westos.com网址的解析。

vim /etc/hosts    ###编辑本地地址解析

下面是添加第二个虚拟主机,步骤和第一个虚拟主机一样。

 cp linux.conf c.conf                      ###复制linux的配置文件到c.conf
 vim c.conf          将文件中的linux字符全部修改为c字符,vim命令:%s/linux/c/g 如下图:

mkdir -p /var/www/virtual/c.westos.com/html     ##创建c.westos.com 的家目录

vim /var/www/virtual/c.westos.com/html/index.html      ##编辑默认访问的html文件

systemctl restart httpd                                               ##重启httpd服务

Apache内部的访问控制:

1.针对与主机的访问控制

  1 <VirtualHost _default_:80>
  2         DocumentRoot "/var/www/html"
  3 </VirtualHost>
  4 <Directory "/var/www/html">
  5         Require all granted    ###列表读取顺序,后读取的列表会覆盖与前>面读取的内容相同的部分
  6         Order Allow,Deny
  7         Allow from all
  8         Deny from 172.25.254.6
  9 </Directory>

在172.25.254.6主机上面访问(黑名单用户)

在172.25.254.207上面访问是可以访问的

上面的设置是将172.25.254.6加入到黑名单中,其他中组合情况读者可以自行设置,实验

上面的访问控制是针对ip的,这种访问控制的机制是有危险性的,可以用ip地址掩饰来获取访问权限。下面介绍基于用户方式的访问控制

2.用户方式的访问控制

htpasswd -cm /etc/httpd/htuser admin   ##创建认证文件,创建用户admin

htpasswd -m /etc/httpd/htuser admin1

vim adefault.conf

 10 <Directory "/var/www/html/admin">                                              ##目录:/var/www/html/admin以下的设置对于这个目录生效
 11         AuthUserFile "/etc/httpd/htuser"                                           ##认证文件是:/etc/httpd/htuser,这个文件的名称是自己设定的
 12         AuthName     "Please input username and password"      ##提示信息
 13         AuthType     Basic                                                                  ##认证方式:基本
 14         Require      valid-user                                                            ##限制用户:可以使用的用户(文件中的所有用户)
 15  ##       Require user      admin                                                              ##只有用户admin可以登陆

16 </Directory>

实验结果:

此时admin和admin1都可以登陆而设置了只有admin1可以登陆的时候会有下面结果:(禁止admin登录)

####apache支持的四种语言###
1.html
2.php
[root@localhost mnt]# vim /var/www/html/index.php
 <?php
          phpinfo();
 ?>
yum install php -y
systemctl restart httpd

测试:
172.25.254.106/index.php

在没安装php软件的时候访问172.25.254.106/index.php时候会出现下面的结果:


安装之后访问,得到下面的结果:

3.cgi
mkdir -p /var/www/html/cgi
[root@localhost mnt]# semanage fcontext -a -t httpd_sys_script_exec_t '/var/www/html/cgi(/.*)?'
[root@localhost mnt]# restorecon -RvvF /var/www/html/cgi/
[root@localhost mnt]# vim /var/www/html/cgi/index.cgi
 #!/usr/bin/perl
 print "Content-type:text/html\n\n";
 print `date`;
[root@localhost mnt]# chmod +x /var/www/html/cgi/index.cgi
[root@localhost mnt]# /var/www/html/cgi/index.cgi
Content-type:text/html

Tue Feb 19 01:49:21 EST 2019
[root@localhost mnt]# vim /etc/httpd/conf.d/adefault.conf
 18 <Directory "/var/www/html/cgi">
 19         Options +ExecCGI
 20         AddHandler cgi-script .cgi
 21 </Directory>

systemctl restart httpd

测试:172.25.254.106/cgi/index.cgi

4.wsgi
yum install mod_wsgi -y
[root@localhost mnt]# vim /var/www/html/cgi/westos.wsgi
#!/usr/bin/env python

import time

def application (environ, start_response):
  response_body = 'UNIX EPOCH time is now: %s\n' % time.time()
  status = '200 OK'
  response_headers = [('Content-Type', 'text/plain'),
                      ('Content-Length', '1'),
                      ('Content-Length', str(len(response_body)))]
  start_response(status, response_headers)
  return [response_body]

注:这只是一个脚本文件,作为测试,需要的话可以自行拷贝,这里没有加上行号。

chmod +x westos.wsgi            ###给脚本文件加上运行权限
[root@localhost mnt]# vim /etc/httpd/conf.d/adefault.conf
  1 <VirtualHost _default_:80>
  2         DocumentRoot "/var/www/html"
  3         WSGIScriptAlias /WSGI   /var/www/html/cgi/westos.wsgi
  4 </VirtualHost>

systemctl restart httpd

测试:
http://172.25.254.100/WSGI

complete!
#7.https
yum install mod_ssl -y
yum install crypto-utils -y
genkey www.westos.com


vim /etc/httpd/conf.d/ssl.conf
101 SSLCertificateFile /etc/pki/tls/certs/www.westos.com.crt
108 SSLCertificateKeyFile /etc/pki/tls/private/www.westos.com.key

systemctl stop firewalld

测试:

点击Confirm Security Exception,重新访问

#8.网址自动加密
cp -p news.westos.conf z_login.westos.conf
vim z_login.westos.conf
  1 <VirtualHost *:443>
  2         ServerName login.westos.com
  3         DocumentRoot /var/www/virtual/login.westos.com/html/
  4         CustomLog "logs/login.westos.com.logs" combind
  5         SSLEngine on
  6         SSLCertificateFile /etc/pki/tls/certs/www.westos.com.crt
  7         SSLCertificateKeyFile /etc/pki/tls/private/www.westos.com.key
  8 </VirtualHost>
  9 <Directory "/var/www/virtual/login.westos.com/html">
 10         Require all granted
 11 </Directory>
 12 <VirtualHost *:80>
 13         ServerName login.westos.com
 14         RewriteEngine On
 15         RewriteRule ^(/.*)$ https://%{HTTP_HOST}$1 [redirect=301]
 16 </VirtualHost>

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

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值