Linux系统服务搭建之Apache

  • 来源:网络
  • 更新日期:2020-09-07

摘要:建站服务器 1、 www: world wide web 万维网 http 协议: 超文本传输协议HTML语言: 超文本标识语言 index.html2、 URL:统一资源定位: 协

建站服务器

1、  www: world  wide  web 万维网

http   协议: 超文本传输协议

HTML语言: 超文本标识语言 index.html

2、 URL:统一资源定位: 协议+域名:端口+网页文件名

http://www.baidu.com:80/phpmyadmin/index.php

3 搭建www的服务器的方法

windows   IIS  + asp  + SQLserver

IIS: Internet  Information server

Linux   apache+mysql+php

     nginx

 

一、相关文件

apache配置文件    

源码包安装:/usr/lcoal/apache2/etc/httpd.conf(主配置文件)

            /usr/local/apache/etc/extra/*.conf(子配置文件)

rpm包安装:/etc/httpd/conf/httpd.conf

网页保存位置:

源码包:     /usr/local/apache2/htdocs/

rpm包安装:  /var/www/html/

日志保存位置

源码包:/usr/local/apache2/logs/

rpm包: /var/log/httpd/

 

 二、配置文件

         注意:apache配置文件严格区分大小写

1、  针对主机环境的基本配置

ServerRoot   apache主目录 

/usr/local/apache2

Listen       监听端口   :80

LoadModule   加载的相关模块      php5

       

User

Group        用户和组

ServerAdmin  管理员邮箱

ServerName

服务器名(没有域名解析时,使用临时解析。默认不开启)

ErrorLog logs/error_log   错误日志

CustomLog logs/access_log common  正确访问日志

DirectoryIndex index.html index.php  

默认网页文件名,优先级顺序

Include  etc/extra/httpd-vhosts.conf    

子配置文件中内容也会加载生效

    

2 主页目录及权限

 

DocumentRoot /usr/local/apache2//htdocs

  #网页文件存放目录(默认)

<Directory/usr/local/apache2//htdocs>

  #定义指定目录的权限

 

Options Indexes FollowSymLinks

     #options

     None:     没有任何额外权限

     All:   所有权限

Indexes: 浏览权限(当此目录下没有默认网页文件时,显示目录内容)

  FollowSymLinks:准许软连接到其他目录

 

AllowOverrideNone

#定义是否允许目录下

.htaccess文件中的权限生效

None:.htaccess中权限不生效

All:文件中所有权限都生效

AuthConfig:文件中,只有网页认证的权限生效。

 

Require all granted   访问控制列表

        #定义此目录的允许访问权限

以下5个例子都是在Require allgranted紧下面插入(很重要)

例1:   仅允许IP为192.168.1.1的主机访问

<RequireAll>

      Require all  granted

      Require ip 192.168.1.1

</RequireAll>

例2: 仅允许192.168.0.0/24网络的主机访问

<RequireAll> 

      Require all  granted 

      Require ip 192.168.1.0/24

</RequireAll> 

 例3:    禁止192.168.1.2的主机访问,其他的都允许访问,

<RequireAll>

      Require all  granted

      Require not ip 192.168.1.2

</RequireAll>

 例4:    允许所有访问,

Require all  granted         

 例5:    拒绝所有访问,

Require all  denied

 

三、四个小实验

实验环境:

  使用lamp环境安装好的apache进行试验

 

 安装完成后,先启动apache进行服务验证,是否安装成功,并且主页是否可以访问。

  注:发现启动服务报错:AH00558: httpd: Could not reliably determine the server\'s fullyqualified domain name, using localhost.localdomain. Set the \'ServerName\'directive globally to suppress this message

解决办法:打开主配置文件httpd.conf

搜索ServerName     (约在200行左右)

修改为 ServerName  localhost:80(并且去掉前面的#注释)

 

 实验一:目录别名

可以使特定的网站程序不出现在网站根目录下面,而这样的话,就可以避免和原来的程序本身发生混淆和冲突;缩短网页目录的纵深,减少URL的长度。

 

1.     打开apache主配置文件

#Includeetc//extra/httpd-autoindex.conf (将#号去掉)

2.     进到子配置文件目录extra下,打开httpd-autoindex.conf

仿照例子写一个别名:

Alias  /a/ /www/a/   #实际目录结束要有/

<Directory/www/a/>

    Options Indexes MultiViews

    AllowOverride None

    Require all granted

</Directory>

在/www/a/目录下手动创建index.html文件

 

3.     将apache服务重启:

/usr/local/apache2/bin/apachectlstop

/usr/local/apache2/bin/apachectlstart

注:重启源码包安装的apache需要先关闭,再启动。

 

4.     验证试验结果:

打开浏览器输入   服务器IP/a/ (最后的“/”必须有)

实验二:用户认证

  提高网站安全性,保护个别页面的信息,限制特定目录,只有指定用户可以访问。

1.打开主配置文件在最下面添加:

<Directory/usr/local/apache2/htdocs/baohu>  #被保护目录

    Options Indexes

    AllowOverride All   #(开启权限认证文件.htaccess)

    Require all granted

</Directory>

2.在指定目录下创建权限文件:

cd  /usr/local/apache2/htdocs/baohu 

Vi   .htaccess      #添加下面的内容

AuthName50 docs   #提示信息

AuthTypebasic       #加密类型

AuthUserFile/usr/local/apache2/htdocs/baohu/apache.passwd

#密码文件,文件名自定义。(但是路径要对,使用绝对路径)

requirevalid-user     #允许密码文件中所有用户访问

3.使用命令生成密码文件apache.passwd,加入允许访问的用户。(此用户和系统用户无关)

Htpasswd

–c /usr/local/apache2/htdocs/baohu/apache.passwd test1

-c 建立密码文件,只有添加第一个用户时,才能-c

htpasswd 

-m /usr/local/apache2/htdocs/baohu/apache.passwd  test2

-m  再添加更多用户时,使用-m参数

4. 验证访问:(自己手动去目录下创建index.html文件)

浏览器输入 服务器IP/baohu/index.html

 

实验三:***虚拟主机***

虚拟主机的分类:

1)   基于IP的虚拟主机:一台服务器,多个ip,搭建多个网站

  Ifconfig  eth0:0 IP      #建立网卡子端口

2)   基于端口的虚拟主机:一台服务器,一个ip,搭建多个网站,每个网络使用不同端口访问

3)   基于名字的虚拟主机:一台服务器,一个ip,搭建多个网站,每个网站使用不同域名访问

1.     实验搭建(准备工作)

a.   域名解析:准备两个域名

www.sohu.com   

www.sina.com

b.   没搭建dns,只能手动添加到本地hosts文件内进行解析

  Windows系统中:C:\\WINDOWS\\system32\\drivers\\etc\\hosts

  Linux系统中:/etc/hosts

c.   网站主页目录规划

在/htdocs/目录下分别创建sohu 和 sina 两个目录

并且在分别在新建目录内创建index.html文件(分别写不一样的内容)

2.   实验流程(修改配置文件)

A.   vi  /usr/local/apache2/etc/httpd.conf 

#修改主配置文件开启文件关联

Include etc//extra/httpd-vhosts.conf  #此行取消注释

 

B.   vi  /usr/local/apache2/etc/extra/httpd-vhosts.conf

  #添加下方内容(添加之前先把原先存在的示例删除掉)

<Directory/usr/local/apache2/htdocs/sina>

Options Indexes

AllowOverride None

Require all granted

</Directory>

 

<Directory /usr/local/apache2/htdocs/sohu>

Options Indexes

AllowOverride None

Require all granted

</Directory>

 

<VirtualHost 192.168.150.253>       #虚拟主机标签

ServerAdmin webmaster@sina.com      #管理员邮箱

DocumentRoot /usr/local/apache2/htdocs/sina  #网站主目录

ServerName www.sina.com          #完整域名

ErrorLog logs/sina-error_log      #错误日志

CustomLog logs/sina-access_log common  #访问日志

</VirtualHost>

 

<VirtualHost 192.168.150.253>

ServerAdmin webmaster@sohu.com

DocumentRoot /usr/local/apache2/htdocs/sohu

ServerName www.sohu.com

ErrorLog logs/sohu.com-error_log

CustomLog logs/sohu.com-access_log common

</VirtualHost>

 

C.   重启服务,验证结果

Windows 下:浏览器下输入两个不同的域名验证网页内容

Linux下:通过elinks命令验证:elinks 域名

实验四:rewrite重写功能

 在URL中输入一个地址,会自动跳转为另一个,多用于网站更换或者添加新域名。

实验要求:

A 虚拟主机能正常访问

B 打开主配置文件开启重写模块

             LoadModule rewrite_module modules/mod_rewrite.so   #取消注释

 

域名跳转实验:

1.   修改虚拟主机配置文件

vi  */extra/httpd-vhosts.conf

