您的位置:首页 > 运维架构 > Apache

Linux环境下使用Apache部署Web服务

2016-03-21 12:31 931 查看

一. Apache,HTTP,Web的关系

Apache是一款软件:

Apache HTTP Server(简称Apache)是Apache软件基金会的一个开放源码的网页服务器,可以在大多数计算机操作系统中运行,由于其多平台和安全性被广泛使用,是最流行的Web服务器端软件之一。

早期的Apache小组,现在已经成为一个拥有巨大力量的apache基金会。

他们把起家的Apache更名为httpd,也更符合其http server的特性。而Apache现在成为Apache基金会下几十种开源项目的标识。

HTTP是一种协议:

HTTP协议(HyperText Transfer Protocol,超文本传输协议)是用于从Web服务器传输超文本到本地浏览器的传输协议。它可以使浏览器更加高效,使网络传输减少。

Web我们称为网页或网站:

web的本意是蜘蛛网和网的意思,在网页设计中我们称为网页的意思。现广泛译作网络、互联网等技术领域。表现为三种形式,即超文本(hypertext)、超媒体(hypermedia)、超文本传输协议(HTTP)等。

简单来说:在Web Server上安装Apache(httpd)软件,Apache(httpd)使用HTTP协议,来传输网页。

二. Web Server概述

概念:

基于B/S(Browser/Server)架构的Web通信。

服务端:支持HTTP协议的网页提供程序

客户端:按标记规范显示网页的浏览器程序

HTML:超文本标记语言

HTTP:超文本传输协议

WWW:万维网

URL:统一资源定位器

三 .安装软件包

[root@server ~] # yum -y install httpd httpd-manual(说明手册,可以不安装)

默认网页的存储路径为/var/www/html

主要目录文件和主配置文件:

主配置文件:/etc/httpd/conf/httpd.conf

配置目录:/etc/httpd/conf.d/ (有一些参数不想写在主配置文件内,可以写在这个目录下,以.conf结尾)

网站根目录:/var/www/html

访问日志:/var/log/httpd/access_log

错误日志:/var/log/httpd/error_log

httpd服务的信息:

系统服务脚本:/etc/init.d/httpd

默认端口:TCP 80

进程名:httpd

进程所有者:apache

四. 浅析主配置文件

[root@server ~] # vim /etc/httpd/conf/httpd.conf



ServerName www.beginner.net.cn:80

本站点的域名,默认可以不写

DocumentRoot “/var/www/html”

网站的根目录

DirectoryIndex index.html index.html.var

定义网站根目录里的首页文件

