首页 > 代码库 > Linux系统服务搭建之Apache
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 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
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:80,IP是本机的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