存档

作者存档

apache开启gzip压缩 给网站加速

2011年11月20日 没有评论

上篇文章介绍了IIS启用gzip页面压缩技术 给网站加速,那么如果我的服务器是apache的环境应该如何操作呢?

在Apache默认的http.conf配置文件中没有开启gzip压缩,apache1.3.x可以用mod_gzip进行优化网页浏览的速度,在apache2中也尝试用mod_gzip,但是配置后确发现网页不能正确显示(空白页),所以改换为mod_deflate。

下面说一下怎样在Apache2下开启gzip压缩:

如果要开启gzip的话,一定要打开下面二个模块.

LoadModule headers_module modules/mod_headers.so
LoadModule deflate_module modules/mod_deflate.so

编辑 httpd.conf 文件,

# 加载deflate模块
LoadModule deflate_module modules/mod_deflate.so

在httpd.conf文件中加入以下内容

DeflateCompressionLevel 3
AddOutputFilter DEFLATE html xml php js css
<Location />
SetOutputFilter DEFLATE
BrowserMatch ^Mozilla/4 gzip-only-text/html
BrowserMatch ^Mozilla/4\.0[678] no-gzip
BrowserMatch \bMSIE !no-gzip !gzip-only-text/html
SetEnvIfNoCase Request_URI \\.(?:gif|jpe?g|png)$ no-gzip dont-vary
SetEnvIfNoCase Request_URI .(?:exe|t?gz|zip|bz2|sit|rar)$ no-gzip dont-vary
SetEnvIfNoCase Request_URI .(?:pdf|mov|avi|mp3|mp4|rm)$ no-gzip dont-vary
</Location>

然后保存,重启apache即可!

注:
DeflateCompressionLevel 3    //设置压缩频率,取值范围在 1(最低压缩率) 到 9(最高压缩率)之间,不建议设置太高,虽然有很高的压缩率,但是占用更多的CPU资源
AddOutputFilter DEFLATE html xml php js css     //要压缩的文件类型

IIS启用gzip页面压缩技术 给网站加速

2011年11月20日 没有评论

启用Gzip压缩是在Web服务器和浏览器间传输压缩文本内容的方法。

Gzip压缩采用通用的压缩算法压缩HTML、JavaScript、CSS等静态文件和asp、aspx、php、jsp等动态文件。

压缩的最大好处就是降低了网络传输的数据量,从而提高客户端浏览器的访问速度。

当然,同时也会增加一点点服务器的负担。

通过Windows2003系统设置的方式启用Gzip的突出优点就是效率较高,所以我们直接设置IIS让其支持Gzip压缩。

以下是启用Gzip 压缩的步骤

单击“开始”—“管理工具”—“Internet 信息服务(IIS)管理器”,打开IIS管理器;

在IIS管理器中双击本地计算机,右侧显示计算机中IIS列表,在“网站”上右键选择属性;

打开网站属性界面;

单击“服务”标签,选中“压缩应用程序文件”和“压缩静态文件”,同时根据情况设置临时目录的最大容量,初期可以限制为1G左右;

返回Internet信息服务(IIS)管理器,右击“Web服务扩展”,弹出Web服务扩展菜单;

选择“增加一个新的Web服务扩展(A)”;

在“新建Web服务扩展”框中输入扩展名“HTTPComPRession”,添加“要求的文件”为C:\WINDOWS\system32\inetsrv\gzip.dll,其中 Windows系统目录根据您的安装可能有所不同,选中“设置扩展状态为允许”;

使用文本编辑器打开C:\Windows\System32\inetsrv\MetaBase.xml(建议先备份),在该文件中搜索HcScriptFileExtensions,设置进行压缩的文件后缀名,系统默认的是asp、dll和exe,根据格式增加aspx、php、jsp等,再搜索HcFileExtensions,增加shtm、shtml、js、css、swf、mid、xml、mp3等静态文件格式;

在运行中输入“net stop iisadmin /y”停止IIS服务,运行完成后保存Metabase.xml;

在运行中输入“iisreset”重启IIS服务;

设置完成后,可以打开最知名的验证网站来验证,网址是http://www.pipeboost.com
找到验证窗口Real-Time Acceleration Report,输入网址,单击“Analyze Url”按钮进行验证;

执行验证完成,如果Document Status的状态为ComPRessed,就说明压缩成功了。

如果状态显示为:uncompressed,那么建议检查 gzip.dll文件的权限。

另外,在站长工具上也可以查看到页面是否经过了压缩。地址为:http://tool.chinaz.com/Gzips/

dedecms 5.7 后台广告及版权去除

2011年11月18日 没有评论

