Linux系统服务搭建之Apache

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Linux系统服务搭建之Apache相关的知识,希望对你有一定的参考价值。

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      #添加下面的内容

AuthName"50 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 [email protected]      #管理员邮箱

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 [email protected]

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

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

技术分享

 

Eth1

技术分享

重启网络服务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:80IP是本机的IP
NameVirtualHost 192.168.115.195:80支持基于主机名的虚拟主机 


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

技术分享




  5.4.4、测试验证

技术分享




本文出自 “老白博客” 博客,请务必保留此出处http://ycreazy.blog.51cto.com/12237051/1931456

以上是关于Linux系统服务搭建之Apache的主要内容,如果未能解决你的问题,请参考以下文章

玩转Linux系统之轻松搭建Nginx服务

如何在Linux下搭建apache服务器

玩转Linux系统之搭建Nginx+Tomcat群集实现负载均衡

Linux之apache服务搭建

阿里云服务器 :Linux环境下搭建Apache+php+mysql

Linux系统服务搭建之DNS