Apache部署超详细教程

背景

  • 百度百科:Apache是世界使用排名第一的Web服务器软件。它可以运行在几乎所有广泛使用的计算机平台上,由于其跨平台和安全性被广泛使用,是最流行的Web服务器端软件之一。它快速、可靠并且可通过简单的API扩充,将Perl/Python等解释器编译到服务器中。
  • Nginx:Nginx是一款轻量级的Web 服务器/反向代理服务器及电子邮件(IMAP/POP3)代理服务器,在BSD-like 协议下发行。其特点是占有内存少,并发能力强,事实上nginx的并发能力确实在同类型的网页服务器中表现较好,中国大陆使用nginx网站用户有:百度、京东、新浪、网易、腾讯、淘宝等。
  • 可以使用curl -I(大写i)选项仅查看响应头部信息,我们来看一看国内知名网站部署的服务器类型:
    在这里插入图片描述在这里插入图片描述
    不难发现,现在主流的web服务器都采用nginx的部署方式,毕竟在支持高并发方面有着天生的优势。
    主流的网站基本采用:lamp/lnmp方式部署web服务器(l——linux,a——apache,n——nginx,m——mysql,p——php)

Apache与Nginx对比

ApacheNginx
稳定、对动态请求处理强擅长处理静态请求
但同时高并发时性能较弱,耗费资源多高并发处理能力强、擅长处理反向代理、均衡负载

更详细的对比:请看这篇文章

Apache的部署安装

yum install httpd -y		##apache软件
yum install httpd-manual	##apache的手册
systemctl start httpd 
systemctl enable httpd 
firewall-cmd --list-all				##列出火墙信息
firewall-cmd --permanent --add-service=http		##永久允许http
firewall-cmd --reload				##火墙从新加载策略
/var/www/html				##apache的/目录,默认发布目录
/var/www/html/index.html		##apache的默认发布文件
vim /var/www/html/index.html		##写默认发布文件内容
<h1> hello world </h1>

实验结果:

在浏览器输入
http://172.25.254.202
http://172.25.254.202/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/*
  • httpd配置文件的查看
rpm -ql httpd    	##查看安装文件路径
rpm -qc httpd      ##查看配置文件名称
rpm -qd httpd      ##查看帮助文件

修改Apache默认配置

我们在修改之前,首先要确保selinux开启:enforcing。

修改默认端口

  • 查看默认端口:netstat -antlupe | grep httpd
    在这里插入图片描述
  • 修改之前,先查看已有的端口:通过命令semanage port -l | grep http查看
    在这里插入图片描述- 我们进入主配置文件,进行端口修改,先修改为已有端口。例如:8080
vim /etc/httpd/conf/httpd.conf
Listen 8080		##修改默认端口为8080(第42行)
firewall-cmd --permanent --add-port=8080/tcp  ##需要火墙允许端口,否则无法访问
firewall-cmd --reload 
systemctl restart httpd 

在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述

  • 修改没有的端口

1 对于一些非常用端口。比如666,先检测是否占用,netstat -antlupe |grep 666
2 然后修改配置文件改为666端口
在这里插入图片描述
3 重启发现失败,先把selinux改为0状态,发现可以重启。
在这里插入图片描述
4 用semanage port -l | grep http 管理端口列表,添加进去666, semanage port -a -t http_port_t -p tcp 666
在这里插入图片描述
5 开启火墙666端口,重启服务。发现可以访问。
在这里插入图片描述在这里插入图片描述为了不影响后续的操作,做完后把默认端口改为80。

修改默认发布文件

  • 默认发布文件就是访问apache时没有指定文件名称时默认访问的文件。这个文件可以指定多个,有访问顺序。
  • 1 在默认发布目录下创建文件vim /var/www/html/test.html写入一个html基本页面。
  • 2 修改主配置文件
vim /etc/httpd/conf/httpd.conf
164     DirectoryIndex index.html test.html	##第164行
##当index.html不存在时访问test.html

当我们删掉index.html的时候,重启服务后发现,默认发布文件已经改变:
在这里插入图片描述

修改默认发布目录

1 在主配置文件中添加:

DocumentRoot "/westos/html"
<Directory "/westos/html">		##授权,还需要做授权(rht7之后),否则不能访问。
	Require all granted
</Directory>

在这里插入图片描述
2 除此之外,因为selinux开启,所以需要修改目录的安全上下文为http模式,才能共享。完成后重启服务。

mkdir -p /www/html/
vim index.html
semanage fcontext -a -t httpd_sys_content_t '/www/html(/.*)?'
restorecon -RvvF /www/html/

在这里插入图片描述

Apache的虚拟主机

虚拟主机apache是什么呢?

  • 简单的说虚拟主机apache就是在apache服务器上配置多个虚拟主机,从而把一个服务器提供多站点的服务实现
    虚拟主机apache是在一台服务器上运行多个网站,每个虚拟主机都可以绑定独立的域名并为这些域名可以指定单独的目录,访问这些域名的时候apache 会打开对应目录里面的东西。
    用通俗的话来说就是对同一个服务器上的不同目录进行访问。

