操作系统是centos6.9
Apache版本是Apache/2.2.15 (Unix)
主配置文件/etc/httpd/conf/httpd.conf中的字段
ServerName www.example.com:80 服务器主机名
PidFile run/httpd.pid 运行进程文件
Timeout 60 超时时间
KeepAlive Off 是否允许一个永久的链接,设置为OFF的时候不能保持链接功能,传输效率比较低,设置为on是,可以提 高服务器传输文件的效率
MaxKeepAliveRequests 100 设置KeepAlive为on是,设置客户端每次链接允许请求响应最大文件数,默认100个
KeepAliveTimeout 15 长连接超时时间
Listen 80 监听端口,默认本地IP,如果指定IP写上IP:80
<IfModule prefork.c>
StartServers8 服务开始起启动 8 个进程
MinSpareServers5 最小空闲 5 个进程
MaxSpareServers20 最多空闲 20 个进程
ServerLimit256 服务器允许配置进程数上线
MaxClients256 最大连接数 256,超过要进入等候队列
MaxRequestsPerChild4000 每个进程生存期内服务最大的请求数量,0 表示用不 结束
</IfModule>
<Directory />
Options FollowSymLinks Options Indexes 目录浏览FollowSymLinks 用连接
浏览
AllowOverride None 设置为 none,忽略.htaccess
</Directory>
LoadModule auth_basic_module modules/mod_auth_basic.so 载入的库,模块
● ● ● ● ● ●
Include conf.d/*.conf conf.d 里面的 conf 文件也属有效配置文件
User apache#apache 运行以哪个身份运行
Group apache#apache 运行以哪个组的身份运行
ServerAdmin root@localhost 管理员邮箱
DocumentRoot "/var/www/html" 默认的主目录,如果改动要改动两处,Directory
<Directory "/var/www/html"> Options Indexes FollowSymLinks AllowOverride None
Order allow,deny 这里默认后者生效,也就是 deny 生效
Allow from all 这里说允许所有
</Directory>
LogLevel warn 日志等级
DirectoryIndex index.html index.html.var 首页
AccessFileName .htaccess access 文件名
AddDefaultCharset UTF-8 支持的语言,默认编码
Apache一般有三种工作模式,prefork,worker和event
prefork工作模式以进程为主,运行比较稳定,但是比较消耗资源,建议访问量不大且追求运行稳定时使用
worker工作模式以线程为主,线程之间共享内存,所以高并发比较好,但相对于prefork模式,稳定性较差
event工作模式也是以线程为主,但相对于worker工作模式的区别在于,event工作模式会在线程数满了的时候将暂时不活动的线程空出来处理新的连接
例1: 搭建一台测试web服务器
案例:
部门内部搭建一台WEB服务器,采用的IP地址和端口为192.168.1.60:80,首页采用index.html
文件。网页的编码类型采用UTF-8,所有网站资源都存放在/var/www/html目录下,并将Apache的配置文件根目录设置为/etc/httpd目录
vim /etc/httpd/conf/httpd.conf
ServerRoot "/etc/httpd" 配置文件根目录
Timeout 60 超时时间
Listen 80 监听端口
ServerName 192.168.1.60:80 服务器主机名
DocumentRoot "/var/www/html" 网站页面根目录
Options Indexes FollowSymLinks 当一个目录没有默认首页时,允许显示此目录列表
Direcotry Index index.html index.php 指定默认首页
AddDefaultCharset UTF-8 设置服务器的默认编码为:UTF-8
然后重启服务
service httpd restart
创建首页
echo "welcome to linux" > /var/www/html/index.html
LAMP环境,几种不同的安全访问机制的实现:
一、 修改网站目录对应参数及权限:
修改网站默认根目录,并且设置访问权限,只有在我允许的范围之内可以访问
1、编辑Apache 配置文件httpd.conf
vim /etc/httpd/conf/httpd.conf
修改网站默认根目录
设置文档目录为/var/www/html/bbs
允许所有人访问/var/www/html/bbs 目录
目录与访问控制:
<Directory "/var/www/html/bbs"> #子目录会继承这个目录的属性
Options FollowSymLinks #Options:Indexes:目录浏览
AllowOverride None #Followsymlinks:可以用连接
Order allow,deny
Allow from 192.168.18.0/24 #从哪里来的允许
Deny from 192.168.16.0/24 #从哪里来的拒绝
Allow from .baidu.com
#Allow,Deny都会读取,如果有冲突和未说明的时候按照Order选项逗号后面的那个为准。
谁写到后面,谁的优先级高。
</Directory>
mkdir /var/www/html/bbs
cp /var/www/html/index.html /var/www/html/bbs/
二、使用别名,引用网站根目录以外的路径。
将/usr/local/phpdata 目录通过虚拟目录功能添加到网站根目录。当访问http://192.168.1.60/ phpdata/ 时,就可以访问目录/usr/local/phpdata中的内容。
创建测试数据
mkdir /usr/local/phpdata
echo "this alias phpdata" > /usr/local/phpdata/index.html
修改配置文件,添加一下几行
Alias /phpdata/ "/usr/local/phpdata/"
<Directory "/usr/local/phpdata">
Options Indexes FollowSymLinks
AllowOverride None
Order deny,allow
Allow from all
</Directory>
然后重启服务
service httpd restart
访问的时候要把路径写全
http://192.168.1.60/phpdata/
三、当一个目录下没有默认首页时,访问http://192.168.1.63/phpdata/禁止显示目录列表
修改配置文件:
vim /etc/httpd/conf/httpd.conf
Alias /phpdata/ "/usr/local/phpdata/"
<Directory "/usr/local/phpdata/">
Options -Indexes FollowSymLinks #在Indexes 前加-减号,此目录下没有默认首页时,禁止显示目录
AllowOverride None
Order deny,allow
Allow from all
</Directory>
四、打开软链接功能。 通过软件链接直接引用网站根目录以外的内容
通过软连接,我们可以直接引用网站根目录外面的内容,我们通过目录浏览的方式,在/var/www/html/bbs/面创建一个 web2 目录, 然后我访问web2 目录的话,实际访问的是/usr/local/abc 下面的内容
mkdir /usr/local/abc
cp -r /boot/grub/ /usr/local/abc/
mkdir -p /var/www/html/bbs/web2
ln -s /usr/local/abc/* /var/www/html/bbs/web2/
修改配置文件打开followSymlinks
在
五、 通过用户认证的方式,对网站下/usr/local/phpdata/目录进行保护。 设置/usr/local/phpdata/目录,只能通过用户名密码方式访问。
方法一:
vim /etc/httpd/conf/httpd.conf #在需要使用用户验证的目录的相关Directory段落添加以下红色标记内容:
Alias /phpdata/ "/usr/local/ phpdata /"
<Directory "/usr/local/ phpdata /">
Options Indexes FollowSymLinks
AllowOverride None
Order deny,allow
Allow from all
authtype basic
authname "my web site"
authuserfile /etc/httpd/conf/passwd.secret
#require user tom
#require user tom bob
require valid-user
</Directory>
参数说明:
authtype basic # 1)authtype命令:指定认证类型为:basic。
authname " my web site "
# AuthName命令:指定认证区域名称。区域名称是在提示要求认证的对话框中显示给用户的。
authuserfile /etc/httpd/conf/passwd.secret # AuthUserFile命令:指定一个包含用户名和密码的文本文件,每行一对。
require命令:指定哪些用户或组才能被授权访问。如:
require user user1 user2(只有用户user1和user2可以访问)
require valid-user (在AuthUserFile指定的文件中任何用户都可以访问)
利用Apache附带的程序htpasswd,生成包含用户名和密码的文本文
htpasswd -cm 存放用户名和密码的文件名 用户名
htpasswd -cm /etc/httpd/conf/passwd.secret tom
New password: 123456
Re-type new password: 123456
Adding password for user tom
#第一个生成用户名和密码,需要创建文件,因此需要加-c参数
htpasswd -h #查看参数
-c Create a new file.
-m Force MD5 encryption of the password.
htpasswd -m /etc/httpd/conf/passwd.secret bob
New password: 123456
Re-type new password: 123456
Adding password for user bob
cat /etc/httpd/conf/passwd.secret #查看内容
tom:$apr1$WJicnaIz$ejqYMmcqukEMsAVEjLcKf.
bob:$apr1$S8pXfxJh$tletPNMKd33WZXqdkSLFy0
service httpd restart
方法二:
#vim httpd.conf #在需要使用用户验证的目录的相关Directory段落添加
Alias /phpdata/ "/usr/local/phpdata/"
<Directory "/usr/local/phpdata/">
Options Indexes FollowSymLinks
AllowOverride None
Order deny,allow
Allow from all
AllowOverride AuthConfig
</Directory>
# AllowOverride AuthConfig一行表示允许对/usr/local/phpdata/目录下的文件进行用户认证。
在要保护的目录下创建一个存放进行用户认证信息的文件:
vim /usr/local/phpdata/.htaccess #写入以下内容
authtype basic
authname "my web site by .htaccess"
authuserfile /etc/httpd/conf/passwd.secret
#require user tom
require valid-user
利用Apache附带的程序htpasswd,生成包含用户名和密码的文本文
htpasswd -cm /etc/httpd/conf/passwd.secret tom
New password: 123456
Re-type new password: 123456
Adding password for user tom
htpasswd -m /etc/httpd/conf/passwd.secret bob
New password: 123456
Re-type new password: 123456
Adding password for user bob
cat /etc/httpd/conf/passwd.secret #查看内容
tom:$apr1$WJicnaIz$ejqYMmcqukEMsAVEjLcKf.
bob:$apr1$S8pXfxJh$tletPNMKd33WZXqdkSLFy0
service httpd restart
六 、配置apache虚拟主机,实现在一台服务器上运行多个网站
apache虚拟主机实现有三种方法:
1、通过不同的IP地址
2、通过不同的域名
3、通过不同的端口号
三种都需要把虚拟主机功能打开:
NameVirtualHost *:80
方法1:
通过不同的IP地址,解析不同域名
给服务器增加IP(另一个域名解析出来的那个IP)。
ifconfig eth0:1 192.168.0.56 netmask 255.255.255.0
mkdir /var/www/html/bbs/
echo "bbs.xuegod.cn" > /var/www/html/bbs/index.html
修改httpd.conf
#vim httpd.conf 在文件的最后,添加以下内容
<VirtualHost 192.168.1.60:80>
ServerAdmin webmaster@dummy-host.example.com
DocumentRoot /var/www/html/
ServerName dummy-host.example.com
ErrorLog logs/dummy-host.example.com-error_log
CustomLog logs/dummy-host.example.com-access_log common
</VirtualHost>
<VirtualHost 192.168.1.56:80>
ServerAdmin webmaster@dummy-host.example.com
DocumentRoot /var/www/html/bbs/
ServerName dummy-host.example.com
ErrorLog logs/dummy-host.example.com-error_log
CustomLog logs/dummy-host.example.com-access_log common
</VirtualHost>
方法二:
通过不同域名:
在域名管理后台,修改DNS配置,www.linux.com与bbs.linux.com解析成相同的IP。
修改httpd.conf
#vim httpd.conf
<VirtualHost *:80>
ServerAdmin webmaster@dummy-host.example.com
DocumentRoot /var/www/html/
ServerName www.linux.com
ErrorLog logs/www.linux.com-error_log
CustomLog logs/www.linux.com-access_log common
</VirtualHost>
<VirtualHost *:80>
ServerAdmin webmaster@dummy-host.example.com
DocumentRoot /var/www/html/bbs/
ServerName bbs.linux.com
ErrorLog logs/bbs.linux.com-error_log
CustomLog logs/bbs.linux.com-access_log common
</VirtualHost>
vim /etc/hosts
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
192.168.1.63 linux.cn
192.168.1.63 www.linux.com
192.168.1.63 bbs.linux.com
方法3:基于端口配置虚拟主机:
vim /etc/httpd/conf/httpd.conf
改:
Listen 80
为:
Listen 80
Listen 81
# 更改为你要添加的多个端口
再建立两个虚拟主机:
vim /etc/httpd/conf/httpd.conf # 在文件的最后添加
再建立两个虚拟主机:
vim /etc/httpd/conf/httpd.conf # 在文件的最后添加
<VirtualHost *:80>
ServerAdmin webmaster@dummy-host.example.com
DocumentRoot /var/www/html/
ServerName www.example.com
ErrorLog logs/www.example.com-error_log
CustomLog logs/www.example.com-access_log common
</VirtualHost>
<VirtualHost *:81>
ServerAdmin webmaster@dummy-host.example.com
DocumentRoot /var/www/html/bbs/
ServerName bbs.example.com
ErrorLog logs/bbs.example.com-error_log
CustomLog logs/bbs.example.com-access_log common
</VirtualHost>