<Directory/usr/local/apache2/htdocs/sina>

Options Indexes FollowSymLinks

AllowOverride All

Require all granted

</Directory>

 

2.   创建规则匹配文件

vi  */.htaccess       #在指定的网站网页目录下创建

RewriteEngine on

#开启rewrite功能

RewriteCond %{HTTP_HOST} www.sina.com

#把以www.sina.com  开头的内容赋值给HTTP_HOST变量

RewriteRule  .*   http://www.sohu.com

#.*  输入任何地址,都跳转到http://www.sohu.com

 

3.   重启服务器,进行访问验证

静态向动态跳转:

1.   修改虚拟主机配置文件

vi */extra/httpd-vhosts.conf

<Directory /usr/local/apache2/htdocs/sohu>

Options Indexes FollowSymLinks

AllowOverride All

Require all granted

</Directory>

2.   创建规则文件

vi  */.htaccess

RewriteEngine on

RewriteRule index(\\d+).html index.php?id=$1

#输入index(数值).html时,跳转到index.php文件

3.   重启服务,进行访问验证

验证方式:在*/htdocs/sohu/目录下新建index.php文件

访问www.sohu.com/index(数值).html看访问的是否是你的index.php的网页

注:静态网页向动态网页跳转这个实验,只有完整的lamp环境下才能访问。

 