更详细的介绍:这篇文章

如何配置虚拟主机

1 进入子配置文件目录,/etc/httpd/conf.d/ 这里的内容基本上都是子配置文件,必须以.conf结尾,主配置文件中有说明。
2 在这里建立一个虚拟机文件 vhost.conf

写入内容:
	<VirtualHost _default_:80>		##默认,意思是除了指定的网站,都访问这里的发布目录
		DocumentRoot /var/www/html	
		CustomLog logs/default.log combined		###站点日志combined标示四种日志的集合
	</VirtualHost>
	<VirtualHost *:80>			##指定的发布目录和服务站点。* 查ServerName参数
		ServerName news.mac.com
		DocumentRoot /var/www/vhost/news       
		CustomLog logs/news.log combined
	</VirtualHost>
	<Directory "/var/www/vhost/news">	##授权,才都可以访问
		Require all granted
	</Directory>

	<VirtualHost *:80>
		ServerName video.mac.com
		DocumentRoot /var/www/vhost/video
		CustomLog logs/video.log combined
	</VirtualHost>
	<Directory "/var/www/vhost/video">
		Require all granted
	</Directory>

3 创建对应的发布目录:

mkdir /var/www/vhost/news -p
mkdir /var/www/vhost/video -p

在对应的发布目录写对应的发布文件:记得要写成默认 index.html 因为是主配置文件中指定过的。
4 浏览器在哪里就在那里做本地解析(真机) 在真机中写入对应ip 的域名
在这里插入图片描述

5 测试
在这里插入图片描述在这里插入图片描述
在这里插入图片描述

排错思路

这里楼主也在配置虚拟机站点的时候出现了错误,所以写一个排错思路给大家分析错误原因。

排错思路:
	1 先在客户端进行ping 对应域名,能ping通说明客户端没错,否则检查/etc/hosts
	2 服务端是否授权vhost.conf
	3 服务端的主配置文件
	4 服务端的发布文件名,是否为默认发布文件
	5 火墙是否有影响?

Apache内部的访问控制

基于IP

在主配置文件中

写入:
  <Directory "/var/www/html/test">
        Order deny,allow		##列表读取顺序,后读取的列表会覆盖限度去内容的重复部分
        Allow from 172.25.254.44
        Deny from all
 </Directory>

作为白名单用户:
在这里插入图片描述
作为黑名单用户:
在这里插入图片描述
注意:后读取的列表会覆盖先读的内容
Order Allow,Deny(先读Allow 再读Deny)次序————黑名单次序
Order Deny,Allow(先读Deny 再读Allow)次序————白名单次序(只有个别能访问)

基于用户

1 需要在/etc/httpd/下创建,目的是方便管理。

htpasswd -cm .apache_auth admin

c 创建 m md5 加密  可以--help看参数

.是隐藏文件 
当已经创建好文件后,只用-m就行,不然会覆盖之前内容:

htpasswd -m .apache_auth mac

在这里插入图片描述
2 注意:在子配置目录/etc/httpd/conf.d/下创建文件vim adefault.conf
或者直接在子配置目录下刚刚创建的vhost.conf内
写入:

  <Directory "/var/www/html">
         AuthUserFile /etc/httpd/.apache_auth
         AuthName "Please input your name and password"
         AuthType basic
         #Require        user admin mac		##针对具体用户的,多个用户用空格隔开
         Require valid-user				##针对所有有效用户
  </Directory>
  分别对应的是:
指定认证文件:
指定认证类型:
指定认证提示符:
允许用户访问 : 隐藏文件下的指定用户可以访问
允许所有有效用户访问: Require 

3 完成后重启服务。
4 输入ip,测试,发现需要登录才能访问,输入刚刚的用户和密码即可。
注意:因为浏览器有缓存记录,所以需要清理缓存,火狐浏览器默认是Ctrl+shift+Del

在这里插入图片描述再次刷新,就会要求输入密码。

Apache支持的语言

Apache支持的语言众多:html,php,python,perl等。

php

1 首先需要下载安装php:yum install php -y
2 写一个php脚本:

vim /var/www/html/index.php
<?php
	phpinfo();
?>

3 修改httpd的主配置文件,在默认发布文件中添加index.php,因为按照顺序读取,所以要写道最前面。
在这里插入图片描述
4 重启服务,再次访问172.25.254.202,发现已经变成php的网页。
在这里插入图片描述

CGI

CGI(Common Gateway Interface) 是WWW技术中最重要的技术之一,有着不可替代的重要地位。CGI是外部应用程序(CGI程序)与WEB服务器之间的接口标准,是在CGI程序和Web服务器之间传递信息的过程。CGI规范允许Web服务器执行外部程序,并将它们的输出发送给Web浏览器,CGI将Web的一组简单的静态超媒体文档变成一个完整的新的交互式媒体。

  • 实验步骤:
    1 我们可以打开apache官方手册查看:对应cgi示例
    在这里插入图片描述2 创建cgi目录以及对应的cgi文件
mkdir -p /var/www/html/cgi
vim /var/www/html/cgi/index.cgi
写入:
#!/usr/bin/perl
print "Content-type: text/html\n\n";
print `date`;