新版的dedecms 5.7 版本在后台登陆的时候,以及登陆之后的页面,都留了广告的位置。原则上对我们影响不大,但是细想一下,一旦dedecms的广告服务器被攻陷,广告位的位置被挂上了马,后果可想而知。于是想到去掉它。下面开始行动。

一、去除后台登陆页面广告。

1、用记事本打开/dede/templets/login.htm文件,找到以下代码并删除。

<div><iframe name="loginad" src="login.php?dopost=showad" frameborder="0" id="loginad" scrolling="no" marginwidth="0" marginheight="0" width="100%"></iframe></div>

以上代码是后台登陆框下方的广告。

<div>Powered by<a href="http://www.dedecms.com" title="DedeCMS官网"><strong>DedeCMS<?php echo $cfg_version; ?></strong></a>&copy; 2004-2011 <a href="http://www.desdev.cn" target="_blank">DesDev</a> Inc.</div>
</div>

以上代码是版权声明部分,也可以直接删除的。然后再顺手修改标题部分代码:

<title><?php echo $cfg_softname." ".$cfg_version; ?></title>

修改为:

<title><?php echo $cfg_webname; ?> - 后台管理登陆</title>    最终效果为:网站名称 - 后台管理登陆

2、打开/dede/login.php 文件,找到第42到46行部分代码,将其去掉即可。

if ($dopost=='showad')
{
    include('templets/login_ad.htm');
    exit;
}

并且还要删除对应的”/dede/templets/login_ad.htm”模板文件,这个文件是多余的,官方加的广告链部分。

二、去除后台登陆后默认首页广告

主要去掉的部分为:赞助商链接,开发团队,商业授权查询

1、打开/dede/index_body.php,在文件最末尾处找到如下代码:

<?php
exit;
} else if ($dopost=='showauth')
{
    include('templets/index_body_showauth.htm');
    exit;
} else if ($dopost=='showad')
{
    include('templets/index_body_showad.htm');
    exit;
}
?>

修改为:

<?php
exit;
}
?>

然后,删除/dede/templets/index_body_showauth.htm  和  /dede/templets/index_body_showad.htm  文件即可。

2、打开/dede/templets/index_body.htm,删除如下代码:

<dl class='dbox' id="item8">
            <dt class='lside'><div class='l'>赞助商链接(<a href="http://ad.dedecms.com/ad/" target="_blank">说明</a>)</div></dt>
            <dd>
                <iframe name="showad" src="index_body.php?dopost=showad" frameborder="0" width="100%" id="showad" frameborder="0" scrolling="no"  marginheight="5"></iframe>
            </dd>
        </dl><!--赞助商链接结束-->

以上是 赞助商链接的广告

        <dl class='dbox' id="item5">
            <dt class='lside'><div class='l'>开发团队</div></dt>
            <dd class='intable'>
                <table width="98%">
                    <tr>
                        <td width='25%' height='36' class='nline' style="text-align:right"> 主程序开发: </td>
                        <td class='nline' style="text-align:left">天涯、IT柏拉图、沙羡、蓝色随想、Niap、木匠、cha369</td>
                    </tr>
                    <tr>
                        <td height='36' class='nline' style="text-align:right">界面及交互设计:</td>
                        <td class='nline' style="text-align:left">尐湶細蓅、like、猪头心宇、方域、小王</td>
                    </tr>
                    <tr>
                        <td height='36' class='nline' style="text-align:right">官方论坛协助:</td>
                        <td class='nline' style="text-align:left">感谢以下站长(排名不分先后):疯狂的锤子、木木/阿杰</td>
                    </tr>
                </table>
            </dd>
        </dl><!--开发团队结束-->

以上是开发团队介绍信息。

        <dl class='dbox' id="item2">
            <dt class='lside'><span class='l'>商业授权查询</span></dt>
            <dd>              
                <iframe name="showauth" src="index_body.php?dopost=showauth" width="100%" frameborder="0" scrolling="no" marginwidth="10" marginheight="10" id="showauth"></iframe>               
            </dd>
        </dl><!--更新消息结束-->

以上是商业授权查询模块。

3、后台顶部版权信息及链接主要修改/dede/templets/index_top2.htm 和 /dede/templets/index2.htm 两个模板文件。

4、去掉左栏“系统帮助”,修改模板文件为:/dede/inc/inc_menu.php

apache网站访问日志按天分割

2011年11月17日 没有评论

默认情况下,apache中的网站,访问日志都是在一个文件中包含着的,时间一长,文件会特别大,根本无法打开查看了。于是想到将日志分割一下,类似于IIS的日志,一天记录一个文件。

