Apache(www)服务

1、基础知识

主流的一般是apache nginx 公司的网站,其它一些是在上述基础上进行的二次开发。
apache:企业中常用的web服务,用来提供http://(超文本传输协议)
http:超文本传送协议(HyperText Transfer Protocol)是一种通信协议,它允许将超文本标记语言文档从web服务器传送到wel浏览器。:
安装apache软件,就使主机提供超文本传输协议成为web服务器
浏览器默认访问接口80,默认访问目录/var/www/html,默认发布文件index.html

2、apache的安装部署

yum install httpd -y                             ##安装apache软件
yum install httpd-manual                         ##安装apache的手册
systemctl start httpd                            ##开启服务
systemctl enable httpd                           ##开启自启动服务
firewall-cmd --permanebt --add-service=http      ##永久允许http
firewall-cmd --permanent --add-service=https     ##永久允许https
firewall-cmd --reload                            ##火墙重新加载策略
firewall-cmd --list-all                          ##查看火墙策略
  1. 安装Apache软件和Apache的手册
    在这里插入图片描述

  2. 开启自启动服务
    在这里插入图片描述

  3. 火墙永久允许http在这里插入图片描述

  4. 火墙重新加载策略
    在这里插入图片描述

     cd /var/www/html        ##apache的/目录,默认发布目录
     vim index.html          ##apache的默认发布文件
          <h1> hello world </h1>   ##发布文件内容,<h1>   </h1>表示文字大小
    
  5. 在Apache的默认发布目录下编辑内容
    在这里插入图片描述

  6. 测试: http://172.25.254.160 在这里插入图片描述

  7. http://172.25.254.141/manual ##apache手册
    添加,往哪个标签添加 ,协议,授权