Include conf.d/*.conf

可包含其他子配置文件,可以更改

Listen 80

后面可以写端口号,也可以写IP地址。如果做基于端口的虚拟主机,要多监听端口。

User apache

指定进程的属主,默认为apache

Group apache

指定的进程属组,默认为apache

ErrorLog logs/error_log

错误日志文件的路径,在/etc/httpd目录下

CustomLog logs/access_log common

访问日志的路径,在/etc/httpd目录下

五. 实验

1)实验一:修改httpd配置文件

[root@server ~] # vim /etc/httpd/conf/httpd.conf



ServerName www.beginner.net.cn

DirectoryIndex myfile.html

Listen 8080

DocumentRoot “/var/tmp”



[root@server ~] # echo “www” > /var/tmp/myfile.html

[root@server ~] # service httpd restart

[root@server ~] # curl http://www.beginner.net.cn:8080

www

2)实验二:实现用户自定义网页

思路:开启vsftpd服务,使用户可以上传或者删除自己的网页文件,把DocumentRoot 改为FTP服务上传的目录即可。

[root@server ~] # yum -y install vsftpd httpd

[root@server ~] # mkdir /usr/yao

[root@server ~] # useradd -s /sbin/nologin -d /usr/yao yao

[root@server ~] # passwd yao



[root@server ~] # vim /etc/httpd/conf/httpd.conf



DocumentRoot /usr/yao



[root@server ~] # service httpd start

[root@server ~] # service vsftpd start

六. 虚拟主机

什么是Web虚拟主机:

在同一台服务器上运行多个Web站点。

每个站点挺不是独立占用一台计算机。

虚拟主机的类型:

基于域名(FQDN):常用,提供给客户访问

基于IP地址:基本不用

基于端口:一般在内部使用,访问时需要指定端口

注意:RHEL6 与 RHEL7 的虚拟主机的搭建有点不同

1) 基于域名的虚拟主机的搭建(RHEL6)

[root@server ~] # vim /etc/httpd/conf/httpd.conf
...
NameVirtualHost *:80
# 把这一行前的注释去掉,就是打开的虚拟主机。打开虚拟主机的话,前面的配置就无效了。
<VirtualHost *:80>
ServerAdmin linux_yao@beginner.net.cn
DocumentRoot /usr/www
ServerName www.beginner.net.cn
ErrorLog logs/www.beginner.net.cn-error_log
CustomLog logs/www.beginner.net.cn-access_log common
</VirtualHost>
<VirtualHost *:80>
ServerAdmin linux_yao@beginner.net.cn
DocumentRoot /usr/blog
ServerName blog.beginner.net.cn
ErrorLog logs/blog.beginner.net.cn-error_log
CustomLog logs/blog.beginner.net.cn-access_log common
</VirtualHost>
...
[root@server ~] # service httpd restart
[root@server ~] # echo "www" > /usr/www/index.html
[root@server ~] # echo "blog" > /usr/blog/index.html
[root@server ~] # curl http://www.beginner.net.cn www
[root@server ~] # curl http://blog.beginner.net.cn blog


2) 基于域名的虚拟主机的搭建(RHEL7)

RHEL7中,不需要打开虚拟主机。当配置文件读到<Virtualhost *:xx>的时候,会自动打开虚拟主机。
[root@server ~] # cd /etc/httpd/conf.d/
# 因为主配置文件中有一行,会读取这个目录内的所有.conf结尾的配置文件。所以把虚拟主机的配置文件放在这里,容易管理。
[root@server ~] # vim virtualhost-www.conf
<VirtualHost *:80>
ServerName www.beginner.net.cn
DocumentRoot /usr/www
ServerAdmin linux_yao@beginner.net.cn
ErrorLog logs/www.beginner.net.cn-error_log
CustomLog logs/www.beginner.net.cn-access_log common
</VirtualHost>
<Directory /usr/www> #针对网页根目录做访问控制
Require All Granted #允许所有
</Directory>

[root@server ~] # vim virtualhost-blog.conf
<VirtualHost *:80>
ServerName blog.beginner.net.cn
DocumentRoot /usr/blog
ServerAdmin linux_yao@beginner.net.cn
ErrorLog logs/blog.beginner.net.cn-error_log
CustomLog logs/blog.beginner.net.cn-access_log common
</VirtualHost>
<Directory /usr/blog>
Require All Granted
</Directory>

[root@server ~] # systemctl restart httpd.service
[root@server ~] # echo "www" > /usr/www/index.html
[root@server ~] # echo "blog" > /usr/blog/index.html
[root@server ~] # curl http://www.beginner.net.cn www
[root@server ~] # curl http://blog.beginner.net.cn blog


2) 基于端口的虚拟主机的搭建(RHEL6)

[root@server ~] # vim /etc/httpd/conf/httpd.conf
...
Listen 80
Listen 8080
NameVirtualHost *:80
NameVirtualHost *:8080
<VirtualHost *:80>
DocumentRoot /var/www/html  #网站的根目录
ServerName www.beginner.net.cn  #网站的域名
</VirtualHost>
<VirtualHost *:8080>
DocumentRoot /var/ftp  #网站的根目录
ServerName www.beginner.net.cn  #网站的域名
</VirtualHost>
...
[root@server ~] # service httpd restart
[root@server ~] # netstat -antpu | grep httpd
# 看看是否监听了两个端口
[root@server ~] # echo "80" > /var/www/html/index.html
[root@server ~] # echo "8080" > /var/ftp
[root@server ~] # curl http://www.beginner.net.cn 80
[root@server ~] # curl http://www.beginner.net.cn:80 80
[root@server ~] # curl http://www.beginner.net.cn:8080 8080


2) 基于端口的虚拟主机的搭建(RHEL7)

[root@server ~] # cd /etc/httpd/conf.d/
[root@server ~] # vim virtualhost-www.conf
<VirtualHost *:80>
ServerName www.beginner.net.cn
DocumentRoot /var/www/html
ServerAdmin linux_yao@beginner.net.cn
ErrorLog logs/www.beginner.net.cn-error_log
CustomLog logs/www.beginner.net.cn-access_log common
</VirtualHost>
<Directory /var/www/html> #针对网页根目录做访问控制
Require All Granted #允许所有
</Directory>

<VirtualHost *:8080>
ServerName www.beginner.net.cn
DocumentRoot /var/ftp
ServerAdmin linux_yao@beginner.net.cn
ErrorLog logs/www.beginner.net.cn-error_log
CustomLog logs/www.beginner.net.cn-access_log common
</VirtualHost>
<Directory /usr/blog>
Require All Granted
</Directory>

[root@server ~] # vim /etc/httpd/conf/httpd.conf
...
Listen 80
Listen 8080
...
[root@server ~] # systemctl restart httpd.service
[root@server ~] # netstat -antpu | grep httpd
# 检查是否监听了两个端口
[root@server ~] # echo "80" > /var/www/html/index.html
[root@server ~] # echo "8080" > /var/ftp
[root@server ~] # curl http://www.beginner.net.cn 80
[root@server ~] # curl http://www.beginner.net.cn:80 80
[root@server ~] # curl http://www.beginner.net.cn:8080 8080


关于https的部分,稍后的博文会更新

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息