linux下,在配置站点的时候,日志保存部分这样来填写:

ErrorLog "|/usr/local/apache/bin/rotatelogs /usr/local/apache/logs/52listen_error_log_%Y%m%d 86400 480"
CustomLog "|/usr/local/apache/bin/rotatelogs /usr/local/apache/logs/52listen_access_log_%Y%m%d 86400 480" combined

windows下的apache,稍微有点不同,按照下面这样来写

ErrorLog "|bin/rotatelogs.exe logs/52listen_error_log_%y%m%d.log 86400 480"
CustomLog "|bin/rotatelogs.exe logs/52listen_access_log_%y%m%d.log 86400 480" common

这样一来,网站访问日志会被apache自带的rotatelogs 工具分割开。在查看以及分析日志的时候,就可以按照时间选取需要的日志来查看了。

apache 使用 .htaccess 导致500错误

2011年11月17日 没有评论

今天在win主机上配置了一个apache+mysql+php 的环境,一切看似正常了。结果将程序转移过来,打开网站的时候,出现了500错误。于是乎查原因:

首先,怀疑的是连接mysql出错了,找出配置文件,修改mysql的连接信息,错误依然出现

然后,看到网站根目录下面有个 .htaccess 文件,于是想到会不会是此文件导致的,先将其改名。再次打开网站,可以正常访问了,但是之前的伪静态的页面,都无法显示了。

找出了问题所在,就好解决了。看来是apache默认装上之后,还是不支持 .htaccess 的,那么开始修改 httpd.conf 文件

首先,找到

#LoadModule rewrite_module modules/mod_rewrite.so

将前面的 #去掉,变成

LoadModule rewrite_module modules/mod_rewrite.so

然后查找 AllowOverride None

将其改为 AllowOverride All

最后,保存httpd.conf 文件,并且重启apache 服务,再次打开网站,一切正常。

Fatal error: Allowed memory size of 8388608 bytes exhausted 解决

2011年11月17日 没有评论

今天在给网站搬家时遇到一问题,出现了 Fatal error: Allowed memory size of 8388608 bytes exhausted 的错误,于是上网查资料,得知是php程序运行需要的内存超出了限制。找到几种解决方法:

一、修改.htaccess 文件

打开.htaccess  文件 最上面开头加上

php_value max_execution_time 1200
php_value memory_limit 200M
php_value post_max_size 200M
php_value upload_max_filesize 200M

然后保存,即可解决问题。(注:未经亲身测试)

二、修改php.ini文件

查找php.ini 文件中的 memory_limit,默认的应该是 8M;将此处修改为12M或者更大。

如:memory_limit = 12M;

(此方法经亲身测试,解决了问题)

如果您有更好的解决方法,可以在此留言给我

apache使用.htaccess防止盗链

2011年11月8日 没有评论

最近有个朋友说他的网站图片和一些文件可能被盗链了,导致空间的流量很快的用完,查了下相关资料,对其使用的空间做了防盗链。
朋友用的是linux的主机,apache的web服务器,于是使用.htaccess文件来控制。

.htaccess 文件设置如下:

RewriteEngine on
RewriteCond %{HTTP_REFERER} !^$ [NC]
RewriteCond %{HTTP_REFERER} !52listen.com [NC]
RewriteCond %{HTTP_REFERER} !jstkf.com [NC]
RewriteRule .(png|jpg)$ /no.gif [R,NC,L]

简单的解释一下上述语句:

1、RewriteCond %{HTTP_REFERER} !^$ [NC]

允许空“HTTP_REFERER”的访问,即允许用户在浏览器地址栏中直接输入图片地址时图片文件的显示。一般而言,这是可选的,不过,建议这么设置, 如果强迫必须具有“HTTP_REFERER”才能访问,可能会带来某些问题,比如说在用户通过代理服务器访问时。

2、RewriteCond %{HTTP_REFERER} !52listen.com [NC]

设置允许访问的HTTP来源,包括我们的站点自身,还有google,还可以多设置几行。多添加几个站点。

3、RewriteRule .*\.(jpg|png)$ /no.gif [R,NC,L]

定义被盗链时替代的图片,让所有盗链 jpg、gif、png 等文件的网页,显示根目录下的 no.gif 文件。注意:替换显示的图片不要放在设置防盗链的目录中,并且该图片文件体积越小越好。当然你也可以不设置替换图片,而是使用下面的语句即可:

RewriteRule .*\.(gif|jpg|png)$ – [F]

4、说明一下其中的R、NC 和 L

R 就是转向的意思

NC 指的是不区分大小写

L 的作用是指明本次转向到此结束,后续的转向不受先前判断语句的影响

