一、Apache服务
Apache是Apache软件基金会的一个开放源码的网页服务器,是世界使用最广泛的Web服务端之一,译为阿帕奇;Apache具有优秀的性能,稳定性,是通过加载模块来提供各种功能。
1、主配置httpd.conf
ServerRoot #服务目录 ServerAdmin #管理员邮箱 user #运行服务的用户身份 group #运行服务的组身份 ServerName #网站服务器的域名 DocumentRoot #网页文档的根目录 Listen #监听的IP地址、端口号 PidFile #保存httpd进程PID号的文件 DirectoryIndex #默认的索引页文件 ErrorLog #错误日志文件的位置 CustomLog #访问日志文件的位置 LogLevel #记录日志的级别,默认为warn Timeout #网络连接超时,默认为300秒 KeepAlive #http是否持续连接,可选On或Off MaxKeepAliveRequests #保持一个连接的最大请求数 KeepAliveTimeout #断开连接前的时间 Include #需要包含进来的其他配置文件 <Directory /> #区域设置 …… </Directory>
#工作模式(默认Prefork)
<IfModule prefork.c> StartServers 8 #默认启动8个httpd进程 MinSpareServers 5 #最小的空闲进程数 MaxSpareServers 20 #最大的空闲进程数,如果空闲进程数大于这个值,Apache会自动kill掉一些多余进程 ServerLimit 256 #服务器允许配置进程数的上限 MaxClients 256 #同时最多能发起256个访问,超过的要进入队列等待 MaxRequestsPerChild 4000 #每个进程启动的最大线程数,如达到限制数时进程将结束,如置为0则子线程永不结束 </IfModule> <IfModule worker.c> StartServers 4 MaxClients 300 MinSpareThreads 25 MaxSpareThreads 75 ThreadsPerChild 25 MaxRequestsPerChild 0 </IfModule>
2、虚拟主机配置
1>.基于域名虚拟主机
每个网站使用不同域名,对应IP地址和TCP端口相同,也是使用最多的
[root@www ~]# mkdir -p /var/www/test1.com /var/www/test2.com [root@www ~]# echo "www.test1.com" > /var/www/test1.com/index.html [root@www ~]# echo "www.test2.com" > /var/www/test2.com/index.html [root@www ~]# vi /etc/httpd/conf/httpd.conf ServerName 192.168.0.200:80 #设置本机IP地址,不设置会启动报错 NameVirtualHost *:80 <VirtualHost *:80> ServerName www.test1.com DocumentRoot /var/www/test1.com ServerAlias test1.com ErrorLog "/var/www/logs/test1.com-error_log" CustomLog "/var/www/logs/test1.com-access_log" common </VirtualHost> <VirtualHost *:80> ServerName www.test2.com DocumentRoot /var/www/test2.com ServerAlias test2.com ErrorLog "/var/www/logs/test2.com-error_log" CustomLog "/var/www/logs/test2.com-access_log" common </VirtualHost> [root@www ~]# service httpd restart 设置权限 [root@www~]# chmod -R 750 /var/www/test1.com/ /var/www/test2.com/ [root@www~]# chgrp -R apache /var/www/test1.com/ /var/www/test2.com/
http://www.test1/2.com #测试成功,没有dns服务器情况下,客户端需要做host记录
2>.基于IP虚拟主机
每个网站使用不同域名,不同IP,相同TCP端口 (配置多个IP,eth0:0表示网卡的第二个IP地址,依次0、1、2等添加更多IP地址)
[root@www~]# cd /etc/sysconfig/network-scripts/ [root@www network-scripts]# cp ifcfg-eth0 ifcfg-eth0:0 [root@www network-scripts]# vi ifcfg-eth0:0 DEVICE=eth0:0 TYPE=Ethernet ONBOOT=yes BOOTPROTO=static IPADDR=192.168.0.200 GATEWAY=192.168.0.1 NETMASK=255.255.255.0
[root@www ~]# vi /etc/httpd/conf/httpd.conf NameVirtualHost *:80 <VirtualHost 192.168.0.200:80> ServerName www.test1.com DocumentRoot /var/www/test1.com ServerAlias test1.com ErrorLog "/var/www/logs/test1.com-error_log" CustomLog "/var/www/logs/test1.com-access_log" common </VirtualHost> <VirtualHost 192.168.0.201:80> ServerName www.test2.com DocumentRoot /var/www/test2.com ServerAlias test2.com ErrorLog "/var/www/logs/test2.com-error_log" CustomLog "/var/www/logs/test2.com-access_log" common </VirtualHost> [root@www ~]# service httpd restart
3>.基于端口虚拟主机
每个网站相同域名,相同IP,不同端口
[root@www ~]# vi /etc/httpd/conf/httpd.conf NameVirtualHost *:80 Listen 8080 Listen 8081 <VirtualHost *:8080> ServerName www.test1.com DocumentRoot /var/www/test1.com ServerAlias test1.com ErrorLog "/var/www/logs/test1.com-error_log" CustomLog "/var/www/logs/test1.com-access_log" common </VirtualHost> <VirtualHost *:8081> ServerName www.test2.com DocumentRoot /var/www/test2.com ServerAlias test2.com ErrorLog "/var/www/logs/test2.com-error_log" CustomLog "/var/www/logs/test2.com-access_log" common </VirtualHost> [root@www ~]# service httpd restart
3、基于用户的身份验证
[root@www ~]# vi /etc/httpd/conf/httpd.conf <VirtualHost *:80> DocumentRoot /var/www/test.com ServerName www.test.com ServerAlias test1.com ErrorLog "/var/www/logs/test.com-error_log" CustomLog "/var/www/logs/test.com-access_log" common <Directory "/var/www/html"> AuthName "Please input Password" #保护领域的提示信息 AuthType basic #定义使用认证方式,basic或digest AuthUserFile /etc/httpd/.passwd #指定认证口令文件的位置 #Require user user1 #授权给指定的一个或多个用户,也可以是一个组:Require group 组名 Require valid-user #授权给认证口令文件的所有用户 </Directory> </VirtualHost>
4、创建用户及密码,此处密码与用户的系统密码无关
[root@www ~]# htpasswd -c /etc/httpd/.htpasswd user1 New password: Re-type new password: Adding password for user user [root@www ~]# service httpd restart
5、基于客户端地址访问控制,主要应用在区域<Directory >……</Directory>
Order配置项,定义控制顺序
1>.先允许后拒绝,默认拒绝所有:Order allow,deny
2>.先拒绝后允许,默认允许所有:Order deny,allow
Allow、Deny配置项,设置允许或拒绝的IP地址、主机名
1>.Deny from address1 address2 …
2>.Allow from address1 address2 …
[root@www ~]# vi /etc/httpd/conf/httpd.conf NameVirtualHost 192.168.0.200 <VirtualHost *:80> DocumentRoot /var/www/test.com ServerName www.test.com ServerAlias test1.com ErrorLog "/var/www/logs/test.com-error_log" CustomLog "/var/www/logs/test.com-access_log" common <Directory "/var/www/html"> order allow,deny allow from 192.168.1.0/24 #all允许所有 </Directory> </VirtualHost> [root@www ~]# service httpd restart
6、Apache下301转向代码(需要开启mod_rewrite)
1>.将不带www的域名转向到带abc的域名下
Options +FollowSymLinks RewriteEngine on RewriteCond %{HTTP_HOST} ^www.test.com [NC] RewriteRule ^(.*)$ http://abc.www.test.com
2>.重定向到新域名
Options +FollowSymLinks RewriteEngine on RewriteRule ^(.*)$ http://www.test.com/$1 [L,R=301]
3>.使用正则进行301转向,网站实现伪静态
Options +FollowSymLinks RewriteEngine on RewriteRule ^news-(.+)\.html$ news.php?id=$1 #将news.php?id=123这样的地址转向到news-123.html
7、Apache下虚拟主机配置301跳转
为实现URL规范化,SEO通常将不带www的域名转向到带www域名,vhosts.conf中配置为:
ServerName www.test.com DocumentRoot /var/www/html ServerName test.com RedirectMatch permanent ^/(.*) http://www.test.com/$1
二、Nginx服务
Nginx (“engine x”) 是一个高性能的 HTTP 和 反向代理服务器,也是一个 IMAP/POP3/SMTP代理服务器
1、apache与nginx优缺点
1>.apache对客户端的响应是支持并发的,运行守护进程后,会产生多个子进程/线程,每个子进程/线程分别对客户端请求进行响应。
2>.apache可以提供静态和动态服务,通常使用php模块来实现,mod_php5或叫apxs2。
3>.apache缺点:工作方式是基于多进程模式,每个用户请求就会创建一个子进程/线程来响应,如果并发请求非常多的时候,就会占用极多的系统资源CPU和内存,因此在并发量大情况下,apache并不是优势。
4>.nginx稳定性和低系统资源消耗的特点,并发连接的高处理能力(单台物理服务器可支持30000~50000个并发请求),nginx采用异步服务器模式,异步服务器事件驱动模式,用户并发请求只需一个进程或几个线程,因此占用的系统资源也相对非常少,比如,10000的并发连接请求,nginx只需要几十M的内存,而apache可能需要几百M的内存。
5>.nginx没有内置的模块来对PHP进行支持,而是通过第三方FastCGI模块来支持处理。
2、安装Nginx
[root@www ~]# yum -y install pcre-devel zlib-devel [root@www ~]# useradd -M -s /sbin/nologin nginx [root@www ~]# tar zxvf nginx-1.4.2.tar.gz [root@www ~]# cd nginx-1.4.2 [root@www nginx-1.4.2]# ./configure --prefix=/usr/local/nginx \ --user=nginx --group=nginx --with-http_stub_status_module [root@www nginx-1.4.2]# make && make install [root@www nginx-1.4.2]# ln -s /usr/local/nginx/sbin/nginx /usr/local/sbin/ #设置软链接,方便使用
3、常用命令
nginx -t :检测配置文件语法是否正确 nginx :启动nginx服务 killall -9 nginx :关闭nginx服务
4、编写nginx启动 停止 重启等SysV管理脚本,方便使用
[root@www ~]# vi /etc/init.d/nginx #!/bin/bash # chkconfig: 345 99 20 # description: Nginx service control script PROG="/usr/local/nginx/sbin/nginx" PIDF="/usr/local/nginx/logs/nginx.pid" case "$1" in start) $PROG echo "Nginx service start success." ;; stop) kill -s QUIT $(cat $PIDF) echo "Nginx service stop success." ;; restart) $0 stop $0 start ;; reload) kill -s HUP $(cat $PIDF) echo "reload Nginx config success." ;; *) echo "Usage: $0 {start|stop|restart|reload}" exit 1 esac [root@www ~]# chmod +x /etc/init.d/nginx [root@www ~]# chkconfig --add nginx [root@www ~]# chkconfig nginx on
5、主配置文件nginx.conf
全局配置
user nobody; #默认运行用户,可以编译时指定 worker_processes 1; #启动工作进程数,一般是cpu的两倍 error_log logs/error.log; #错误日志位置 pid logs/nginx.pid; #pid文件位置
I/O事件配置
events { worker_connections 1024; #每个进程允许的最大连接数 }
HTTP配置
http { include mime.types; #设置mime类型(conf/mime.types) default_type application/octet-stream; #设置日志格式 log_format main '$remote_addr - $remote_user [$time_local] "$request" ' '$status $body_bytes_sent "$http_referer" ' '"$http_user_agent" "$http_x_forwarded_for"'; access_log logs/access.log main; #访问日志位置 sendfile on; #支持文件发送、下载 keepalive_timeout 65; #连接保持超时时间 gzip on; #开启gzip动态压缩 #配置虚拟主机 server { listen 80; server_name localhost; #设置域名 charset utf8; #设置网页默认字符集 access_log logs/host.access.log main; #访问日志 location / { root html; #网页根目录位置,默认在安装目录html下 index index.html index.htm; #网站首页 } error_page 404 /404.html; #访问网页不存在或删除,返回的页面 error_page 500 502 503 504 /50x.html;内部错误返回页面 location = /50x.html { root html; } } }
6、虚拟主机配置
[root@www nginx]# vi /usr/local/nginx/conf/nginx.conf #在http{}添加包含虚拟主机配置 include /usr/local/nginx/vhost/*.conf; [root@www nginx]# vi /usr/local/nginx/conf/vhost/test1.com.conf #创建虚拟主机配置文件 server { listen 80; server_name www.test1.com test1.com; #设置域名 charset utf8; #设置网页默认字符集 access_log logs/test1.com.log main; #访问日志 location / { root /usr/local/nginx/html/test1.com; #网页根目录位置 index index.html index.htm; #网站首页 } }
7、Nginx域名重定向
server { listen 80; server_name www.test.com test.com; location / { rewrite "^/(.*)$"http://bj.test.com; } }
8、Nginx网站目录跳转域名
server { listen 80; server_name www.test.com test.com; location / { rewrite ^/Login/login.html http://www.test.com; }
9、Nginx虚拟目录并设置用户认证
location ~ /stats{ root /usr/local/nginx/html/; location ~ \.php$ { fastcgi_pass 127.0.0.1:9000; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME /usr/local/nginx/html/$fastcgi_script_name; include fastcgi_params; } auth_basic "说明信息"; auth_basic_user_file /usr/local/nginx/.htpasswds; }
10、Nginx伪静态配置(wordpress或discuz)
server { listen 80; server_name www.yngx.net yngx.net; if(!-e $request_filename) { rewrite ^/(.*)$ /index.php?p=$1 last; }
11、配置FastCGI支持PHP网页
#安装gd库 [root@www ~]# yum install -y gd freetype freetype-devel libpng libpng-devel libjpeg* libxml2 libxml2-devel openssl openssl-devel [root@www php-5.4]# tar zxvf php-5.4.tar.gz [root@www php-5.4]# ./configure --prefix=/usr/local/php \ -with-config-file-path=/usr/local/php/etc \ -with-gd --with-zlib --with-iconv --enable-zip --enable-pdo \ -enable-xml --with-openssl --with-curl --enable-bcmath --enable-ftp \ -enable-mbstring --enable-fpm --with-fpm-user=nginx \ -with-fpm-group=nginx [root@www php-5.4]# make && make install [root@www php-5.4]# cp php.ini-production /usr/local/php/etc/php.ini [root@www php-5.4]# cp sapi/fpm/init.d.php-fpm /etc/rc.d/init.d/php-fpm [root@www php-5.4]# chmod +x /etc/rc.d/init.d/php-fpm [root@www nginx]# cd /usr/local/nginx [root@www nginx]# cp etc/php-fpm.conf.default /usr/local/php/etc/php-fpm.conf #复制php-fpm配置模板 [root@www nginx]# vi etc/php-fpm.conf user = nginx group = nginx pid = run/php-fpm.pid pm.start_server = 20 #启动时开启进程数 pm.min_spare_servers = 5 #最小空闲进程数 pm.max_spare_servers = 35 #最多空闲进程数 [root@www php-5.4]# service php-fpm start [root@www php-5.4]# chkconfig php-fpm on [root@www php-5.4]# vi /usr/local/nginx/conf/nginx.conf #访问php页面配置段,去掉以下注释 location ~ \.php$ { root html; fastcgi_pass 127.0.0.1:9000; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME /usr/local/nginx/html$fastcgi_script_name; #SCRIPT_FILENAME后面写网站根目录 include fastcgi_params; }
测试:
[root@www nginx]# vi html/index.php <? php phpinfo(); ?>
三、AWStats+JAWStats日志分析工具
Awstats是一款基于Perl的WEB日志分析工具,而JAWStats是一款基于PHP的统计套件,旨在为Awstats提供更为精美图形界面。
JAWStats 是一个用来统计网站日志的工具,在 AWStats 的基础上生成更加清晰的关于网站访问数据的图表、表格。
它可以统计您站点的如下信息:
1、安装配置AWStats
下载:http://www.awstats.org/#DOWNLOAD
[root@www ~]# tar zxvf awstats-7.2.tar.gz [root@www ~]# mv awstats-7.2 /usr/local/awstats [root@www ~]# chown -R root.root /usr/local/awstats/ [root@www ~]# chmod +x /usr/local/awstats/tools/*.pl [root@www ~]# chmod +x /usr/local/awstats/wwwroot/cgi-bin/*.pl [root@www ~]# cd /usr/local/awstats/tools/ [root@www tools]# ./awstats_configure.pl #向导工具,生成网站配置文件
1>.输入 none 然后回车
2>.输入 y 确认创建配置文件
3>.输入配置文件名称,一般输入域名。
4>.配置文件使用默认路径 /etc/awstats
5>.按回车继续
6>.按回车完成配置文件的创建
[root@www tools]# vi /etc/awstats/awstats.www.test.com.conf LogFile=LogFile="/var/log/httpd/access_log" #修改统计网站的日志文件路径 DirData="/var/lib/awstats" #默认日志信息统计数据库 [root@www tools]# mkdir /var/lib/awstats #创建统计数据库 [root@www tools]# perl /usr/local/awstats/wwwroot/cgi-bin/awstats.pl -update -config=www.test.com #为指定网站生成数据 [root@www tools]# /usr/local/awstats/tools/awstats_updateall.pl now #为所有网站生成数据 [root@www tools]# crontab -e #设置定时运行日志分析程序 * */1 * * * /usr/local/awstats/tools/awstats_updateall.pl now
添加apache支持awstats参数
[root@www ~]# vi /etc/httpd/conf/httpd.conf Alias /awstatsclasses "/usr/local/awstats/wwwroot/classes/" Alias /awstatscss "/usr/local/awstats/wwwroot/css/" Alias /awstatsicons "/usr/local/awstats/wwwroot/icon/" ScriptAlias /awstats/ "/usr/local/awstats/wwwroot/cgi-bin/" <Directory "/usr/local/awstats/wwwroot"> Options None AllowOverride None Order allow,deny Allow from all </Directory> [root@www ~]# service httpd restart [root@www ~]# chmod 755 -R /usr/local/awstats
测试访问:http://192.168.0.102/awstats/awstats.pl?config=www.test.com
2、安装配置JAWStats
下载:http://www.jawstats.com/download
[root@www ~]# mkdir /usr/local/jawstats [root@www ~]# tar zxvf jawstats-0.7beta.tar.gz -C /usr/local/jawstats [root@www ~]# cd /usr/local/jawstats/ [root@www jawstats]# cp config.dist.php config.php [root@www jawstats]# vi config.php <?php // core config parameters $sDefaultLanguage = "zh-cn"; #设置默认语言 $sConfigDefaultView = "thismonth.all"; #默认按月显示 $bConfigChangeSites = true; #是否可以更换站点 $bConfigUpdateSites = true; #是否可以更新统计数据 $sUpdateSiteFilename = "xml_update.php"; // individual site configuration $aConfig["www.test.com"] = array( #web站点域名 "statspath" => "/var/lib/awstats", #awstats统计数据目录 "updatepath" => "/usr/local/awstats/wwwroot/cgi-bin/awstats.pl", #用于更新统计数据 "siteurl" => "http://www.test.com", #点击首页标题前往的地址 "sitename" => "www.test.com", #首页标题 "theme" => "default", "fadespeed" => 250, "password" => "123456", #更新统计数据输入的密码 "includes" => "", "language" => "zh-cn" ); ?>
3、添加中文语言包
下载:http://www.jawstats.com/src/languagepack.zip
[root@www jawstats]# cd /usr/local/jawstats/languages/ [root@www languages]# rm -rf ./* [root@www languages]# unzip languagepack.zip [root@www languages]# rm -rf languagepack.zip
4、配置虚拟目录用户认证访问
[root@www ~]# vi /etc/httpd/conf/httpd.conf Alias /tongji "/usr/local/jawstats" <Directory "/usr/local/jawstats"> Options Indexes MultiViews AuthType Basic AuthName "Please Login" AuthUserFile /etc/httpd/.passwd Require valid-user </Directory>
5、测试
http://www.test.com/tongji