3、 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/*
  1. 修改默认端口:

     netstat -antlupe | grep httpd          ##查看httpd服务默认是80端口
     vim /etc/httpd/conf/httpd.conf
             42 Listen 8080                 ##修改默认端口为8080
     firewall-cmd --permanent --add-port=8080/tcp   ##火墙允许8080端口通过
     firewall-cmd --reload
    

(1)查看http服务的默认端口
在这里插入图片描述
(2)修改默认端口为8080
在这里插入图片描述
(3)更改火墙设置
在这里插入图片描述
(4)检测:172.25.254.160:8080
在这里插入图片描述
当selinux为警告状态时,可以随意修改为自己需要的端口号
当selinux为强制状态时,如果想要修改默认端口为6666,但是查看到的所有端口没有6666,那么做以上操作修改默认端口是不够的,还需要添加端口

setenforce 1   ##设置selinux为强制状态
firewall-cmd --permanent --add-port=6666/tcp    ##在火墙策略中加入6666端口
firewall-cmd --reload
semanage port -l | grep httpd       ##查看提供httpd服务的端口,没有6666,所以此时不能访问6666
semanage port -a -t http_port_t -p tcp 6666    ##添加6666端口
systemctl restart httpd     ##重启http

(5)设置selinux为j警告状态
在这里插入图片描述
(6)在火墙策略中加入6666端口
在这里插入图片描述
(7)修改默认端口为6666
在这里插入图片描述
(8)重启服务后检测:172.25.254.160:6666,此时可以访问
在这里插入图片描述
(9)精sellinux改成强制状态
在这里插入图片描述
(10)此时重启服务出错
在这里插入图片描述
(11)因为查看提供httpd服务的端口,没有6666,所以此时不能访问6666,添加一个6666端口
在这里插入图片描述
(12)重启服务后就可以访问了

  1. 修改默认发布文件:
    默认发布文件就是访问Apache时没有指定文件名称时默认访问的文件,这个文件可以指定多个,有访问顺序
    实验前先讲默认端口恢复成80 : Listen 80

     vim /etc/httpd/conf/httpd.conf
          164 DirectoryIndex westos.html index.html   ##添加默认发布文件是westos.html,这个文件优先级大于index.html
     cd /var/www/html    
     vim westos.html       ##编辑默认发布文件
             <h1>hello i am westos.html</h1>
     systemctl restart httpd
    

(1)添加默认发布文件是westos.html,这个文件优先级大于index.html
在这里插入图片描述
(2)编辑westos默认发布文件在这里插入图片描述
(3)重启服务后检测:
172.25.254.160 可以查看到westos.html
在这里插入图片描述
当删除westos.html后172.25.254.160 可以查看到index.html的内容
在这里插入图片描述

  1. 修改默认发布目录

    mkdir /westos/web/html -p             ##新建目录,用于发布
    vim /westos/web/html/westos.html      ##在新建目录中新建默认发布文件       westos.html
      <h1>hello i am westos.html</h1>     ##发布文件的内容
    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>
    systemctl restart httpd
    semanage fcontext -a -t httpd_sys_content_t '/westos(/.*)?'  ##因为selinux的作用,需要修改安全上下文
    restorecon -RvvF /westos/
    

(1)在新建目录中新建默认发布文件: westos.html
在这里插入图片描述
(2)修改默认发布目录是/westos/web/html,并认证给此目录授权。
在这里插入图片描述
(3)修改安全上下文
在这里插入图片描述
(4)重启服务后检测:172.25.254.160 此时可以查看到westos.html
在这里插入图片描述

4、apache的虚拟主机

  1. 更改客户端解析文件 /etc/hosts/
    172.25.254.160 www.westos.com news.westos.com music.westos.com
    在这里插入图片描述

  2. 服务端还原实验环境:
    rm -fr /etc/httpd/conf/httpd.conf
    yum reinstall httpd -y
    在这里插入图片描述

  3. 在/var/www/新建虚拟主机路径
    mkdir westos.com/news/html -p ##news.westos.com的默认发布目录
    mkdir westos.com/music/html -p ##music.westos.com的默认发布目录
    在这里插入图片描述

  4. 编辑默认发布文件
    vim westos.com/news/html/index.html ##new.westos.com的默认发布文件
    vim westos.com/music/html/index.html ##music.westos.com的默认发布文件
    在这里插入图片描述

  5. cd /etc/httpd/conf.d/ ##切换到apache的子配置目录
    vim a_default.conf ##新建Apache子配置文件,172.25.254.160的默认发布配置

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

在这里插入图片描述

重启服务后检测会看到默认的发布文件的内容
在这里插入图片描述
在这里插入图片描述

  1. vim news.conf ##news.westos的发布配置

    <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>
    

在这里插入图片描述
重启服务后会看到news的默认文件内容
在这里插入图片描述

7.vim music.conf ## music.westos的发布配置
cp news.conf music.conf复制news的内容,将所有的news改成music
在这里插入图片描述
在这里插入图片描述
重启服务后或看到music默认发布文件的内容
在这里插入图片描述

5、apache的访问控制

(1)基于ip
vim /etc/httpd/conf.d/a_default.conf

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

在这里插入图片描述
重启后检测:真机60打开浏览器输入172.25.254.160,不能重看到发布内容
在这里插入图片描述
(2)基于用户身份

htpasswd -cm http_userlist admin1    ##创建httpd用户列表http_userlist,列表中添加用户admin1,设置admin的密码
htpasswd -m http_userlist admin2  ##在列表中添加用户admin2,当再次创建用户时,不需要-c,-c表示create,已经创建过就不再需要创建用户信息文件了
cat http_userlist     ##查看用户的密码  

在这里插入图片描述
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>

在这里插入图片描述
服务重启后检测:172.25.254.160此时输入正确的用户及密码,可以访问成功
在这里插入图片描述
在这里插入图片描述
ctrl+shift+delete清空浏览器缓存,便于多次访问测试
检测之后,将内容注释,还原实验环境

6、apache支持的语言

  1. html

  2. php
    (1)yum install php -y ##安装php
    在这里插入图片描述
    (2)vim /var/www/html/index.php 编辑php的默认发布文件

    <?php
            phpinfo();
    ?>
    

在这里插入图片描述
(3)systemctl restart httpd重启http后,访问172.25.254.160/index.php ,就可以看到php的内容。
在这里插入图片描述

  1. cgi
    (1)在cgi-bin目录下建立一个cgi默认发布文件,并给他一个执行权限
    在这里插入图片描述
    编辑cgi默认发布文件
    在这里插入图片描述
    重启网络后测试 :
    在这里插入图片描述
    (2)新建自定义cgi发布目录

    mkdir -p /var/www/html/cgi  
    vim /var/www/html/cgi/index.cgi  ##新建cgi默认发布文件
     	 #!/usr/bin/perl           
     	 print "Content-type: text/html\n\n";  ##打印文本
     	 print`date`;       ##执行命令date
    

在这里插入图片描述

chmod +x /var/www/html/cgi/index.cgi  ##执行权限
semanage fcontext -a -t httpd_sys_script_exec_t '/var/www/html/cgi(/.*)?'    ##修改安全上下文,这是个执行的文件
restorecon -RvvF /var/www/html/cgi   ##重新读取文件/var/www/html/cgi

在这里插入图片描述
在这里插入图片描述
执行下脚本确保脚本运行正常

vim /etc/httpd/conf.d/a_default.conf  ##编辑默认发布目录配置文件
	 <Directory "/var/www/html/cgi">      ##针对/var/www/html/cgi目录的描述
	        Options ExecCGI        ##执行cgi
	        AddHandler cgi-script .cgi    ##文件类型为cgi-script和.cgi
	 </Directory>

在这里插入图片描述
重启服务后测试:172.25.254.160/cgi/index.cgi
可以查看到脚本运行结果,脚本是显示时间,重复执行,时间在变化。 在这里插入图片描述

7、.apache的加密访问

  1. yum install mod_ssl -y ##安装加密软件
    在这里插入图片描述

  2. 此时可以看见在/etc/httpd/conf.d下有一个ssl.conf文件
    在这里插入图片描述

  3. yum install crypto-utils -y
    在这里插入图片描述

  4. genkey www.westos.com
    在这里插入图片描述

  5. 运行完后会产生钥匙
    在这里插入图片描述

  6. vim ssl.conf

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

在这里插入图片描述
7. 重启服务后测试https://172.25.254.141会发现登录的钥匙是自己的/www.westos.com
在这里插入图片描述

8、网页重写

  1. 添加虚拟主机
    在/var/www/westos.com创建 login目录,在login目录下创建html
    在这里插入图片描述

  2. vim login/html/index.html ## 编辑默认发布文件
    在这里插入图片描述

  3. 在 /etc/httpd/conf.d/创建login.conf
    cp news.conf login.conf 将所有的news变成login
    在这里插入图片描述

    vim login.conf 
       <VirtualHost *:443>
             ServerName login.westos.com
             DocumentRoot /var/www/westos.com/login/html
             CustomLog logs/login.log combined
       </VirtualHost>
       <Directory "/var/www/westos.com/login/html">
             Require all granted
       </Directory>
    

    systemctl restart httpd

  4. 检测:真机 /etc/hosts将解析文件写好
    此时可以在浏览器中访问虚拟主机login.westos.com
    在这里插入图片描述

  5. 配置网页重写

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

在这里插入图片描述

9、wsgi

wsgi是cgi的加密

   cd /var/www/cgi-bin/         ##到cgi-bim目录下
   rm -rf index.*               ##把原来的文件删除
   网页搜索172.25.254.250/pub    ##在网页上找到webapp.wsgi脚本
   wget http://172.25.254.250/pub/materials/webapp.wsgi   ##下载脚本到cgi-bin目录下
   python webapp.wsgi 
   chmod +x webapp.wsgi          ##给该文件加一个执行权限
   yum install mod_wsgi.x86_64   ##安装wsgi软件
   systemctl restart httpd.service    
   cd /etc/httpd/conf.d          ## 到conf.d目录下
   vim webapp.conf          	    ## 新建一个webapp.conf文件
	<VirtualHost *:80>
		ServerName webapp.westos.com   ##访问时搜索的名字,指向的是WSGIScriptAlias,即/var/www/cgi-bin/webapp.wsgi。
		DocumentRoot /var/www/cgi-bin
		CustomLog logs/webapp.log combined
		WSGIScriptAlias / /var/www/cgi-bin/webapp.wsgi
	</VirtualHost>
  1. 将webapp.wsgi脚本放到 cgi-bim目录下
    在这里插入图片描述
  2. 给该文件加一个执行权限
    在这里插入图片描述
  3. 安装wsgi软件
    在这里插入图片描述
  4. 在conf.d目录下, 新建一个webapp.conf文件。
    在这里插入图片描述
  5. 在测试的主机上配置/etc/hosts解析文件 在这里插入图片描述
  6. 重启服务后测试
    在这里插入图片描述

10、论坛硬盘的安装

  1. scp root@172.25.254.60:/home/kiosk/Desktop/ff/* /var/www/html ##下载论坛安装包
    在这里插入图片描述
    cd /etc/httpd/conf.d
    cp -p news.conf bbs.conf ##创建bbs.conf 在这里插入图片描述
    vim bbs.conf ##将所有的news改称bbs

    <VirtualHost *:80>
          ServerName 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>
    

在这里插入图片描述

  1. mkdir /var/www/westos.com/bbs/html -p ##创建bbs下的html
  2. cd /var/www/westos.com/bbs/html ##进入到新创建的目录下
    在这里插入图片描述
  3. mv /root/Desktop/Discuz_X3.2_SC_UTF8.zip . ##将安装包放在该目录下
  4. unzip Discuz_X3.2_SC_UTF8.zip ##解压该压缩包
    rm -rf Discuz_X3.2_SC_UTF8.zip ##解压后将原来的压缩包删除 在这里插入图片描述
  5. cd readme/ ##可以在该文件下的readme.txt中查看安装方法
    在这里插入图片描述
  6. cd upload/ ##因为upload已经在该目录下,所以就发布了
  7. chmod -R 777 config/
    chmod -R 777 data/ ## 给config 和 data 文件一个777的权限
    在这里插入图片描述
  8. systemctl restart httpd.service 重启服务后查看
  9. 测试: 给测试的主机解析文件
    在这里插入图片描述
    这时测试并没有成功,可以看上边的未成功步骤,然后操作
    在这里插入图片描述
    11. setsebool -P httpd_anon_write on ##将http的写的权限打开
    setsebool -P httpd_sys_script_anon_write on 在这里插入图片描述
    12. setenforce 0 ##将sellinux设置成警告状态
  10. chmod -R 777 uc_client/ ## 给这两个文件执行权限
    chmod -R 777 uc_server/
    因为该主机上已经安装了数据库,所以不用操作以下步骤,直接安装bbs即可
  11. yum install mariadb-server -y ##安装数据库
    vim /etc/my.cnf
    skip-networking=1 ##将数据库的接口关闭
    systemctl restart mariadb
  12. netstat -atnlupe | grep mysql ##这时查看所有的mysql接口都关闭
    mysql_secure_installation 安全初始化数据库
  13. yum search php
    yum install php-mysql.x86_64 -y
  14. systemctl restart mariadb.service
    systemctl restart httpd.service
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

11、正向代理:通过客户 (翻墙)

翻墙 squid:用另一台主机去访问不能访问的。用主机去访问另一台主机缓存下来的东西
代理端:

  1. vim /etc/sysconfig/network-scripts/ifcfg-eth0 ##配置代理端网络
    设置网关和DNS ,让其可以上网。

     DEVICE=eth0
     BOOTPROTO=none
     IPADDR=172.25.254.170
     NETMASK=255.255.255.0
     GATEWAY=172.25.254.60
     DNS1=114.114.114.114
     ONBOOT=yes
     TYPE=Ethernet
     USERCTL=yes
     PEERDNS=yes
     IPV6INIT=no
     PERSISTENT_DHCLIENT=1
    

在这里插入图片描述

  1. systemctl restart network ##重启网络后
    route -n ## 查看网关 在这里插入图片描述
  2. ping www.baidu.com ##此时可以ping通百度
    在这里插入图片描述
  3. yum install squid -y  ##安装squid
    

在这里插入图片描述

  1. vim /etc/squid/squid.conf ## 修改squid的配置文件
    56 http_access allow all ##允许所有人
    62 cache_dir ufs /var/spool/squid 100 16 256 在这里插入图片描述
  2. systemctl stop firewalld.service ## 关掉火墙 在这里插入图片描述
  3. systemctl start squid ## 开启squid
    ls /var/spool/squid/ ## 此时可以查看到16个端口
    在这里插入图片描述
    测试端:ping www.baidu.com 是ping不通的
    这时打开测试端的浏览器,Edit -> Preferences -> Advanced ->Network -> Settings -> 写入ip和端口 Use this proxy… -> ok 就可以了 在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

12、反向代理:通过服务器

  1. 在没有apache的真机:
    查看squid.conf用法时,man 5 squid.conf是查看不到的,可以在/usr/share/doc/squid-3.3.8/aquid.conf.documented下查看 在这里插入图片描述

  2. vim /etc/squid/squid.conf
    59 http_port 80 vhost vport
    60 cache_peer 172.25.254.106 parent 80 0 proxy-only 在这里插入图片描述

  3. systemctl restart squid.service ##重启服务后可以查看

  4. 在测试端将解析文件写上 /etc/hosts

      172.25.254.170  www.westos.com news.westos.com music.westos.com login.westos.com webapp.westos.com bbs.westos.com
    

在这里插入图片描述
在浏览器上写入ip:172.25.254.170就可以看到160上的内容
在这里插入图片描述
5. 轮循:
在没有apache的真机:
vim /etc/squid/squid.conf

		59 http_port 80 vhost vport
    		60 cache_peer 172.25.254.106 parent 80 0 proxy-only name=web1 round-robin weight=2
 		61 cache_peer 172.25.254.100 parent 80 0 proxy-only name=web2 round-robin
 		62 cache_peer_domain web1 web2 www.westos.com

在这里插入图片描述
systemctl restart squid.service ##重启服务后可以查看
测试:在浏览器上写入ip:172.25.254.206就可以看到106上的内容刷新两次后才可看到100上的内容

yum install elinks 安装文本浏览器
elinks http:172.25.254.206

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值