5、防止盗链的文件类型

上例中是 gif、jpg、png,而根据需要,可更改或添加其他文件类型,如rar、mov等,不同文件扩展名间使用“|”分割。

经过以上设置,基本做到了简单的防止被盗链情况的发生,而且可以尽最大可能的减少服务器流量的无畏消耗。

Linux服务器安装后的优化

2011年11月7日 没有评论

  我们的服务器并不是安装完成后就可直接托管到机房了,而是需要进行一系列的优化配置和安全配置等.

  1,关闭不需要的服务

  这个应该很容易理解的,凡是我们的系统不需要的服务,一概关闭,这样一个好处是减少内存和CPU时间的占用,另一个好处相对可以提高安全性.那么哪些服务是肯定要保留的呢?

  在linux机器上通常有四项服务是必须保留的

  iptables  linux下强大的防火墙,只要机器需要连到网上,哪里离得开它
  network  linux机器的网络,如果不上网可以关闭,只要上网当然要打开它
  sshd   这是openssh server,如果你的机器不是本地操作,而是托管到IDC机房,那么访问机器时需要通过这个sshd服务进行
  syslog  这是linux系统的日志系统,必须要有,否则机器出现问题时会找不到原因

  2,关闭不需要的tty

  请编辑你的/etc/inittab,找到如下一段:

  1:2345:respawn:/sbin/mingetty tty1
  2:2345:respawn:/sbin/mingetty tty2
  3:2345:respawn:/sbin/mingetty tty3
  4:2345:respawn:/sbin/mingetty tty4
  5:2345:respawn:/sbin/mingetty tty5
  6:2345:respawn:/sbin/mingetty tty6

  这段命令使init为你打开了6个控制台,分别可以用alt+f1到alt+f6进行访问.此6个控制台默认都驻留在内存中,事实上没有必要使用这么多的..你用ps auxf这个命令可以看到,是六个进程

  root 3004 0.0 0.0 1892 412 tty1 Ss+ Jun29 0:00 /sbin/mingetty tty1
  root 3037 0.0 0.0 2492 412 tty2 Ss+ Jun29 0:00 /sbin/mingetty tty2
  root 3038 0.0 0.0 2308 412 tty3 Ss+ Jun29 0:00 /sbin/mingetty tty3
  root 3051 0.0 0.0 1812 412 tty4 Ss+ Jun29 0:00 /sbin/mingetty tty4
  root 3056 0.0 0.0 2116 412 tty5 Ss+ Jun29 0:00 /sbin/mingetty tty5
  root 3117 0.0 0.0 2396 412 tty6 Ss+ Jun29 0:00 /sbin/mingetty tty6

  如何关闭这些进程?通常我们保留前2个控制台就可以了,把后面4个用#注释掉就可以了.然后无需重启机器,只需要执行 init q 这个命令即可

  q作为参数的含义:重新执行/etc/inittab中的命令

  3,如何关闭ipv6?

  ipv6目前我们还不需要,但系统安装完成后它会作为模块常驻核心,没有必要,可以用这个步骤来关闭它:

  首先编辑网络配置文件:

  vi /etc/sysconfig/network

  修改

  NETWORKING_IPV6=yes

  为

  NETWORKING_IPV6=no

  然后关闭其模块:vi /etc/modprobe.conf

  在文件中添加以下两行

  alias net-pf-10 off

  alias ipv6 off

  修改完成后需重启机器使之生效

  4,如何关闭atime?

  一个linux文件默认有3个时间:

  atime:对此文件的访问时间

  ctime:此文件inode发生变化的时间

  mtime:此文件的修改时间

  如果有多个小文件时通常没有必要记录文件的访问时间,这样可以减少磁盘的io,比如web服务器的页面上有多个小图片 如何进行设置呢?

  修改文件系统的配置文件:vi /etc/fstab

  在包含大量小文件的分区中使用noatime,nodiratime两项

  例如:

  /dev/md5 /data/pics1 ext3 noatime,nodiratime 0 0

  这样文件被访问时就不会再产生写磁盘的io

  5,一定要让你的服务器运行在level 3上

  做法:

  vi /etc/inittab

  id:3:initdefault:

  让服务器运行X是没有必要的

  6,优化sshd

  X11Forwarding no //不进行x图形的转发

  UseDNS no //不对IP地址做反向的解析

  7,优化shell

  修改命令history记录

  # vi /etc/profile

  找到 HISTSIZE=1000 改为 HISTSIZE=100

  然后 source /etc/profile

Centos系统安装后的一下初始化操作

2011年11月7日 没有评论

