分类: 菜鸟Linux笔记

菜鸟学习LINUX笔记

  • 启用gzip模块优化网页

    Nginx

     

    http

    {

    : include conf/mime.types;

    : gzip on;

    : gzip_min_length 1000;

    : gzip_buffers 4 8k;

    : gzip_http_version 1.1;

    : gzip_types text/plain application/x-javascript text/css text/html application/xml;

    }

    重启nginx

    IIS6

    打开Internet信息服务(IIS)管理器,右击”网站”→“属性”,选择”服务”。在”HTTP压缩”框中选中”压缩应用程序文件”和”压缩静态文件”,按需要设置”临时目录”和”临时目录的最大限制”;

    在Internet信息服务(IIS)管理器,右击”Web服务扩展”→“增加一个新的Web服务扩展…“,在”新建Web服务扩展”框中输入扩展 名”HTTPCompression”,添加”要求的文件”为C:\WINDOWS\system32\inetsrv\gzip.dll,其中 Windows系统目录根据您的安装可能有所不同,选中”设置扩展状态为允许”;

    使用文本编辑器打开C:\Windows\System32\inetsrv\MetaBase.xml(建议先备份),找到Location =”/LM/W3SVC/Filters/Compression/gzip”,如果需要压缩动态文件,则将 HcDoDynamicCompression设置为”TRUE”,并在HcScriptFileExtensions中增加您要压缩的动态文件后缀名, 如aspx;如果需要压缩静态文件,则将HcDoStaticCompression和HcDoOnDemandCompression设置 为”TRUE”,并在HcFileExtensions中增加您需要压缩的静态文件后缀名,如xml、css 等;HcDynamicCompressionLevel和HcOnDemandCompLevel表示需要的压缩率,数字越小压缩率越低;

    编辑完毕后保存MetaBase.xml文件;如果文件无法保存,则可能IIS正在使用该文件。打开”开始”→“管理工具”→“服务”,停止”IIS Admin Service”后,即可保存;

    最后,重新启动IIS。

    Apache

    编辑httpd.conf

    在最下面加上:

    <IfModule mod_deflate.c>

    SetOutputFilter DEFLATE

    AddOutputFilterByType DEFLATE text/html text/css application/x-javascript

    </IfModule>

    重启apache:

  • Apache VirtualHost设定

    通常在一台Web Server上,會有數個不一樣的網站要執行,這時候各個網站的domain name就必須靠VirtualHost設定

    VirtualHost基本設定

    #指定主機所有port 80所指定的虛擬主機

    NameVirtualHost *:80

     

    <Virtualhost *:80>

    #DNS

    ServerName wp.johnsonlu.org

     

    #Web Root Path

    DocumentRoot /var/www/test

     

    #Alias可以將DocumentRoot底下的路徑對應成特定目錄路徑

    Alias /doc/ /var/www/test/doc/

     

    #控制目錄權限

    <Directory “/usr/share/doc/”>

    #Options可以透過+號或-號來控制目錄權限,例如關閉Index目錄

    #FollowSymLinks是允許連到DocumentRoot以外的其他目錄、MultiViews是多國語言支援

    Options -Indexes FollowSymLinks MultiViews

     

    #AllowOverride是用來設定Override權限。None代表關閉.htaccess;FileInfo則是開啟

    AllowOverride None

     

    #Order負責控制Deny和Allow執行順序

    Order Deny,Allow

    #控制要拒絕的連線

    Deny from all

    #控制可以通過的連線

    Allow from 127.0.0.0/255.0.0.0

    </Directory>

     

    #Log

    ErrorLog /var/log/error_log

    </Virtualhost>

    Alias也可以透過正規表示法設定成pattern,可以參考mod_alias

    Directory設定可以參考Directory Directive

    Allow和Deny的部份可以參考mod_access_compat

     

     

    另外也可以把VirtualHost設定成動態的pattern

    (需要開啟mod_vhost_alias module)

    <VirtualHost *:80>

    ServerName api.johnsonlu.org

    ServerAlias *.api.johnsonlu.org

    VirtualDocumentRoot /home/johnsonlu/www/api/%0/public

    </VirtualHost>

    這樣一來,假設我有一個/home/johnsonlu/www/api/test.api.johnsonlu.org/public的路徑,就可以對應到test.api.johnsonlu.org

    VirtualDocumentRoot的字串pattern可以參考 mod_vhost_alias

  • Apache压力测试工具 ApacheBench

    這是Apache內建的壓力測試工具

    指令為(ab or ab2)

    ab -k -c 10 -n 10 http://xxxx.com/

    -k 是代表KeepAlive

    -c concurrent 代表同時進行壓力測試的數量

    -n request number 代表request的數量

  • 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即可,可以透過這個網站測試

  • 在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的。

    收工~~

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

  • 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/

  • wget 同步网站的命令

    很方便

    wget -mk -np -nH -b http://www.google.com/xxx

  • 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 ,密码就是你刚才设置的

  • 定时自动备份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

  • unknown group ‘ssl-cert’ 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