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

一. 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
# 把这一行前的注释去掉,就是打开的虚拟主机。打开虚拟主机的话,前面的配置就无效了。
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 

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

...
[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中,不需要打开虚拟主机。当配置文件读到的时候,会自动打开虚拟主机。
[root@server ~] # cd /etc/httpd/conf.d/
# 因为主配置文件中有一行,会读取这个目录内的所有.conf结尾的配置文件。所以把虚拟主机的配置文件放在这里,容易管理。
[root@server ~] # vim virtualhost-www.conf
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 

 #针对网页根目录做访问控制
    Require All Granted #允许所有


[root@server ~] # vim virtualhost-blog.conf
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 


    Require All Granted


[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
80>
    DocumentRoot /var/www/html  #网站的根目录
    ServerName www.beginner.net.cn  #网站的域名

8080>
    DocumentRoot /var/ftp  #网站的根目录
    ServerName www.beginner.net.cn  #网站的域名

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

 #针对网页根目录做访问控制
    Require All Granted #允许所有


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 


    Require All Granted


[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的部分,稍后的博文会更新

你可能感兴趣的:(linux,service)