apache

一、目前服务器软件的使用排名,占有率
https://w3techs.com/technologies/overview/web_server/all

二、当前互联网主流web服务

当前互联网主流web服务
静态服务:
1、apache -->中小型静态web服务的主流,web服务器中的老大哥。
2、nginx -->大型新兴网站静态web服务主流。
3、lighttpd -->静态web服务不温不火,逐渐被淘汰。
静态效率高

动态服务:
1、IIS -->微软的web服务器(asp,.aspx)
2、tomcat -->中小企业动态web服务主流,互联网java容器主流(jsp,do)
3、resin -->大型动态web服务主流,互联网java容器主流(jsp,do)
4、php(fcgi)-->大中小网站,php程序的解析容器。
a.配合apache,php不是守护进程,而是mod_php5.so(module)
b.配合nginx,lighttpd,php守护进程模式,fcgi模式。


apache的特点:
功能强大、配置简单、速度快、应用广泛、性能稳定可靠,并可做代理服务器或负载均衡来使用。
apache的应用场合:
使用apache运行静态html网页、图片(处理静态小文件能力不及nginx)。
使用apache结合php引擎运行php、perl、python等程序,lamp。
使用apache结合tomcat/resin运行jsp,java等程序,成为中小企业的首选。
使用apache做代理、负载均衡、rewrite规则过滤等等。

三、源码安装apache

3.1)源码下载

http://mirror.bit.edu.cn/apache/httpd/

3.2)安装

cd httpd-2.2.27
./configure \
--prefix=/application/apache2.2.27 \
--enable-deflate \
--enable-expires \
--enable-headers \
--enable-modules=most \
--enable-so \
--with-mpm=worker \
--enable-rewrite

检验编译是否正确

echo $?

安装

make && make install

做个软链接,舒服

ln -s apache2.2.27 apache

3.3)检查语法,开启服务

检查语法
[root@rsyncserver ~]# /application/apache/bin/apachectl -t
开启服务
[root@rsyncserver ~]# /application/apache/bin/apachectl start

此时在客户端浏览器访问服务器的ip会显示It works!

如果一个进程在执行的过程中太慢,可以尝试跟踪一下进程     strace

3.4)查看服务器网页存放默认的根目录,,,站点目录

[root@rsyncserver conf]# grep -i documentroot httpd.conf
# DocumentRoot: The directory out of which you will serve your
DocumentRoot "/application/apache2.2.27/htdocs"
# This should be changed to whatever you set DocumentRoot to.
# access content that does not live under the DocumentRoot.

四、httpd.conf

配置文件下默认定义的首页的名字

<IfModule dir_module>
    DirectoryIndex index.html   //改成了oldboy.html,可以有多个,按照空格分
</IfModule>

改了名字之后需要平滑重启

[root@rsyncserver htdocs]# /application/apache/bin/apachectl -t
Syntax OK
[root@rsyncserver htdocs]# /application/apache/bin/apachectl graceful

配置文件里面的目录访问权限

<Directory />
    Options FollowSymLinks
    AllowOverride None
    Order deny,allow
    Deny from all
</Directory>
禁止任何用户访问/目录
<Directory "/application/apache2.2.27/htdocs">
 Options Indexes FollowSymLinks
 AllowOverride None
 Order allow,deny
 Allow from all
</Directory>

如果此时htdocs里面没有找到默认的首页名字就会显示目录结构,,,,所以第一个优化就是将Indexes 改成-Indexes或者删除。此时如果没有响应的默认首页,就会报403的错,这是个非常重要的安全参数!!!

 

五、extra

重点:httpd-vhosts.conf httpd-mpm.conf httpd-default.conf(了解,其中有参数可以关闭服务器端向客户端展示的服务器版本)

httpd-default.conf

ServerSignature Off

ServerTokens Prod

还有的可以看本地图片,在http-apache中。

六、虚拟主机,部署多个站点,每个站点用不同的域名和站点目录,不同的端口,不同的ip