1、建立一个普通权限的用户
因为root用户对系统具有全权的操作权限,为了避免一些失误的操作,建议在一般情况下,以一般用户登录系统,必要的时候需要root操作权限时,再通过“su -”命令来登录为root用户进行操作。
useradd 52listen
passwd 52listen
usermod -G wheel 52listen
修改pam配置,使非wheel组用户不能使用su命令登录为root:
vi /etc/pam.d/su
找到
#auth required /lib/security/$ISA/pam_wheel.so use_uid
将行首的 # 去掉。
然后
vi /etc/login.defs
在文件末尾加上
SU_WHEEL_ONLY yes
2、安装yum加速工具,并更新系统
yum install yum-fastestmirror -y
yum upgrade -y
3、安装mlocate工具
yum install mlocate -y
4、root邮件的修改
在系统出现错误或有重要通知发送邮件给root的时候,让系统自动转送到我们通常使用的邮箱中,这样方便查阅相关报告和日志。
vi /etc/aliases
在文件末尾加上
root: 52listen@52listen.com
5、locate命令设置
vi /etc/updatedb.conf
在末尾增加
DAILY_UPDATE=yes
然后运行
updatedb
6、关闭不必要的服务
比如cups
/etc/init.d/cups stop
chkconfig cups off
除了以下服务以外,其他服务默认的都可以采用刚才的方法关闭:
atd
crond
irqbalance
lvm2-monitor
microcode_ctl
network
sendmail
sshd
syslog
7、停止ipv6
vi /etc/modprobe.conf
在文件末尾加上
alias net-pf-10 off
alias ipv6 off
8、关闭SELinux
vi /etc/selinux/config
将其中的
SELINUX=enforcing
改为
SELINUX=disabled
9、安装sudo工具
yum install sudo -y
安装好了以后,修改sudo的配置
vi /etc/sudousers

# %wheel ALL=(ALL) NOPASSWORD:ALL
去掉前面的 # , 然后保存文件。
这样修改了以后,只有所有属于wheel组的用户能执行sudo命令,并且执行sudo命令时只需要输入自己的密码即可。
10、修改SSH配置
vi /etc/ssh/sshd_config
增加ServerKey的强度
找到
#ServerKeyBits 768
改为
ServerKeyBits 1024
不允许root用户直接登录
#PermitRootLogin Yes
改为
PermitRootLogin no
禁止空密码登录
找到
#PermitEmptyPasswords no
去掉前面的 #
全部修改完了以后,重启服务器

Linux VPS禁止某个IP访问

2011年11月7日 没有评论

  今天在查看VPS的SSH登录记录吓了一跳,有几个IP连续登录SSH字典猜root密码,于是想到GFW掉他们

  /etc/hosts.allow和/etc/hosts.deny两个文件是控制远程访问设置的,通过他可以允许或者拒绝某个ip或者ip段的客户访问linux的某项服务。

  如果请求访问的主机名或IP不包含在/etc/hosts.allow中,那么tcpd进程就检查/etc/hosts.deny。看请求访问的主机名或IP有没有包含在hosts.deny文件中。如果包含,那么访问就被拒绝;如果既不包含在/etc/hosts.allow中,又不包含在/etc/hosts.deny中,那么此访问也被允许。

  <daemon list>:<client list>[:<option>:<option>:...]

  daemon list 服务进程名列表,如telnet的服务进程名为in.telnetd

  client list 访问控制的客户端列表,可以写域名、主机名或网段,如.trubolinux.com.cn或者192.168.1.

  option 可选选项,这里可以是某些命令,也可以是指定的日志文件

  例子:hosts.allow

  in.telnetd:.52listen.com

  vsftpd:192.168.0.

  sshd:192.168.0.0/255.255.255.0

  /etc/hosts.allow里第一行52listen.com表示,只有52listen.com这个域里的主机允许访问TELNET服务,注意52listen.com前面的那个点(.)。

  /etc/hosts.allow里第二行表示,只有192.168.0这个网段的用户允许访问FTP服务,注意0后面的点(.)。

  /etc/hosts.allow里第三行表示,只有192.168.0这个网段的用户允许访问SSH服务,注意这里不能写为192.168.0.0/24。虽然在CISCO路由器种这两中写法是等同的。

  在/etc/hosts.deny里加上:

  sshd:62.75.214.93

  sshd:203.215.252.189

  sshd:219.143.200.169

  sshd:60.12.193.134

  sshd:201.83.220.44

  sshd:c953dc2c.virtua.com.br

  sshd:gera125.server4you.de

  把他们访问SSH的全部给拒绝了,Linux的GFW也很强。