3 对脚本加执行权限chmod +x /var/www/html/cgi/index.cgi
4 要在子配置文件中对其授权服务————在web可执行脚本,我们可以在官方手册上找到。
在这里插入图片描述
5 因为虚拟机selinux开启,所以我们还需要更改其安全上下文为脚本可执行类型httpd_sys_script_exec_t

  • 57
    点赞
  • 428
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
1. 初识Activiti 1.1. 工作流与工作流引擎 工作流(workflow)就是工作流程的计算模型,即将工作流程中的工作如何前后组织在一起的逻辑和规则在计算机中以恰当的模型进行表示并对其实施计算。它主要解决的是“使在多个参与者之间按照某种预定义的规则传递文档、信息或任务的过程自动进行,从而实现某个预期的业务目标,或者促使此目标的实现”。(我的理解就是:将部分或者全部的工作流程、逻辑让计算机帮你来处理,实现自动化) 所谓工作流引擎是指workflow作为应用系统的一部分,并为之提供对各应用系统有决定作用的根据角色、分工和条件的不同决定信息传递路由、内容等级等核心解决方案。 例如开发一个系统最关键的部分不是系统的界面,也不是和数据库之间的信息交换,而是如何根据业务逻辑开发出符合实际需要的程序逻辑并确保其稳定性、易维护性和弹性。 比如你的系统中有一个任务流程,一般情况下这个任务的代码逻辑、流程你都要自己来编写。实现它是没有问题的。但是谁能保证逻辑编写的毫无纰漏?经过无数次的测试与改进,这个流程没有任何漏洞也是可以实现的,但是明显就会拖慢整个项目的进度。 工作流引擎解决的就是这个问题:如果应用程序缺乏强大的逻辑层,势必变得容易出错(信息的路由错误、死循环等等)。 1.2. BPMN2.0规范 BPMN(Business Process Model and Notation)--业务流程模型与符号。 BPMN是一套流程建模的标准,主要目标是被所有业务用户容易理解的符号,支持从创建流程轮廓的业务分析到这些流程的最终实现,知道最终用户的管理监控。 通俗一点其实就是一套规范,画流程模型的规范。流程模型包括:流程图、协作图、编排图、会话图。详细信息请google。 1.3. Activiti概述 1.3.1. Activiti由来 学习过Activiti的朋友都知道,Activiti的创始人也就是JBPM(也是一个优秀的BPM引擎)的创始人,从Jboss离职后开发了一个新的BPM引擎:Activiti。所以,Activiti有很多地方都有JBPM的影子。所以,据说学习过JBPM的朋友学起Activiti来非常顺手。 由于本人之前没有工作流及JBPM的相关基础,刚开始学习Activiti的时候可以说是无比痛苦的,根本不知道从何下手,这里也建议大家先进行工作流及BPMN2.0规范的学习,有了一定的基础后,再着手学习Activiti。 1.3.2. Activiti简介 Activiti是一个开源的工作流引擎,它实现了BPMN 2.0规范,可以发布设计好的流程定义,并通过api进行流程调度。 Activiti 作为一个遵从 Apache 许可的工作流和业务流程管理开源平台,其核心是基于 Java 的快速、稳定的 BPMN2.0 流程引擎,强调流程服务的可嵌入性和可扩展性,同时更加强调面向业务人员。 Activiti 流程引擎重点关注在系统开发的易用性和轻量性上。每一项 BPM 业务功能 Activiti 流程引擎都以服务的形式提供给开发人员。通过使用这些服务,开发人员能够构建出功能丰富、轻便且高效的 BPM 应用程序。 1.4. 文档说明 以上部分对工作流、BPMN、Activiti的概念做了一个简单的介绍,目的是了解Activiti究竟是什么,能做些什么…及在学习Activiti之前需要了解的知识与技术。其中大部分文字来自Copy网上的各种资料与文档,通过总结而来的。具体的更详细的内容需自己google,参考一些官方的文档与手册。 本文档之后内容如下: 1) 下载与使用 2) 核心组件与说明 3) 入门示例 4) Eclipse中的Activiti插件的使用 本文档旨在为初学Activiti的朋友提供入门级别的参考,不会对其原理及其结构进行深层次的探究(更多是因为目前自身理解还不是很透彻),只是为大家理清思路,方便以后更深层次的学习。本文档还有一个重要的特点,那就是根据自己看官方手册的经验,教大家如何看手册从而更有效率!由于是初学,很多术语或解释难免理解有偏差,所以一定要看官方提供的文档与手册,那才是学习的最佳途径! 2. 开始学习 2.1. 必要的准备 2.1.1. 下载与了解目录 下载Activiti:下载路径,也就是官方网站的地址:http://activiti.org/download.html。下载后解压(我所使用的是5.12版本的,Activiti更新速度飞快,几乎每两个月就会有一个更新的小版本),看到如下目录: 1) database:里面存放的是Activiti使用到的数据库信息的sql文件,它支持的数据库类型如下图,使用时只需执行你自己的数据库类型

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值