虚拟主机的分类:
a.基于域名(重要的)
b.基于端口(自己了解)
c.基于ip(自己了解)
这些都可以相互配合,例如域名加端口,ip加端口

Apache 在接受到请求时,首先会默认第一个VirtualHost,然后再找匹配的,如果没有匹配的,就是第一个VirtualHost起作用。 因此在httpd.conf中,将<Dicrectory />(这个是所有目录的默认配置)和 <Direcotry /opt/lampp/htdocs>的权限,都是deny from all.作为默认。

6.1)基于域名例子:

域名						站点目录
http://www.etiantian.org			/var/html/www
http://blog.etiantian.org			/var/html/blog
http://bbs.etiantian.org			/var/html/bbs

6.1.2)创建三个web站点目录

[root@rsyncserver ~]# mkdir -p /var/html/{www,blog,bbs}
[root@rsyncserver ~]# tree /var/html/
/var/html/
├── bbs
├── blog
└── www

6.1.3)在三个站点目录中写入一个首页,并导入数据

[root@rsyncserver ~]# for name in www blog bbs;do echo "http://$name.etiantian.org" >>/var/html/$name/index.html;done
[root@rsyncserver ~]# for name in www blog bbs;do cat /var/html/$name/index.html;done
http://www.etiantian.org
http://blog.etiantian.org
http://bbs.etiantian.org

6.1.4)配置虚拟主机

[root@rsyncserver extra]# vim httpd-vhosts.conf
NameVirtualHost *:80

<VirtualHost *:80>
    ServerAdmin 491964349@qq.com
    DocumentRoot "/var/html/www"
    ServerName www.etiantian.org
    ServerAlias etiantian.org
    ErrorLog "logs/www-error_log"
    CustomLog "logs/www-access_log" common
</VirtualHost>


<VirtualHost *:80>
    ServerAdmin 491964349@qq.com
    DocumentRoot "/var/html/blog"
    ServerName blog.etiantian.org
    ErrorLog "logs/blog-error_log"
    CustomLog "logs/blog-access_log" common
</VirtualHost>

<VirtualHost *:80>
    ServerAdmin 491964349@qq.com
    DocumentRoot "/var/html/bbs"
    ServerName bbs.etiantian.org
    ErrorLog "logs/bbs-error_log"
    CustomLog "logs/bbs-access_log" common
</VirtualHost>

 

6.1.5)此时是不可以访问页面的,因为没有在主配置主文件添加响应的插件

[root@rsyncserver extra]# vim ../httpd.conf 
# Server-pool management (MPM specific)
Include conf/extra/httpd-mpm.conf
# Virtual hosts
Include conf/extra/httpd-vhosts.conf

6.1.6)检查、平滑重启

[root@rsyncserver bin]# ./apachectl -t
Syntax OK
[root@rsyncserver bin]# ./apachectl graceful

6.1.7)本地解析

因为我的域名是私有的本地的,所以我要在本地做解析,然后再windows C:\Windows\System32\drivers\etc\hosts 下加上
192.168.222.140 www.etiantian.org blog.etiantian.org bbs.etiantian.org

然后再windows端访问ping www.etiantian.org是否通

6.1.8)此时还是不可以访问,因为少了个很重要的步骤,主配置文件没有开启权限目录的响应配置

 vim httpd.conf 
<Directory "/var/html">
 Options -Indexes FollowSymLinks
 AllowOverride None
 Order allow,deny
 Allow from all
</Directory>

此时就可以了。

6.2)基于端口加域名的例子,内网用的多,这个是基于上面的配置的,如果单纯的配置这个,还要参考上面的一些配置

[root@rsyncserver conf]# vim httpd.conf 
Listen 80
Listen 8000
Listen 9000