四、常用子配置文件

 

httpd-default.conf    #apache线程控制,必须开启

Timeout 300    #超时时间

KeepAlive On   

#开启线程控制(不开启的话用户访问页面会产生一个进程,访问其他页面会产生另一个进程,这样的话一个用户会产生好多个进程,会降低apache性能。开启此项,当用户访问网站时会产生一个进程,打开其他页面时会产生线程,保证了一个用户只产生一个进程。网站此项功能必须开启。)

MaxKeepAliveRequests 100   #最大线程连接数

 

httpd-info.conf  #apache状态统计

<Location /server-status>

SetHandler server-status

Order deny,allow

Deny from all

Allow from .example.com

</Location>

#通过访问www.domain.com/server-status可以查看apache状态。如果页面显示not found 则需要修改目录权限,在Deny from all下加上allow from ip(允许的ip)。

httpd-manual.conf   #apache帮助文档

通过访问www.domain.com/manual 查看apache帮助文档,一般为英文,没用,可以到apache官网下载帮助文档。

 

httpd-languages.conf  #语言编码

要使其生效需要在主配置文件中打开,如果中文乱码不是浏览器编码的原因可能是此配置文件注释没打开。

 

五、yum安装apache后的虚拟主机

目的:实现apache的虚拟主机 和 DNS的搭配使用

应用技术:基于域名的虚拟主机  和  基于IP的虚拟主机

前提:1、一台双网卡的WEB服务器,eth0-192.168.115.195

          eth2-192.168.115.199

      2、一台DNS服务器eth0-192.168.115.194

      3、一台客户机192.168.115.200

5.1、规划

 

网站               IP          DocumentRoot      ServerAdmin
---------------------------------------------------------------------www.163.com     192.168.115.195   /www/163.com      www.163.com
www.sina.com     192.168.115.195   /www/sina.com     www.sina.com
www.sohu.com     192.168.115.195   /www/sohu.com     www.sohu.com
www.baidu.com    192.168.115.199   /www/baidu.com   www.baidu.com
www.baidu.com是基于IP的
---------------------------------------------------------------------

5.2、配置DNS服务器

5.2.1、配置本地yum源,安装软件bind

启动服务service  named  start

5.2.2、配置网卡服务并重启网络服务


service  network  restart

 

5.2.3、配置主配置文件named.conf

删除其他所有多余行,只保存下面的内容

       






5.2.4、配置数据配置文件

 

创建相关域名的正向解析文件并更改所有者为 named



 配置各个相关域名的正向解析文件

163.com



 sina.com

 

Sohu.com

 

Baidu.com(基于IP的虚拟主机)


 重启DNS服务   service  named restart


5.3、配置115.200客户机测试

 

 此处使用的是Win客户机,配置如下:

 

测试

5.4、配置apache服务器

5.4.1、配置网卡并重启网络服务

Eth0      


 

Eth2

重启网络服务service  network  restart

 

5.4.2、配置本地yum源,安装httpd

 yum   -y   install  httpd

 service  httpd   start

 

5.4.3、创建相关目录及主页

 

实现重启服务时不出现warning信息

vi   /etc/httpd/conf/httpd.conf
ServerName  www.example.com:80   //改成192.168.115.195:80

 配置Apache实现虚拟主机
 vi  /etc/httpd/conf/httpd.conf

NameVirtualHost *:80//  改为NameVirtualHost 192.168.115.195:80,IP是本机的IP
NameVirtualHost 192.168.115.195:80支持基于主机名的虚拟主机 


vi /etc/httpd/conf/httpd.conf  主配置文件最下面添加以下内容






  5.4.4、测试验证




新网虚拟主机