[root@rsyncserver extra]# vim httpd-vhosts.conf 
NameVirtualHost *:80
NameVirtualHost *:8000
NameVirtualHost *:9000
<VirtualHost *:80>
    ServerAdmin 491964349@qq.com
    DocumentRoot "/var/html/www"
    ServerName www.etiantian.org
    ServerAlias etiantian.org
    ErrorLog "logs/www-error_log"
    CustomLog "logs/www-access_log" common
</VirtualHost>


<VirtualHost *:8000>
    ServerAdmin 491964349@qq.com
    DocumentRoot "/var/html/blog"
    ServerName blog.etiantian.org
    ErrorLog "logs/blog-error_log"
    CustomLog "logs/blog-access_log" common
</VirtualHost>

<VirtualHost *:9000>
    ServerAdmin 491964349@qq.com
    DocumentRoot "/var/html/bbs"
    ServerName bbs.etiantian.org
    ErrorLog "logs/bbs-error_log"
    CustomLog "logs/bbs-access_log" common

[root@rsyncserver bin]# ./apachectl -t
Syntax OK
[root@rsyncserver bin]# ./apachectl graceful


访问的时候需要加上端口号

6.3)基于ip的虚拟主机

[root@rsyncserver extra]# ifconfig eno16777736:0 192.168.222.141/24 up
[root@rsyncserver extra]# ifconfig eno16777736:1 192.168.222.142/24 up

[root@rsyncserver extra]# vim httpd-vhosts.conf 
如果出现问题可以加NameVirtualHost *:80

<VirtualHost 192.168.222.140:80>
    ServerAdmin 491964349@qq.com
    DocumentRoot "/var/html/www"
    ServerName 192.168.222.140
    ServerAlias etiantian.org
    ErrorLog "logs/www-error_log"
    CustomLog "logs/www-access_log" common
</VirtualHost>


<VirtualHost 192.168.222.141:80>
    ServerAdmin 491964349@qq.com
    DocumentRoot "/var/html/blog"
    ServerName 192.168.222.141
    ErrorLog "logs/blog-error_log"
    CustomLog "logs/blog-access_log" common
</VirtualHost>

<VirtualHost 192.168.222.142:80>
    ServerAdmin 491964349@qq.com
    DocumentRoot "/var/html/bbs"
    ServerName 192.168.222.142
    ErrorLog "logs/bbs-error_log"
    CustomLog "logs/bbs-access_log" common
</VirtualHost>


对于主配置文件httpd.conf里面的监听端口非常的重要

6.4)问题

httpd: Could not reliably determine the server's fully qualified domain name, using fe80::20c:29ff:fe07:4bb7 for ServerName
fully qualified domain name=FQDN
[root@rsyncserver extra]# vim ../httpd.conf 
ServerName 127.0.0.1:80
[root@rsyncserver extra]# ../../bin/apachectl graceful
[root@rsyncserver extra]# 
此时在启动就没有问题了,这个无关紧要

 

七、apache日志轮询,,,,可以参考http://oldboy.blog.51cto.com/2561410/584513

7.1)apache日志格式详细说明

通用日志格式(Common Log Format)
组合日志格式(Commbined Log Format) 这个工作中用的多

7.2)安装apache日志轮询软件

unzip cronolog-1.6.2.zip 
cd cronolog-1.6.2
chmod 744 configure
./configure 
make && make install
echo $?

7.3)cronolog日志轮询配置说明:

提示:轮询日志的正确写法,被轮询的日志路径要写全路径
按天轮询(生产环境常见用法,推荐使用):

[root@promote /]# mkdir -p app/logs

[root@promote extra]# vim httpd-vhosts.conf
<VirtualHost *:80>
    ServerAdmin 491964349@qq.com
    DocumentRoot "/var/html/bbs"
    ServerName bbs.etiantian.org
    ErrorLog "logs/bbs-error_log"
    CustomLog "|/usr/local/sbin/cronolog /app/logs/access_bbs_%Y%m%d.log" combined			====改此处配置
</VirtualHost>

  

posted @ 2017-08-30 14:39  JvvYou  阅读(695)  评论(0编辑  收藏  举报