zoukankan      html  css  js  c++  java
  • 阿铭linux笔记

    2015-09-06虚拟机网络设置.wmv:
    curl     获取在命令行显示的网页
    dhclient     分配ip地址
    ifdown eth0     关闭网卡eth0
    ifup eh0     开启网卡eth0
    ifconfig -a     查看所有网卡设备
    service network restart
    dhclient   获取ip命令
    rout -n     查看网关
            命令行光标移动快捷键:
    Ctrl+a     移动光标到行首
    Ctrl+e     移动光标到行尾
    linux里面root为最高权限用户
     
    centos 进入命令行 ctrl+alt+f2
    在命令行下 Ctrl+Alt+F2进入图形界面
    安装php时缺少的库:
    yum install -y libxml2-devel openssl openssl-devel bzip2 bzip2-devel libpng libpng-devel freetype freetype-devel curl-devel  libjpeg-devel
     

    linux系统运行级别

    命令:init[0123456]
    运行级别
        0:关机
        1:单用户   
        2:多用户状态没有网络服务
        3:多用户状态有网络服务
        4:系统未使用保留给用户
        5:图形界面
        6:系统重启
    常用运行级别是3和5,要修改默认的运行级别可改文件/etc/inittab的id:5:initdefault:这一行中的数字
     

    通过历史记录简化操作:

    !!        重复前一个命令
    !字符    重复前一个以“字符”开头的命令
    !?abc    重复之前包含abc的命令
    !-n        重复n个命令之前的那个命令
     
    linux配置ip
             vi /etc/sysconfig/network-scripts/ifcfg-eth0 
              配置如下内容
              DEVICE=eth0
    HWADDR=00:0C:29:16:08:DD
    TYPE=Ethernet
    UUID=0884c1cf-6613-4c57-9a81-fa27b9723fb1
    ONBOOT=no
    NM_CONTROLLED=yes
    BOOTPROTO=static
     
    IPADDR=192.168.1.177
    NETMASK=255.255.255.0
    GATEWAY=192.168.1.1
    DNS1=192.168.1.1
     
    保存退出,service network restart     重启网络命令。
     
    Centos普通用户设置sudo权限
            登陆root用户执行visudo命令
            找到 root  ALL=(ALL)    ALL下  在下面增加:
           centos ALL=(ALL) ALL
     
    查看centos版本
             登陆root帐户,输入 cat  /etc/redhat-release,即可显示系统版本
             输入 uname  -r ,可以查询内核版本。
     
    查看安装的软件包
              输入 cat -n /root/install.log,可显示系统安装时所安装的软件包列表。(需要root权限)
     
    获取搜狐源
     
    wget
    基本的语法是:wget [参数列表] URL
    wget -r http://place.your.url/here
    这个命令会按照递归的方法,下载服务器上所有的目录和文件,实质就是下载整个网站。这个命令一定要小心使用,因为在下载的时候,被下载网站指向的所有地址 同样会被下载,因此,如果这个网站引用了其他网站,那么被引用的网站也会被下载下来!基于这个原因,这个参数不常用。可以用-l number参数来指定下载的层次。例如只下载两层,那么使用-l 2。
               要是您想制作镜像站点,那么可以使用-m参数,例如:wget -m http://place.your.url/here
    这时wget会自动判断合适的参数来制作镜像站点。此时,wget会登录到服务器上,读入robots.txt并按robots.txt的规定来执行。
     
    wget -c http://the.url.of/incomplete/file
    使用断点续传要求服务器支持断点续传。-t参数表示重试次数,例如需要重试100次,那么就写-t 100,如果设成-t 0,那么表示无穷次重试,直到连接成功。-T参数表示超时等待时间,例如-T 120,表示等待120秒连接不上就算超时。
     
    3、批量下载。
    如果有多个文件需要下载,那么可以生成一个文件,把每个文件的URL写一行,例如生成文件download.txt,然后用命令:wget -i download.txt
    这样就会把download.txt里面列出的每个URL都下载下来。(如果列的是文件就下载文件,如果列的是网站,那么下载首页)
     
    经验:执行系统服务时,需要使用root权限才能执行成功如:service network restart 
              搭建lamp环境
     
    linux jobs
     fg、bg、jobs、&、ctrl + z都是跟系统任务有关的,虽然现在基本上不怎么需要用到这些命令,但学会了也是很实用的
     
    一。& 最经常被用到          这个用在一个命令的最后,可以把这个命令放到后台执行
    二。ctrl + z                    可以将一个正在前台执行的命令放到后台,并且暂停
    三。jobs                        查看当前有多少在后台运行的命令
    四。fg                            将后台中的命令调至前台继续运行,如果后台中有多个命令,可以用 fg %jobnumber将选中的命令调出,%jobnumber是通过jobs命令查到的后台正在执行的命令的序号(不是pid)
    五。bg                       将一个在后台暂停的命令,变成继续执行,如果后台中有多个命令,可以用bg %jobnumber将选中的命令调出,%jobnumber是通过jobs命令查到的后台正在执行的命令的序号(不是pid)
    jobs -l          查看后台任务详细信息
    kill PIDnumber          杀掉进程
     
         jobs命令执行的结果,+表示是一个当前的作业,减号表是是一个当前作业之后的一个作业,jobs -l选项可显示所有任务的PID,jobs的状态可以是running, stopped, Terminated,但是如果任务被终止了(kill),shell 从当前的shell环境已知的列表中删除任务的进程标识;也就是说,jobs命令显示的是当前shell环境中所起的后台正在运行或者被挂起的任务信息;
          进程的挂起 

    后台进程的挂起: 
    在solaris中通过stop命令执行,通过jobs命令查看job号(假设为num),然后执行stop %num;
    在redhat中,不存在stop命令,可通过执行命令kill -stop PID,将进程挂起;
    当要重新执行当前被挂起的任务时,通过bg %num 即可将挂起的job的状态由stopped改为running,仍在后台执行;当需要改为在前台执行时,执行命令fg %num即可;
    前台进程的挂起:ctrl+Z
    进程的终止 
    后台进程的终止:
    方法一:
         通过jobs命令查看job号(假设为num),然后执行kill %num
    方法二:
    通过ps命令查看job的进程号(PID,假设为pid),然后执行kill pid 
    前台进程的终止:
    ctrl+c
    kill的其他作用 
    kill除了可以终止进程,还能给进程发送其它信号,使用kill -l 可以察看kill支持的信号。 
     
    SIGTERM是不带参数时kill发送的信号,意思是要进程终止运行,但执行与否还得看进程是否支持。如果进程还没有终止,可以使用kill -SIGKILL pid,这是由内核来终止进程,进程不能监听这个信号。          kill -SIGKILL pid kill -SIGKILL pid kill -SIGKILL pid
     
    一、linux系统初讲
         2.0单用户模式
              reboot     重启 3秒后按任意键
              e               移动光标,e键进入编辑模式
              选中第二行     按e后,将光标移至最后添加 1 或s 或single。然后回车,最后按b启动,就进入了单用户模式
              runlevel          输入命令 runlevel显示单用户模式
              passwd           修改root用户密码
              reboot            重启root密码已修改
              
         2.1救援模式
              将虚拟机启动设置为:虚拟机>电源>启动时进入bios。保存退出
              然后设置启动顺序 将boot 里cdrom 设为第一项
              进入centos 启动模式选择第三项 rescue installed system      回车
              选择语言
              选择键盘模式 us默认
              是否设置网络
              
         2.3ls命令
              ls          查看当前目录下的文件
              ll          查看当前目录下的文件详细信息
              ll -h           查看当前目录下的文件详细信息以M为单位显示文件大小
              
    二、系统精讲
         1.1创建和删除目录
         mkdir -pv  /tmp/1/2/3         创建父目录     -p: parents  父目录     -v: 可视化
         rmdir 234     (非空目录不能删)
         rmdir /tmp/1/2/3
         tree /tmp/1     查看tmp/1 目录的结构     tree查看目录结构
         rmdir -pv /tmp/1/2/3     删除目录(支持删除子目录非空的)     -p: parents  父目录     -v: 可视化
        
         1.2rm命令
                   rm           -f 强制     -i 安全位 提示 是否删除     -r 删除目录加上-r(如果不加-r删除目录内有目录,提示会略过目录,不会删目录,只会删目录里的文件)     -v可视化
                   常用 -i -r -f
                   rm -fr 123 删除目录没有提示
                   rm -rfv 123 不会提示
                   
         1.3cp命令
                   cp 拷贝文件     (在同一目录下需改变文件名)
                   cp -rv 111 222     (拷贝目录加-r选项)     -v:可视化
                   df -h     查看分区
         
         1.4移动和重命名mv
                    rename     重命名
                    mv     123           -i:安全位     -v:可视化     没有-r选项
                   
         1.5文件查看命令
                   cat 查看文件从头开始内容     -A:查看文件中隐藏的符号
                   tac 从尾部开始读取内容。 
                   more  从头开始显示,一屏一屏的往下翻(空格键),一行一行的往下翻(Enter);但不可以往上翻
                   less 从头开始显示,一屏一屏的往下翻(空格键),一行一行的往下翻(Enter);按方向键可以一行一行往上往下翻,按pageup ,pagedn,可以一屏一屏往上或往下翻。小j键可以往下行翻。小k键可以往上行翻。Ctrl+b 往上翻屏 ,Ctrl+f 往下翻屏,小g最前一行,大G最后一行。/搜索关键词     小n键往后跳,往前找大写N。?搜索关键词     小n往上跳,大N往下跳。
                   head 查看一个文件的前十行     -2:表示查看文件的前二行
                   tail  查看文件的末尾十行          -3:表示只看最后三行
                   tail -f     动态查看后十行     不退出,按Enter键往下行翻(当被查看文有变化时,动态的显示出来)
                   
         1.6文件和目录属性
                    - 表示普通文件
                    d  表示目录
                    c 字符设备
                    b 块设备
                    l 软连接(快捷方式)
                    s socket
                    p 管道
                   所有者,所属组,其他人
                    rwx          rwx       rwx                                
                    421          421      421
                    ls -i   印出每个文件的 inode 号     
                    第二字段     文件硬链接数或目录子目录数
                    第三个字段     文件所有者
                    第四个字段     文件所属组
                    第五个字段     文件大小(如果是文件夹则表示文件夹大小)
                    第六字段         文件创建 月 日 时
                    第九字段         文件名
                    
         1.7chmod命令
                    chmod 更改文件权限
                    r=4     w=2     x=1
                    chmod u=rwx,g=r--,o=r-- 1.txt     (分别代表所有者,所属组,其他人)
                    chmod u-x 1.txt     将1.txt 文件的所有者执行权限去掉
                    chmod u+x,g+w,o-r 1.txt     将1.txt文件所有者加执行,所属组加写,其他去掉可读
                    chmod a+r 1.txt     将1.txt的所有人加上可读
                    chmod -R 700 111     -R:将111目录下的所有子目录子文件继承111目录的权限711
                    umask 用来规定默认文件的权限 0022     后三位表示     ---  -w- -w-
                    新建目录755
                    文档    644            
                    linux下的目录必须有x权限;目录为777权限,减umask得到目录默认755权限;文档没有执行权限为666权限,减umask得到文档默认为644权限。
                    计算权限
                   
         1.8chown命令
                      chown 全称 change owner。  更改文件的所有者或所属组
                      chown ken 111.txt     更改111.txt所有者为ken    
                      chown :users 111.txt     更改111.txt所属组为users
                      chown ken:users 111.txt     更改111.txt所有者为ken,所属组为users
                      chown ken.users 111.txt     更改111.txt所有者为ken,所属组为users(和上面效果一样)
                      chown -R ken:users 111/     将当前目录111下的所有的目录和文件的所有者和所属组改为ken users
     
         1.9chattr文件隐藏属性
                      lsattr 查看特殊属性(特殊权限)
                      lsattr -R          可以把当前目录下的子文件子目录列出来,子目录下的子文件子目录都列出来(逐层查看文件的隐藏属性)
                      lsattr -d           只查看目录本身特殊属性
                      chattr +a 12.txt     +a:表示该文件只能追加,不能修改删除,也不能更改文件名        
                      chattr -a 12.txt       -a:表示解除该12.txt文件的限制
                      chattr +i 12.txt      比+a更严谨,不能追加,不能修改删除,也不能更改文件名 (不能做任何操作)   
                      chattr -i 12.txt        解除该12.txt的限制
                      
         2.0特殊权限之suid
                       set_uid     限制于可二进制格式 可执行文件,注意给普通非二进制文件加setuid不起作用 命令:chmod u+s 可执行二进制文件名
                        which passwd
                        chmod u+s /tmp/ls      给普通用户添加ls的临时root 权限,
                             该文件user属主对应的 rwx 有x权限 就显示小s  ,没有x权限就显示大S 
                        
         2.1特殊权限之sgid
                        set_gid      sgid可以让执行该文件的用户临时以该文件属组身份去执行,于set_uid不同是可作用于目录与文件
                        set_uid=4     set_gid=2     stick_bit=1
                        
         2.2特殊权限之sticky
                        stick_bit     防删除位
                        一个文件是否可更改,不在于文件本身的属性,而在于文件的父目录属性是否可rwx
                        更改文件后,所属组和所有者都改变为被更改者
                        当一个目录的权限为其他人可读可写可执行的时候,那么其他人就可以删除这个目录下的任何文件,包括root
                        chmod o+t .      把当前目录改为其他用户不可删除
                        小t的时候,其他用户可读可写可执行,大T的时候其他用户可读可写不可执行
                         
                        
     
         2.3find搜索命令
                  which     搜索一个命令的位置 
                  find   /root/dir/ -name "ken"     在/root/dir/下搜索ken文件
                  find   /root/dir/  -type f       在/root/dir/下搜索文件    
                  find   /root/dir/  -type d       在/root/dir/下搜索目录
                  find   /root/dir/  -type b       在/root/dir/下搜索Blok
                  find   /root/dir/  -type c      在/root/dir/下搜索字符设备
                  find  /tmp/ -mtime +10     大于十天     (单位是天)
                  find /tmp/ -mtime -10       小于十天
                  find /tmp/ -mtime -365     一年以内
                  find /tmp/ -mmin -5             5分钟以内
                   find /tmp/ -mmin +5          大于五分钟
                  find /tmp/ -atime 
                  find /tmp/ ctime
     
                   find /tmp/ -type f -name ken     在/tmp/下查找文件ken
                   ls -li     查看文件inode
                   find / -inum inode_number     用inode号码查找文件
                   find /var/log/ -type f -mtime +30 |xargs rm       将三十天以前的日志删掉
                   find /tmp/ -type f |xargs -i mv {} {}.bak
     
         2.4三个时间属性
                   mtime    创建和修改时间
                   atime     访问时间
                   ctime     更改文件所有者或所属组时更改文件编号(inode改变这个时间就会变)
                   stat filename     可以查看文件的三个时间
                   touch filename    更新三个时间
                   当更改ctime时 atime 和mtime不一定会改变,
                    用vim修改了一下文件,那么三个time都会变(修改后要保存)
                    使用命令echo "111111" >> 1.txt 会更改1.txt ctime 和mtime、
                   
         2.5软链接和硬链接
                   find /etc/ -type l 
                   in -s     软链接,目录和文件都可以做,可跨分区
                   in         硬链接,inode号不变,不可跨分区(只能在同一各分区下做),目录硬链接不可以做
                   
    实例1:给文件创建软链接
    命令:
    ln -s log2013.log link2013
    输出:
    [root@localhost test]# ll
    -rw-r--r-- 1 root bin      61 11-13 06:03 log2013.log
    [root@localhost test]# ln -s log2013.log link2013
    [root@localhost test]# ll
    lrwxrwxrwx 1 root root     11 12-07 16:01 link2013 -> log2013.log
    -rw-r--r-- 1 root bin      61 11-13 06:03 log2013.log
    说明:
    为log2013.log文件创建软链接link2013,如果log2013.log丢失,link2013将失效
     
         2.6用户名文件
                   cat /etc/passwd/
                   root:x:0:0:root:/root:/bin/bash        每字段代表: 用户名 密码 uid gid 说明 家目录 shell
                   将一个用户设置为不能登录
     
         2.7密码文件
                   cat /etc/shadow
    root:$6$alMmEBkwlbfl2J/h$F/QEcBOuE0yjI4WV5Lw4BHJz8w0EoE9zh.MLx4dEg6yUGQKFCdaLBPf4C.8EBFqkVOM0QTZ3qrOiH3dp18gyB0:16719:0:99999:7:::
                   bin:*:15980:0:99999:7:::          *:表示该用户锁定
                   sshd:!!:16719::::::                !!:表示该账户还没有密码
           每字段代表:
                                 用户名
                                 密码
                                 上次更改密码的天数(从1970年的1月1日到更改密码时的那一天)
                                  还需过几天才可以改密码 密码要过多少天后到期(默认99999天)
                                  密码到期前多少天发警告
                                  账号的实效期限(到期后过多少天锁定账号 默认为空) 
                                  账号的生命周期(账号可以用多久) 
                                  保留值
     
         2.8增加和删除用户组
                   groupadd ken     添加用户组
                   tail /etc/group     查看组文件
                ken:x:500:        每个字段表示: 组名 组密码 组id
           tail /etc/gshadow     查看组密码
                                        !!表示无密码 (组默认没密码)
           groupadd -g 512 ken   设置组id
           groupdel          删除组
                   
         2.9增加和删除用户
                   useradd ken    
                   tail /etc/passwd
                   useradd -u 505 -g grp2 user1     创建用户添加用户id和组id
                   id user1      查看user1的用户id,组id,
                   useradd -u 508 -g 500 -d /home/user3 -s /sbin/mologin user3     给用户添加家目录,和shell
                   useradd -M -s /sbin/nologin user3
                   userdel user3       删除这个用户的时候并不会删除这个用户的家目录
                   userdel -r user1      删除用户并且删除用户家目录
                   useradd -s /sbin/nologin mysql          创建用户
                    linux在创建用户是将用户默认的shell指定为/sbin/nologin即可阻止用户登录,命令为
                   useradd user -s /sbin/nologin,其中-s指定用户的默认shell
                   如果用户已经存在于系统,用root身份修改/etc/passwd文件,将要阻止的用户的shell改为/sbin/nologin,如下所示
         user:x:502:502::/home/user:/sbin/nologin
     
         3.0usermod修改用户属性
                   usermod     更改用户组
                   usermod -g 512 ken     将ken的用户组更改为512
                   useradd -u 506 -g 502 -G 512 user3     -G:指定用户扩展组
                   usermod -L ken       锁定用户不让登陆
                   usermod -U ken          解锁用户
                   
         3.1passwd修改用户密码
                   passwd     root登陆时后面没有参数为更改root密码
                   passwd username     更改普通用户密码
                   yum install -y expect
                   mkpasswd     生成密码随机字符串
                   mkpasswd -l 12
                   passwd --stdin ken     更改ken的密码
                   echo "1"|passwd --stdin ken     设定ken密码
     
         3.2su切换用户
                   id               查看当前用户
                   whomi       查看当前用户
                   su     切换用户
                   su ken     切换至ken ,环境变量并没有切换
                   echo $PATH
                   su -ken     环境变量切换
                   su -     切换至root
                   su - -c "mkdir /tmp/321432" ken     临时以ken的身份执行某个命令
                   su - -c "ls -ld /tmp/321432" ken
                   
         3.3sudo详解
                   sudo 命令在权限不够的情况下切换用户
                   visudo     编辑可以执行sudo的用户
                    sudo passwd     更改root密码     
     
         3.4df命令
                   df     查看系统分区,-h:自动容量单位显示,-K:以k为单位显示,-m:以M为单位,-i:查看inode
                   free   查看交换分区
         
         3.5du命令
                   du     查看目录大小
                   du -m /etc
                   du -h /etc              -h:自动容量单位显示,-sh:查看一个文件的大小
                   du -sh filename          查看一个文件占用磁盘空间的大小
                   du -sh *                    查看当前目录所有文件大小
                   ls -lb filename          查看一个文件本身的大小
                   
         3.6fdisk命令
                   fdisk -l     查看磁盘所有分区状况
                   fdisk 磁盘名     磁盘分区
                        一块硬盘最多可分4个主分区,如果想分第五个区,可把其中一个主分区换成扩展分区,然后在扩展分区内建逻辑分区。扩展分区+主分区≤4
                   n     新建分区
                   w     保存退出
     
         3.7磁盘格式化mke2fs
                   cat /etc/filesystems     查看文件系统
                   mkfs.     按Tab键补全               
                   mkfs.ext4 /dev/sdb5     格式化sdb5为ext4文件系统
                   
     
         3.8磁盘挂载与卸载
                   mount /dev/sdb5 /mnt/     挂载/dev/sdb5/到/mnt下
                   umount /home/
                   ls /home/
                   
         3.9分区表fstab
                   cat  /etc/fstab
                   vi /etc/fstab
                   UUID      分区标识
                   blkid       获取磁盘分区标识
                   defaults     挂载选项 
                   /etc/rc.local     开机加载配置文件
                   mount -a     自动加载配置文件的所有配置
                   mount     查看挂载的选项
                   
    三、linux系统提高
         1.1vim介绍
                     yum install -y vim-enhanced     安装vim
                     vi与vim的区别:打开shell文件后vim显示颜色区分,vi只是全黑色
                     sut nu     显示行号
     
         1.2vim一般模式下光标移动
                   vim 一般模式     编辑模式     命令模式
                   Ctrl+f     一屏一屏往下翻
                   Ctrl+b     一屏一屏往上翻
                   pgup
                   pgdn
                   gg     光标跳到文档第一行
                   shift+g     光标跳到文档最后一行
                   ^     光标跳到行首(或者数字0)
                   $     光标跳到行尾(或者数字1)
                   number + G     将光标跳到指定行
                   number + 光标方向命令键     向指定方向移动number个位置
     
         1.3vim一般模式下复制剪切粘贴
                   x                   向后一个一个删除
                   shift+x          向前一个一个删除
                   number + x     向后删number个字符
                   dd                删除一行(剪切)
                   p                  粘贴在光标的下面
                   shift+p         粘贴在光标的上面
                   u                  撤销(最多回退50次)
                   Ctrl+r           前进
                   yy                 复制
                   v                   可视
                   
         1.4vim编辑模式
                   i                    在光标之前插入模式
                   I                    光标到行首插入
                   a                   在光标之后插入模式
                   A                   光标到行尾插入
                   o                   在光标下一行插入
                   O                   在光标上一行插入
                   
         1.5vim命令行模式
                   :wq               保存退出
                   :w                 保存 
                   :q                  退出
                   :q!               强制退出
                   :set nu           显示行号
                    :set nonu        不显示行号
                   :/ (?)                  搜索关键词
                   n                      进入搜索后下(上)跳
                   N                     进入搜索后上(下)跳
                   :/1,20s/IPTABLES/iptables/g          g:全局替换
                   :/1,$s/IPTABLES/iptables/g          1-$:全文
                   :/%s/IPTABLES/iptables/g      
                   :noh1               取消高亮显示
         
         1.6gzip讲解
                   gzip filename     压缩文件
                   du -sh filename     查看文件大小
                   gzip -1     压缩级别,压缩比例最小,压缩速度最快
                   gzip -9     压缩比例最大,压缩最慢。(默认是gzip -6)
              
                   gzip -d filename.gz     解压缩
                   zcat filename.gz          查看gzip压缩文件内容
                   
     
         1.7bzip2讲解
                   大多数情况下bzip2压缩的文件更小些
                   bzip2 filename          压缩文件bzip2
                   bzip2 filename.bz2     解压bz2压缩文件
                   gzip bzip2      都不能压缩目录
                   bzcat filename.bz2             查看bzip2压缩文件内容
                   bzcat          默认压缩级别是9
     
         1.8zip和unzip
                   yum install zip unzip     安装zip压缩和解压缩工具
                   yum install xz bzip2 gzip
                   zip filename     压缩文件
                   unzip filename.zip     解压文件(在压缩后不会删除原文件,可以同时压缩多个目录和文件)
                   zip -r               可以压缩目录
                   
     
         1.9xz压缩和解压缩
                   xz     gzip bzip2     三者相差不大
                   xz filename          压缩文件
                   xz -d filename.xz          解压缩
                   xzcat filename.xz          查看xz压缩文件内容
                   xz                         压缩级别和bzip2一样(1-9)
                   
     
          2.0tar打包工具详解
                   tar -cvf               c:create创建;v:可视化 ;f:file
                   tar -cvf 1.tar 111 222 123.gz          打包多个文件(打包不会改变文件大小)
                   du -sh 1.tar          查看文件大小
                   du -sh 111 222 123.gz     查看多个文件大小
                   tar -xvf 1.tar                    解包
                   tar -C /tmp/ xvf 1.tar          解包到指定目录
                   
         2.1tar打包和压缩并用
                   tar 支持 gzip bzip2 xz     三种格式进行打包
                   tar -zcvf 1.tar.gz 111 222          打包并压缩多个文件
                   du -sh 1.tar.gz               查看文件大小
                   tar -zxvf 1.tar.gz          解压打包压缩文件(压缩包不会删除)
                   tar -tf 1.tar.gz               查看打包压缩文件列表
                   tar -C /tmp/ -zxvf 1.tar.gz     指定打包压缩路径
                   
                   tar -jcvf 1.tar.bz2 111 222     打包使用bz2格式压缩
                   tar -Jcvf 1.tar.xz 111 222     打包使用xz格式压缩
                   tar -jxvf 1.tar.bz2                解包bz2压缩格式
                   tar -Jxvf 1.tar.xz                  解包xz压缩格式
     
                    tar -tf 1.tar.bz2               查看打包bz2压缩文件内容
                    tar -tJf 1.tar.xz                查看打包xz压缩文件内容
                    tar --exclude 12.txt -cvf 111.tar 111         打包一个目录下所有文件,排除单个文件(12.txt)
                   tar --exclude 12.txt --exclude aming -cvf 111.tar 111      打包一个目录下所有文件,排除多个文件
                   
         2.2rpm安装和卸载
                   rpm == RedHat package manager
                   mount /dev/cdrom   /mnt/
                   cd /mnt/
                   ls
                   cd packages/
                   ls
                   
                  
                   包名     版本号1主版本,5次版本   el6:红帽企业版6;i686:32位
                   noarch:表示不区分32位64位
                   rpm -ivh 包名           i:install     v:可视化     h:进度
                   rpm -e 包名          卸载rpm
                   rpm -ivh --nodeps 包名     强制安装RPM包(忽略依赖关系)
                   rpm -Uvh 包名                    升级包
                   
     
         2.3rpm查询
                   rpm -qa          查询已安装rpm包
                   rpm -q 包名     把一个包全部显示出来(包名不可以简写)
                   rpm -qa |grep 'vim*'          查询已安装是否包含vim
                   rpm -qi 包名                    i:info     查看一个包详细信息
                   rpm -ql 包名                    l:list     查看一个包安装的文件列表
                   rpm -qf 文件路径               f:file     查看一个文件是哪个rpm包安装
                   which vim                         查看vim是在哪个目录
                   rpm -qf /usr/bin/vim          查看vim路径是哪个包安装的
                   rpm -qf `which vim`          反引号:显示引号内执行的结果
                   rpm -ivh 'http://xxxxxx.xxxx.xxx'          远程安装rpm包
     
         2.4yum工具详解
                   yum list          列出yum源中的所有RPM包(网络资源)
                   vim /etc/yum.repos.d/CentOS-Base.repo     修改源配置文件
                   yum list |grep vim            查询yum仓库中的vim包(搜索rpm包),已安装过包前显示@
                   yum list |grep -i mcrypt                查询yum仓库中的mcrypt包(-i:不区分大小写),搜索yum扩展源epel
                   yum install 包名               使用yum安装rpm包
                   yum search 'vim'             在yum源中搜索一个rpm包
                   yum install -y vim-enhanced             安装vi省略问答默认是
                   yum remove vim-enhanced               yum卸载rpm包
                   yum update 包名                               yum升级rpm包
                   yum update;yum upgrade               升级系统中所有的rpm包
                   yum grouplist                                   列出已安装过和未安装套件
                   LANG=en                                 将语言设置成英文
                   LANG=zh_CN.UTF-8                    将语言设置成中文
                   yum groupinstall 套件名
                   yum groupremove 套件名
     
         2.5搭建本地yum仓库
                   cp -r yum.repos.d/ yum.repos.d.bak          备份yum配置文件
                   cd yum.repos.d;ls
                   rm -rf Centos-Base.repo
                   yum list          显示本地yum源
                   vim CentOS_Media.repo        做本地yum源
     
                   gpgcheck:是否检测
                   enabled:是否生效
                   gpgkey:不要
     
         2.6yum如何下载rpm包到本地
                   yum install -y yum-plugin-downloadonly     安装yum下载rpm包工具
                   yum list |grep download          搜索
                   yum install vim-enhanced --downloadonly --downloaddir=/tmp/          (适用于未安装过)
                   yum reinstall vim-enhanced --downloadonly --downloaddir=/tmp/          reinstall:重新安装(适用于已安装过)
                  首先查看本机安装的yum包都有哪些?
                    [root@test~]# rpm -qa |grep yum
    如果安装了此包:yum-utils-1.1.30-14.el6.noarch
    那么就可以执行yumdownloader
                   假如要下载samba安装包,执行如下命令:
    [root@localhost ~]# yumdownloader samba
     
         2.7源码编译安装
                   源码包安装时先看INSTALL 和 README
                   /usr/local/src/     源码包下载存放路径
                   tar -jxvf http*.bz2
                   ./configure --prefix=/usr/local/apache2          /usr/local/:常用安装源码包路径
                   echo $?
                   make
                   echo $?
                   make install
                   ls /usr/local/apache/
                   apache下载地址 http://mirrors.cnnic.cn/apache/httpd/
     
         四、Shell编程入门
              1.1shell特性
                   history          命令历史(默认只保存1000条)
                   echo $HISTSIZE          输出1000(此变量为history保存条数)
                  !!                        上一条命令
                   !$                              前一个命令历史的参数
                   !c                              命令历史中以c开头离得最近的命令
                   alias               查看取别名的命令
                   alias aaa='cat 1.txt'
                   unalias
                   wc                    取行数
                   >               正向重定向(覆盖写)
                   >>             追加写
                   <               反向重定向
                   2>              错误重定向,把错误信息重定向到文件里
                   2>>           追加错误重定向
                   Ctrl+z          暂停掉
                   jobs           查看运行的任务
                   +          优先级高
                   fg 2(1)
                   bg          后台
                   
              1.2shell变量
                   env          系统相关变量
                   set          系统环境变量(比env多,包含env)
                   ``              反引号:使用一个命令的结果
                    export          声明全局变量
                    a=lskd    
                   unset $a       销毁变量
                   
         1.3系统和用户的环境变量配置文件
                   /etc/profile          环境变量文件HOSTSIZE,HISTSIZE,PATH,HOME,SHELL (系统相关环境变量)
                   /etc/bashrc          (系统相关环境变量)
                   /etc/profile.d/          (自定义环境变量脚本.sh存放位置)
                   用户家目录               家目录环境变量配置文件
                   .bash_logout               用户退出时执行脚本
                   .bash_profile          和/etc/profile 大致一样,针对用户自身定义的环境变量
                   .bashrc               定义命令别名,当用户打开新bash或者登陆时执行的文件
                   export               全局声明
                   vim /etc/profile.d/path.sh
                   /etc/bashrc
                   /etc/profile.d/path.sh
                   source /etc/profile          自动加载/etc/profile.d/下的所有.sh文件
                   
         1.4shell中的特殊符号
                   *|               通配符
                    #               注释符
                    ;               结束符
                    &               后台运行
                   []               中括号[]:或     例:ls [12].txt     ;ls [1-3].txt
                   
         1.5cut命令
                   cut -d: -f 3,4,5 /etc/passwd         -d:指定分隔符     -f:取段
                   cut -c 1-10 /etc/passwd
                   cut -d:     -f     -c
         
         1.6sort命令
                   sort filename      按照ascll码表排序
                   sort  -t: -k3 -n /etc/passwd          -t:指定分隔符
                   sort -u filename         排序去重复
                   sort -n filename         按数字从小到大排序
                   sort -nr filename        按数字从大到小排序
                   sort -un filename          去重复且把多个字符串显示一个(去掉-n选项后可全部显示)
                   
         1.7wc命令
                   wc -l filename          查看一个文件的行数
                   wc -l filename filename          查看多个文件的行数
                   wc -w filename          统计单词数,以空格为分隔符
                   wc -m filename          查看文件字符数
                   wc -l filename             查看文件的行数 
     
         1.8uniq和tee命令
                   uniq          去重复
                   uniq -c          可计算重复的次数
                   sort filename | uniq -c          先排序,再去重
                   | tee filename(空文件)          覆盖重定向,并在屏幕输出,需搭配管道命令使用
                   
         1.9tr和split命令
                   tr     替换字符
                   ls *.txt | tr 'a-z' 'A-Z'          将小写文件后缀替换为大写
                   echo 'dfsfsafsdf' |tr 'a-f' 'A-F'     将小写转换为大写a-f A-F(tr后面替换的字符一 一对应)
                   split               切割大文件
                   split -b 50m filename          按大小分割文件(指定50m分割文件)
                   split -b 100 filename          按大小分割文件(指定100b分割文件,默认单位为b)
                   split -l 10 filename               按行数分割文件(指定10行分割文件)
                   split -b 100 filename word_          为分割出的文件指定前缀
                   
         2.0shell中连接符(并且、和、或者)
                   ls a && ls b          (逻辑与,如果前面的命令为真,才会执行后面命令,如为假,则不会执行后面的命令)
                   ls a || ls b              (逻辑或,如果前面的命令为真,则不会执行后面的命令;如为假,才会执行后面的命令)
     
         2.1grep过滤-1
                   grep egrep sed awk
                   grep          过滤除指定行
                   grep 'root' /etc/passwd
                   grep --color 'root' /etc/passwd          将查找字符以红色标出
                   grep -c word filename               查询所有行包含指定字符出现的行数
                   grep -v word filename               查询所有行不包含指定字符出现的行数
                   grep -n word filename               显示行号
                   grep -n -A 2 word filename          显示匹配行,并显示匹配行下指定行数(2行)
                   grep -n -B 2 word filename          显示匹配行,并显示匹配行上指定行数(2行)
                   grep -n -C 2 word filename          显示匹配行,并显示匹配行上下指定行数(2行)
                   grep -r word dirname                    遍历目录文件查找指定字符
                   grep -rh word dirname                    不显示文件名,匹配文件
                   
         2.2grep过滤-2
                   grep '[aN]' filename          查找包含a或N的行
                   grep '[0-9]' filename          查找包含数字的行 
                   grep -v '[a-zA-Z]' filename              查找不包含大小写的行
                   grep '^[a-z]' filename                    匹配小写字母开头的行
                   grep '[^a-z]' filename               匹配不包含字母的行
                   grep '[^$]' filename               匹配空行
                   grep -v '[^$]' filename               匹配空行以外的行
                   grep '[r.o]' filename               匹配r(任一字符 )o的行
                   grep '[r*o]' filename               匹配r(一个或多个)o的行
                   待补充(正则)
     
         2.3grep过滤-3
                   grep -E     ===      egrep
                   待补充(正则)
     
         2.4sed命令-1
                   sed 比grep强大,但是不能颜色显示
                   sed -n '10'p filename          打印第n行,p:print
                   sed -n '1-10'p filename          打印第一到10行
                   sed -n '/root/'p filename        打印包含'root'的行
                   sed -n '/r.o/'p filename          匹配r(任一字符 )o的行                    
                   sed -n '/r*o/'p filename          匹配r(一个或多个)o的行     
                   
         2.5
         2.6
         2.7
         2.8
     
    五、linux平台运维管理
         1.1查看系统负载命令
              w          load average:1分钟之内系统的平均负载(1分钟进程数),5分钟(5分钟平均进程数),15分钟内          
              uptime     获取负载值
     
         1.2vmstat详解
              vmstat -1          1s显示一次
              vmstat 1 5          
     
         1.3top动态查看负载
              top     3s一次动态显示出当前主机运行情况,前一行与vmstat一样
              pid          进程编号(ls /proc;此目录里目录名对应进程号)
              user          用户
              PR               
              NI               进程优先级
              VIRT          虚拟内存
              top -bn1          一次性显示出来(静态显示)
              SHR          共享内存
              top -d 1 -c          1s刷新一次,COMMAND显示的更全点
              
         1.4sar命令
              sar -n DEV          查看网卡流量
              sar -n DEV 1 10          1s显示一次,一次显示10次
              yum install -y sysstat          安装sar命令
              ls /var/log/sa/          查看网络流量历史(18天)          
              sar -n DEV -f /var/log/sa/sa22/          查看具体某天的流量历史文件
              sar -q           查看系统历史负载
              sar -b 1 10           可以查看当前的磁盘io状态     
              sar -p 1 10 可以查看cpu的使用情况
              
         1.5free查看内存
              free          查看内存状况kb
              free -m          以M为单位
              buffers          数据将要写到磁盘中去的,还在内存占用
              cached          从磁盘取出放到内存,这部分空间
              free第二行     =     buffer     +     cached
     
         1.6ps查看进程
              VSZ          虚拟内存大小
              RSS          实际内存大小(内存使用量)
              TTY          启动地方
              STAT          S:表示休眠;
                                s:表示主进程;
                               <:优先级高;N:表示次进程低优先级;+:前台运行的进程;R:runing运行中;L:在内存锁定;l:多线程进程;Z:僵尸进程;x已死掉进程;T:暂停进程;D:不能中断的进程
              START          启动时间
              TIME            占用cpu时间
              CANMAND     进程名称
              
         1.7netstat查看端口
              netstat -lnp          查看监听端口
              netstat -an          tcpip,socket都显示出来
              netstat -an|grep -ic estab          查看某一时刻服务器的连接数(并发数)
     
         1.8抓包工具tcpdump和tsshark
              yum install tcpdump
              tcpdump -nn
              (待补充)
     
         1.9防火墙selinux
              cat /etc/selinux/config          查看selinux配置
              (待补充)
         
         2.0iptables详解-1
              netfilter----iptables     
              iptables -nvL     查看有那些规则
              iptables -F          清除规则
              表 列 规则
              iptables -t filter -nvL         指定表名,filter表下的规则(filter[较常用],nat,mangle。三个表)
              filter INPUT OUTPUT      列
              iptables -t filter -I INPUT -p tcp --dport 80 -s 192.168.1.177 -j REJECT              插入规则不允许192.168.1.177访问   (-I:在表上面增加)
              iptables -t filter -nvL          在不指定标明的时候默认是filter表
              iptables -t filter -D INPUT -p tcp --dport 80 -s 192.168.1.177 -j REJECT            删除规则
              iptables -t filter -A INPUT -p tcp --dport 80 -s 192.168.1.177 -j REJECT            添加规则(-A:在表下面增加)
              相同规则的时候表上面的规则先生效
              
         2.1iptables详解-2
               iptables -t filter -A INPUT -p tcp --dport 80 -s 192.168.1.177 -j DROP     不接收包
               iptables -t filter -A INPUT -p tcp --dport 80 -s 192.168.1.177 -j ACCEPT     
               iptables -z          清空规则计数器
               iptables -F          清空规则(只针对filter表)
               iptables -t nat -nvL          查看nat下的所有表
               iptables -t filter -A INPUT -p tcp --dport 80(端口号可省略) -s 192.168.1.177 -j REJECT
               service iptables restart;          重启iptables服务(重启后新添加的iptables会失效)
               service iptables save;               保存新添加的iptables
               cat /etc/sysconfig/iptables;          iptables配置保存路径
               iptables-save > 1.ipt          防火墙规则备份
               
               iptables -F
               service iptables save;          清空规则并保存
               
         2.2iptables详解-3
    我们现在用的比较多个功能有3个:
    1.filter 定义允许或者不允许的
    2.nat 定义地址转换的
    3.mangle功能:修改报文原数据
     
    这五个位置也被称为五个钩子函数(hook functions),也叫五个规则链。
    1.PREROUTING (路由前)
    2.INPUT (数据包流入口)
    3.FORWARD (转发管卡)
    4.OUTPUT(数据包出口)
    5.POSTROUTING(路由后)
        这是NetFilter规定的五个规则链,任何一个数据包,只要经过本机,必将经过这五个链中的其中一个链。
     
    对于filter来讲一般只能做在3个链上:INPUT ,FORWARD ,OUTPUT
    对于nat来讲一般也只能做在3个链上:PREROUTING ,OUTPUT ,POSTROUTING
    而mangle则是5个链都可以做:PREROUTING,INPUT,FORWARD,OUTPUT,POSTROUTING
            注意:规则的次序非常关键,谁的规则越严格,应该放的越靠前,而检查规则的时候,是按照从上往下的方式进行检查的。     
     
              input               进来
              output            出去
              FORWARD     (转发。iptables中有几个表,分别针对不同的目的,有本地输入、本地产生的输出、转发等。。。FORWARD这个表,用于控制转发行为,也就是说根据定义的规则,决定对从外边来到                                        另一个地方去的包是丢弃、PASS还是怎么处理。)
     
              filter          指定来源ip拒绝
              iptables -t filter -nvL                    查看所有规则
              nat            网络地址转换
              iptables -t nat -nvL
              PREROUTING             改变的是数据包过来的的时候目标ip地址
              POSTROUTING          在数据包出去之前改变原ip(私网ip)
              mangle                      给数据包打标记
              iptables -t mangle -nvL       
     
         2.3iptables详解-4
              filter 表 INPUT OUTPUT
              iptables -A INPUT     增加input
              iptables -D INPUT     删除input
              iptables -P                -P的作用是定义链的默认规则
               四:详解COMMAND:
          1.链管理命令(这都是立即生效的)
    -P :设置默认策略的(设定默认门是关着的还是开着的)
    默认策略一般只有两种
    iptables -P INPUT (DROP|ACCEPT)  默认是关的/默认是开的
    比如:
    iptables -P INPUT DROP 这就把默认规则给拒绝了。并且没有定义哪个动作,所以关于外界连接的所有规则包括Xshell连接之类的,远程连接都被拒绝了。
    -F: FLASH,清空规则链的(注意每个链的管理权限)
        iptables -t nat -F PREROUTING
        iptables -t nat -F 清空nat表的所有链
         -N:NEW 支持用户新建一个链
              iptables -N inbound_tcp_web 表示附在tcp表上用于检查web的。
         -X: 用于删除用户自定义的空链
              使用方法跟-N相同,但是在删除之前必须要将里面的链给清空昂了
         -E:用来Rename chain主要是用来给用户自定义的链重命名
              -E oldname newname
         -Z:清空链,及链中默认规则的计数器的(有两个计数器,被匹配到多少个数据包,多少个字节)
              iptables -Z :清空
    2.规则管理命令
             -A:追加,在当前链的最后新增一个规则
             -I num : 插入,把当前规则插入为第几条。
                -I 3 :插入为第三条
             -R num:Replays替换/修改第几条规则
                格式:iptables -R 3 …………
             -D num:删除,明确指定删除第几条规则
            
    3.查看管理命令 “-L”
     附加子命令
     -n:以数字的方式显示ip,它会将ip直接显示出来,如果不加-n,则会将ip反向解析成主机名。
     -v:显示详细信息
     -vv
     -vvv :越多越详细
     -x:在计数器上显示精确值,不做单位换算
     --line-numbers : 显示规则的行号
     -t nat:显示所有的关卡的信息
     
    五:详解匹配标准
     
    1.通用匹配:源地址目标地址的匹配
     -s:指定作为源地址匹配,这里不能指定主机名称,必须是IP
    IP | IP/MASK | 0.0.0.0/0.0.0.0
    而且地址可以取反,加一个“!”表示除了哪个IP之外
     -d:表示匹配目标地址
     -p:用于匹配协议的(这里的协议通常有3种,TCP/UDP/ICMP)
     -i eth0:从这块网卡流入的数据
    流入一般用在INPUT和PREROUTING上
     -o eth0:从这块网卡流出的数据
    流出一般在OUTPUT和POSTROUTING上
            
    2.扩展匹配
    2.1隐含扩展:对协议的扩展
        -p tcp :TCP协议的扩展。一般有三种扩展
    --dport XX-XX:指定目标端口,不能指定多个非连续端口,只能指定单个端口,比如
    --dport 21  或者 --dport 21-23 (此时表示21,22,23)
    --sport:指定源端口
    --tcp-fiags:TCP的标志位(SYN,ACK,FIN,PSH,RST,URG)
        对于它,一般要跟两个参数:
    1.检查的标志位
    2.必须为1的标志位
    --tcpflags syn,ack,fin,rst syn   =    --syn
    表示检查这4个位,这4个位中syn必须为1,其他的必须为0。所以这个意思就是用于检测三次握手的第一次包的。对于这种专门匹配第一包的SYN为1的包,还有一种简写方式,叫做--syn
        -p udp:UDP协议的扩展
            --dport
            --sport
        -p icmp:icmp数据报文的扩展
            --icmp-type:
    echo-request(请求回显),一般用8 来表示
    所以 --icmp-type 8 匹配请求回显数据包
    echo-reply (响应的数据包)一般用0来表示
                      
    2.2显式扩展(-m)
         扩展各种模块
          -m multiport:表示启用多端口扩展
          之后我们就可以启用比如 --dports 21,23,80
                      
            
    六:详解-j ACTION
     
     常用的ACTION:
     DROP:悄悄丢弃
    一般我们多用DROP来隐藏我们的身份,以及隐藏我们的链表
     REJECT:明示拒绝
     ACCEPT:接受
    custom_chain:转向一个自定义的链
     DNAT
     SNAT
     MASQUERADE:源地址伪装
     REDIRECT:重定向:主要用于实现端口重定向
     MARK:打防火墙标记的
     RETURN:返回
    在自定义链执行完毕后使用返回,来返回原规则链。
     
              (policy ACCEPT 804K packets,402M bytes)          接受的包数据量
              ACCEPT       (接受)
              DROP          (落下,丢下)
              REJECT        (拒绝,驳回)
              iptables -P INPUT DROP          (危险:请注意这条语句的参数,是-P ,-P的作用是定义链的默认规则,也就是通过所有规则后还没有匹配到的数据包,将按照默认规则来执行。
    -P DROP后,只有满足定义了ACCEPT规则的包才能通行,其他的包都按照默认的DROP干掉了。)
     
         2.4cron计划任务
              
         2.5系统服务
              yum install -y ntsysv          安装系统管理服务软件
              ntsysv               打开管理界面,设置完后需重启系统才能生效
              chkconfig --list          查看所有系统服务
              chkconfig --
              0-6                             0:关机;1:单用户模式;23;4:6重启
              chkconfig 服务名 off          关闭服务,控制级别2、3、、4、5
              chkconfig 服务名 on          开启服务,控制级别2、3、、4、5
              chkconfig --level 34 服务名 on     将某服务的34级别开启
              chkconfig --add          添加系统服务
              chkconfig --del          删除系统服务
              /etc/init.d          系统服务所在目录
              
         2.6linux日志
              /var/log/messages
              /etc/logrotate.conf          日志切割文件
              kill pid                         杀死进程
              kill -9                              强制杀死进程
              dmesg                         查看某个硬件出现问题
              
         2.7xargs和exec详解
              find /var/log/ -type f -mtime +10          查看10天以前的日志
              find /var/log/ -type f -mtime +10 -exec cp {} {}.bak ;          重命名一些文件以.bak后缀(-exec是find的一个选项)
              find /var/log/ -type f -mtime +10 | xargs -i cp {} {}.1               重命名一些文件以.1后缀(使用管道达到效果)
     
         2.8screen命令
              nohup
              yum install -y screen
              screen           新窗口执行命令,ctrl+a+d(展示退出)(虚拟终端)
              screen -ls          查看screen
              screen -r screenid          进入screen某一进程
     
         2.1curl命令
              curl -I 网站地址              不看源代码,查看状态
              curl -x                          代理
              curl -IV 网址                    显示详细信息
              curl -O 文件网址                    下载文件               (文件名为下载的名称)
              curl -o 文件名 文件网址                    下载文件需重命名
              
         3.0rsync格式
              rsync          拷贝数据(可增量拷贝)
              rsync -av ip地址:/tmp/1.txt /tmp/          将远程文件拉到本地
              rsync -av /tmp/1.txt  ip:/tmp/               将本地文件推到远程
              (待补充)
     
         3.1rsync常用选项
              rsync -a
     
         3.2rsync选项详解
             
    六、LAMP架构搭建与优化
         1.1Mysql安装
              cat /usr/local/mysql/bin/mysqlbug|grep configuore       mysql查看编译参数
            1、安装
              查看有没有安装过:
              yum list installed mysql*
              rpm -qa | grep mysql*
    查看有没有安装包:
              yum list mysql*
    安装mysql客户端:
              yum install mysql
    安装mysql 服务器端:
              yum install mysql-server mysql-devel
    2、启动&&停止
    数据库字符集设置
              mysql配置文件/etc/my.cnf中加入default-character-set=utf8
    启动mysql服务:
              service mysqld start或者/etc/init.d/mysqld start
    开机启动:
              chkconfig -add mysqld,查看开机启动设置是否成功chkconfig --list | grep mysql*
              mysqld             0:关闭    1:关闭    2:启用    3:启用    4:启用    5:启用    6:关闭
    停止:
              service mysqld stop
    3、登录
         创建root管理员:
              mysqladmin -u root password 123456
         如果root已经设置过密码,采用如下方法
            ./mysqladmin -u root password oldpass ‘123456’   
          登录:
              mysql -u root -p输入密码即可。
          忘记密码:
              service mysqld stop
              mysqld_safe --user=root --skip-grant-tables
              mysql -u root
              use mysql
              update user set password=password("new_pass") where user="root";
              flush privileges;
    4、远程访问
    开放防火墙的端口号
    mysql增加权限:mysql库中的user表新增一条记录host为“%”,user为“root”。
    5、Linux MySQL的几个重要目录
    数据库目录
             /var/lib/mysql/
    配置文件
             /usr/share /mysql(mysql.server命令及配置文件)
    相关命令
             /usr/bin(mysqladmin mysqldump等命令)
    启动脚本
             /etc/rc.d/init.d/(启动脚本文件mysql的目录)
     
     
              编译安装二进制包安装mysql
          修改mysql的root用户密码,root初始密码为空的:执行命令:./bin/mysqladmin -u root password '密码'
     
     
         1.2Apache编译安装
              cat /usr/local/apache2/build/config.nice          查看apache编译参数
              apachectl -v          查看apache版本
              apachectl -l          查看apache运行模式      q
              tar jxf httpd-2.2.31.tar.bz2
              ./configure --prefix=/usr/local/apache2 --with-included-apr --enable-so --enable-deflate=shared --enable-expires=shared --enable-rewrite=shared --with-pcre   (apache配置选项)            
              make
              make install
     
              配置参数详解:
              --with-included-apr          (httpd软件依赖的包,能够跨平台运作linux win unix mac)
              --enable-so --enable-deflate=shared --enable-expires=shared --enable-rewrite=shared          (动态共享的模式安装)
              --with-pcre          (正则相关的库)
              
              /usr/local/apache2/bin/apachectl start          启动apache
              /usr/local/apache2/modules/          apache动态模块加载路径
       
              /usr/local/apache2/bin/apachectl -M          查看apache加载模块(动态和静态模块)
              /usr/local/apache2/bin/apachectl -l          查看apache加载模块(静态)
              /usr/local/apache2/bin/apachectl -t          查看apache配置文件有无错误
              /usr/local/apache2/bin/apachectl graceful          重新加载配置文件
              
    然后为Apache添加服务脚本:
    # cp  /usr/local/apache/bin/apachectl  /etc/init.d/httpd
             
    如果想把apache服务加入到开机自启,可以修改服务启动脚本:
    # vim /etc/init.d/httpd
    在第二行下添加:# chkconfig:235 85 15
    # description: This is apache server!
     
    编辑配置文件:
    # vim /etc/httpd/httpd.conf 
    添加 ServerName localhost
              
     
     安装Apache2.4.7版本。
    下载地址为:http://mirrors.sohu.com/apache/
    tar zxvf httpd-2.4.7.tar.gz     #解压文件
    cd httpd-2.4.7               #进入目录
    ./configure --prefix=/usr/local/apache2/ --sysconfdir=/usr/local/apache2/etc --with-included-apr --enable-so --enable-deflate=shared --enable-expires=shared --enable-rewrite=shared   #编译参数
     
    错误
    configure: error:Bundled APR requested but not found at./srclib/.
      tar zxvf apr-1.4.6.tar.gz     #解压apr包
      tar -zxvf apr-util-1.4.1.tar.gz   #解压apr-util包
      cp -r /lamp/apr-1.4.6 /lamp/httpd-2.4.7/srclib/apr
      cp -r /lamp/apr-util-1.4.1 /lamp/httpd-2.4.7/srclib/apr-util    # 然后把两个包复制到httpd-2.4.7/srclib/ 里面并且取消版本号。


    错误:
    configure: error: in `/lamp/httpd-2.4.7/srclib/apr':
    configure: error: no acceptable C compiler found in $PATH
    See `config.log' for more details
    configure failed for srclib/apr
     
    yum -y install gcc-c++   #安装 gcc
     
    错误:
    configure: error: pcre-config for libpcre not found. PCRE is required and available from http://pcre.org/
    tar zxvf pcre-8.34.tar.gz
    [root@localhost lamp]# cd pcre-8.34
    [root@localhost pcre-8.34]# ./configure && make && make install


    错误
    checking whether to enable mod_deflate... configure: error: mod_deflate has been requested but can not be built due to prerequisite failures
     
    yum -y install openssl-devel
     
    把上面4个错误解决后。重新 ./configure 参数编译 无问题就执行
    make 
    make install
     
    /usr/local/apache2/bin/apachectl start         # 启动apache
    启动完后用以下命令检查apache是否正常启动,
    ps aux |grep httpd
    netstat -an |grep :80
     
    如果不能启动 请清空防火墙规格。关闭selinux
    iptables -F
    service iptables save
     
    通过浏览器输入地址访问:http://192.168.137.30 (我服务器的地址)  。若能显示“It works”表明apache正常工作。
    设置Apache系统开机是自动开启。
    vim /etc/rc.d/rc.local
    增加一行 把下面增加进去。
    /usr/local/apache2/bin/apachectl start    
     
          1.3 Apache的mpm工作模式
               /usr/local/apache2/bin/apachectl -l
              prefork.c          子进程 (进程模式,占用内存大,高并发异常时不影响其他进程)
              worker               线程(线程模式,占用内存小,高并发异常时影响其他线程)
              event                    线程形式比worker好些 性能(线程模式,占用内存小,高并发异常时影响其他线程 )
              ps aux|grep httpd          主进程 小写s
              ./configgure --help | grep A3 'with-mpm'     查看apache编译参数(mpm参数)
              --with-mpm=worker          在配置安装的时候指定apache,mpm为线程形式
              
         1.4php编译安装-安装顺序在最后          
         
     
          安装php5.5版本。
    tar zxvf php-5.5.9.tar.gz  #解压php安装包
    cd php-5.5.9  #进入php文件
    ./configure --prefix=/usr/local/php --with-apxs2=/usr/local/apache2/bin/apxs --with-config-file-path=/usr/local/php/etc  --with-mysql=/usr/local/mysql --with-libxml-dir --with-gd --with-jpeg-dir --with-png-dir --with-freetype-dir --with-iconv-dir --with-zlib-dir --with-bz2 --with-openssl --with-mcrypt --enable-soap --enable-gd-native-ttf --enable-mbstring --enable-sockets --enable-exif --disable-ipv6  --with-mcrypt=/usr/local/libmcrypt/    #编译参数
     
    错误configure: error: xml2-config not found. Please check your libxml2 installation.yum install -y libxml2-devel错误configure: error: Please reinstall the BZip2 distribution
    yum install -y bzip2 bzip2-devel错误
    configure: error: jpeglib.h not found.
    yum install libjpeg-devel -y
     
    错误
    configure: error: png.h not found.
    yum install libpng-devel -y
     
    错误
    configure: error: freetype-config not found.
    yum install -y freetype freetype-devel
    错误
    configure: error: mcrypt.h not found. Please reinstall libmcrypt.
    tar zxvf mcrypt-2.6.8.tar.gz    #提示mcrypt包没有安装。安装mcrypt包 又依赖依赖 libmcrypt,  mhash 这两个包。
     
    1.首先编译安装  libmcrypt,  mhash,  mcrypt  二进制源码包。
    下载libmcrypt-2.5.8.tar.gz
     
    tar zxvf libmcrypt-2.5.8.tar.gz
    cd libmcrypt-2.5.8
    ./configure --prefix=/usr/local/related/libmcrypt 
    make  
    make install
     
    安装 libltdl,也在libmcrypt源码包里面
    cd libmcrypt-2.5.8 /libltdl
    ./configure --enable-ltdl-install
    make
    make install
     
    下载mhash-0.9.9.9.tar.gz
    tar zxvf mhash-0.9.9.9 
    cd mhash-0.9.9.9 
    ./configrue --prefix
    make 
    make install
    这两个包安装完。然后在安装mcrypt包。
     
    安装mcrypt
    tar zxvf mcrypt-2.6.8.tar.gz
    LD_LIBRARY_PATH=/usr/local/libmcrypt/lib:/usr/local/lib ./configure --with-libmcrypt-prefix=/usr/local/libmcrypt   #编译参数
    make 
    make install
    #mcrypt 没有安装完成。这是php模块。需要等php安装完成之后。在继续安装。
     
    把以上的依赖关系解决完了之后在继续安装PHP
    ./configure --prefix=/usr/local/php --with-apxs2=/usr/local/apache2/bin/apxs --with-config-file-path=/usr/local/php/etc  --with-mysql=/usr/local/mysql --with-libxml-dir --with-gd --with-jpeg-dir --with-png-dir --with-freetype-dir --with-iconv-dir --with-zlib-dir --with-bz2 --with-openssl --with-mcrypt --enable-soap --enable-gd-native-ttf --enable-mbstring --enable-sockets --enable-exif --disable-ipv6  --with-mcrypt=/usr/local/libmcrypt/
    make
    make install


    生成php.ini
    cp /lamp/php-5.5.9/php.ini-production  /usr/local/php/etc/php.ini
     
    apache结合php
     
    Apache的主配置文件为 :/usr/local/apache2/etc/httpd.conf   #参数编译的时候指定到/usr/local/apache2/etc/ 这个目录下。
    vim /usr/local/apache2/etc/httpd.conf
    找到AddType application/x-gzip .gz .tgz 这一行在下面增加
    AddType application/x-httpd-php .php
    找到:<IfModule dir_module>
        DirectoryIndex index.html
    </IfModule>
    将中间一样的内容改为:DirectoryIndex index.html index.htm index.php
    修改完成后保存退出。
    启动前检测apache的配置文件是否正常。
    /usr/local/apache2/bin/apachectl -t  
    如果显示“Syntax OK” 表示正常。
    启动apache
    /usr/local/apache2/bin/apachectl start
    检测是否启动成功。
    netstart -lnp |grep httpd
    /usr/local/apache2/bin/apachectl  graceful   加载apache配置文件   不用重启
    /usr/local/apache2/bin/apachectl  -t  查看php配置文件是否正常
    /usr/local/php/bin/php -i |more  能查看php安装信息。。./configure 内容 等等
    cat /usr/local/apache2/build/config.nice   查看apache 安装的编译代码
    cat /usr/local/mysql/bin/mysqlbug |grep -i confi     参看musql安装的编译参数
         
         1.5测试php解析
    Linux下查看Nginx、Napache、MySQL、PHP的编译参数的命令如下:
    1、nginx编译参数:
    #/usr/local/nginx/sbin/nginx -V
    2、apache编译参数:
    # cat /usr/local/apache/build/config.nice
    3、php编译参数:
    # /usr/local/php/bin/php -i |grep configure
    4、mysql编译参数:
    # cat /usr/local/mysql/bin/mysqlbug|grep configure
        
         1.6安装Discuz
              下载discuz-utf-8版本
              编辑 vim /usr/local/apache2/conf/httpd.conf
         
              编辑 vim/usr/local/apache2/conf/extra/httpd-vhosts.conf
         
              ServerAdmin 管理员邮件
              DocumentRoot     指定web目录
              ServerName     服务器名称
              ServerAlias          服务器别名
              vim /etc/hosts
              
              将 Deny from all改为Allow from all
              ps aux |grep httpd          查看哪个用户运行apache
              
           更改discuz程序目录所有者和所属组
             vim /etc/profile.d/path.sh
              
              source           重新加载配置文件
              create databases discuz          创建数据库
              grant all on discuz.* to 'ken'@'localhost' identified by 'ken';          赋予用户权限
                   
    1.登录mysql
    #mysql -u root -p
    2.新增用户
    insert into mysql.user(Host,User,Password) values("localhost","xxx",password("***"));
    注释:xxx为新建用户名,***为用户密码
    3.执行该句后,还需要刷新权限表
    flush privileges;
    4.赋予用户权限
    grant all on ttt.* to xxx@localhost identified by "***";
            注意:ttt为数据库名,当然你也可以填* 为所有数据库
    5.赋予权限,还需要再刷新权限表
    flush privileges;
    6.通过sql语句查询出新增结果
    select user,host,password from mysql.user;
              7.mysql 查看所有用户
                    select * from mysql.user
                 select * from mysql.user G;          当表的列太多现实不正常时,G横项显示
     
         1.7apache用户认证
    用vim打开/usr/local/apache2/conf/extra/httpd-vhosts.conf文件
    <Directory /data/www/abc/>
            AllowoVerride Authconfig
            Authname "ni hao xian sheng"
            AuthType Basic
            AuthUserfile /data/.htpasswd
            Require valid-user
    </Directory>
    然后从新加载一下apache就可以le
    1.##  这里设置的目录为真实目录,并非虚拟目录
    2.    AllowOverride AuthConfig  为允许认证
    3.    AuthType  认证类型 Basic 由 mod_auth 提供
    4.    AuthName  这里定义的内容将在 web 弹出的登陆框中显示
    5.    AuthUserFile  定义认证文件路径 ,不要放在可能被下载到的地方
    6.    Require user  定义允许访问的用户
    配置完这一步接下来建立验证文件
    Htpsswd -c /data/.htpasswd ken(如果要在添加一个用户的话不加c选项)
    New password: 
    Re-type new password: 
     
         1.8默认虚拟主机
    配置默认虚拟主机
    用vim打开/usr/local/apache2/conf/extra/httpd-vhosts.conf
    <VirtualHost *:80>
        DocumentRoot "/tmp/123"
        ServerName www.23.com
        #ServerAlias www.meiqianzenmeweihuganqing.com
        #ErrorLog "logs/dummy-host.example.com-error_log"
        #CustomLog "logs/dummy-host.example.com-access_log" common
    </VirtualHost>
    指定一个不存在的目录DocumentRoot 在/tmp/下创建123 (防止起启动的时候报错) /tmp/然后在降低文件的的权限 chmod 600 /tmp/123这样就不会访问到的,其目的是为了安全、只允许指定的域名访问。
     
              <VirtualHost *:80>
                   DocumentRoot "/tmp/123"
                   serverName 234.com
              </VirtualHost>
              mkdir /tmp/123     创建空目录
              chmod 600 /tmp/123          更改目录权限
              apache      默认虚拟主机就是第一个
              
               铭哥,看下我理解的对不对. 视频里演示禁止访问虚拟主机; 在这个虚拟主机配置里写入了两个选项,第一个为默认的访问,里面把指定的目录/tmp/123权限设置为600,并且域名是随便设置的.当windows端浏览器输入的域名凡是指向到虚拟主机配置文件里默认访问的都会因为deamon用户没有/tmp/123权限而出现403的访问错误; 而在浏览器输入的域名解析指向到配置文件里第二个访问地址的, 因为deamon对指定目录有足够权限,所以能正常访问.
     
                位置在第一个的虚拟主机,为默认的主机,凡是域名指向过来,都会解析到这个来。所以,当有一个新的站点想在服务器上跑的时候,需要额外去配置一个新的虚拟主机配置段
         1.9域名301跳转
               301域名跳转的配置
    用vim /usr/local/apache2/conf/extra/httpd-vhosts.conf中进行配置
    <VirtualHost *:80>
         ServerName www.xxx.com
         ServerAlias www.yyy.com
         DocumentRoot /var/www/html/aminglinux
    <IfModule mod_rewrite.c>
         RewriteEngine on
         RewriteCond %{HTTP_HOST} ^www.aaa.com$(条件)
         RewriteRule ^(.*)$ http://www.yyy.com$1 [R=permanent,L]或[R=301,L](规则)301永久从定向302临时重定向L表示结束了
    </IfModule>
    </VirtualHost>
    多域名时在条件后面加[OR]或者的意思
    在linux中用curl进行测试命令格式 curl -xip 域名 -I
    301     域名永久重定向跳转时为了让搜索引擎更快的找到
    302     域名临时重定向
     
         2.0apache日志切割
              将Errorlog 和Customlog     设为绝对路径
             按天分割apache访问日志:CustomLog "|/usr/local/apache2/bin/rotatelogs -l /usr/local/apache2/logs/test.com-access_%Y%m%d_log 86400" common
              date -s "2016-01-03 01:01:00"          设置时间
         
         2.1apache不记录指定文件类型日志
              SetEnvIf Request_URI ".*.gif$" image-request
    SetEnvIf Request_URI ".*.jpg$" image-request
    SetEnvIf Request_URI ".*.png$" image-request
    SetEnvIf Request_URI ".*.bmp$" image-request
    SetEnvIf Request_URI ".*.swf$" image-request
    SetEnvIf Request_URI ".*.js$" image-request
    SetEnvIf Request_URI ".*.css$" image-request
    CustomLog "|/usr/local/apache2/bin/rotatelogs -l /usr/local/apache2/logs/oem.discuz.com-access_%Y%m%d.log 86400" combined
    env=!image-request
     
         2.2apache配置静态缓存
              curl -x127.0.0.0:80 'http://www.test.com/static/image/common/logo.png' -I
              
            <IfModule mod_expires.c>
    ExpiresActive On
    ExpiresDefault A86400
    ExpiresByType image/x-icon A2592000
    ExpiresByType application/x-javascript A2592000
    ExpiresByType text/css A2592000
    ExpiresByType image/gif A604800
    ExpiresByType image/png A604800
    ExpiresByType image/jpeg A604800
    ExpiresByType text/plain A604800
    ExpiresByType application/x-shockwave-flash A604800
    ExpiresByType video/x-flv A604800
    ExpiresByType application/pdf A604800
    ExpiresByType text/html A900
    </IfModule>
            
         
         2.3apache配置防盗链
              位置一般情况下在 /usr/local/apache/conf/httpd.conf
    或者apache 2.2 的 /usr/local/apache2/conf/extra/httpd-vhost.conf
    添加 
     
    SetEnvIfNoCase Referer "^http://www.ccvita.com" local_ref
    SetEnvIfNoCase Referer "^http://ccvita.com" local_refSetEnvIfNoCase Referer "^$" local_ref
    <filesmatch ".(txt|doc|mp3|zip|rar|jpg|gif)"> 
    Order Allow,Deny 
    Allow from env=local_ref 
    </filesmatch> 
    (Allow : 允许(白名单)       Deny:拒绝 )
     
    还一种写法,是用正则的,这种写法在各个版本的apache比较通用。
    写法是 
     
    SetEnvIfNoCase Referer "^http://.*.yourdomin.com" local_ref
    SetEnvIfNoCase Referer ".*.yourdomin.com" local_ref
    SetEnvIfNoCase Referer "^$" local_ref
    <filesmatch ".(txt|doc|mp3|zip|rar|jpg|gif)"> 
    Order Allow,Deny 
    Allow from env=local_ref 
    </filesmatch> 
    本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/qianling3439/archive/2009/02/05/3864248.aspx 
       
         2.4apache访问控制
              
              Order (排序:设置执行顺序) 可以选择 先执行allow 还是 deny
            
     
         2.5apache禁止解析php
              
            针对于 /data/www/data 目录
              1.将php引擎关闭
              2.filesmatch 将所有ip禁止访问,只允许127.0.0.1
         
         2.6apache禁止指定user_agent、
              设置禁止curl 和 chrome 访问 
         
              用curl 设置user_agent模拟chrome访问 
         
         
        2.7apache通过rewirte限制某个目录
              
     
        2.8php.ini配置文件详解
              php -i     可以查看php.ini文件所在路径loaded Configuretion File => php.ini路径
              ;     php.ini 的作为注释符号
               #     shell 的注释符号
               disable_function = (禁用的函数)
              php错误级别:
              
              
     
                        php错误日志输出配置
     
              
              open_basedir = /data/www/discuz:/tmp          (防止入侵者访问系统重要目录,此处限制只能访问/data/www/discuz或者/tmp)          
              在apache虚拟主机配置openbasedir          (与直接在php.ini里修改的好处是:可以区分不同的虚拟主机)
              
     
         2.9php扩展模块如何安装
              php -i |grep php.ini
              在php源码包目录下, 找到/usr/local/src/php-5.3.27/ext/gd          ext目录为存放动态加载模块的安装包 
              进入需要的包后如:cd gd
              使用php工具/usr/local/php/bin/phpize 生成configure
              此时在gd目录生成了configure安装文件
              ./configure --with-php-config=/usr/local/php/bin/php-config          固定配置
              make 
              make install
              php -m           查看php加载哪些模块
              extension_dir          php动态模块库的存放路径(在php.ini中可以指定extension_dir 所在目录)
              php -i |grep extension_dir          查看extension_dir目录(扩展模块目录)
              grep '^extension=' /usr/local/php/etc/php.ini          查看哪些模块是动态加载的
              在php.ini中添加动态模块      
                  此处,程序会在extension_dir中寻找curl.so文件,找不到会报错
              
         
        3.0mysql配置讲解
              /etc/my.cnf               mysql配置文件
    Key_buffer_size = 256M                   存储缓冲区大小
    Table_open_cache = 256                 打开表的数量
    graphic mysql连接数
     
    graphic 查询超过1s 记录 mysql慢查询Mysql调优帖子地址
     
        3.1mysql的root密码重置
              mysqladmin -uroot -p(空可省) password 'ken'
              忘记密码编辑配置文件:vim /etc/my.cnf     添加一行 skip-grant
              
              直接登录
              使用mysql库:use mysql
              更新root用户密码:     update user set password=password('ken') where user='root'          
     
         3.2mysql登陆
              mysql -uroot -h192.168.1.177 -P3306 -p123456           mysql远程登陆,-u用户名 ,-h指定host,-P指定端口,-p密码
              
         3.3mysql常用操作-1
              mysql -uroot -p123456;
              show databases;               查看所有数据库
              use mysql                         选择数据库(可不加分号,其他时候需加分号;)
              select database()             查看自身所在哪个数据库
              select user();                    查看用户
              select version();               查看版本号
              show tables;                    查看所有表
              desc tablename;              查看表结构(字段,是否非空,主键)
              show create table tablenameG;          查看某个表是如何创建的
              insert into tablename values ''               插入表数据
              delete from tablename where clonename='cloneid'          删除表数据
              truncate table tablename          清空表数据
              drop table tablename               删除表
              
         3.5mysql备份与恢复
              mysqldump          mysql备份工具
              mysqldump -uroot -pken mysql > /data/mysql.sql          选项依次是:用户名 密码 数据库名 重定向文件名
              mysql -uroot -pken discuz < /data/mysql.sql          利用反向重定向恢复数据库
              数据库表文件默认对应在 /data/mysql/mysql/   下的.frm .MYD .MYI     myisam存储引擎
              mysqldump -uroot -pken mysql user > /data/user.sql          备份数据表
              mysql -uroot -pken mysql < /data/user.sql               利用反向重定向恢复数据表(不需要加表名)
              
    六、LNMP架构搭建与优化
          1.1php编译安装
               
          1.4nginx启动脚本和配置文件
              在/usr/local/conf/nginx/nginx.conf          目录下写入脚本文件,然后去掉server部分,添加外部引入语句:         include vhost/*.conf;
              保存退出在当前目录下创建vhost文件夹,vhost目录下创建default.conf,并将访问目录设置成一个(nginx用户)不可访问的目录,作为默认虚拟主机,防止误解析。去掉php解析部分代码(设置默认虚拟主机后php解析没有用了)
              创建test.conf虚拟主机配置文件
              
              注意第一个为默认虚拟主机     root:/tmp/www; deny all          做限制解析
     
          1.5php-fpm配置文件
              php-fpm.conf     和 php.ini          前者是php服务配置文件,后者是php全局配置文件
               /usr/local/php/etc/php-fpm.conf         
     
          1.6常见502问题解决
              Permission denied          不可读
              
              在php-fpm.conf文件中添加下面两行
              listen.owner = nobody
              listen.group = nobody
              php-fpm -t     查看配置是否正确
              
         1.7nginx用户认证
              curl -x127.0.0.1:80 uken:1 www.test.com/admin.php          使用curl的用户名密码登陆访问控制的文件,-u用户名:后跟密码,x指定ip
              
              打红线部分为nginx解析php的代码
     
         1.8nginx域名跳转
              直接在server_name 后添加如:
            301重定向语句
            if ($host !='www.test.com')
         {
                 rewite ^/(.*)$ http://www.test.com/$1 permanent; 
          }
         1.9nginx不记录指定文件类型日志
              在nginx虚拟主机配置文件root /data/www     下一行添加访问日志路径: access_log /tmp/access.log combined_realip;
              然后再添加不记录指定文件类型日志如下:
              
              
         2.0nginx日志切割
              vim /usr/local/sbin/nginx_logrotate.sh
              #!/bin/bash
              d=`date -d "-1 day" +%F`
              [-d /tmp/nginx_log] || mkdir /tmp/nginx_log
              mv /tmp/access.log /tmp/nginx_log/$d.log
              /etc/init.d/nginx reload > /dev/null
              cd /tmp/nginx_log/
              gzip -f $d.log
              
              gzip -f          如果日志已经压缩过,使用-f选项可以强制压缩覆盖不提醒
              
         2.1nginx配置静态文件过期时间
              location ~ .(js|css)
              {
                   access_log off;
                   expires 2h;
              }
     
         2.2nginx配置防盗链
              location ~ .*.(gif|jpg|jpeg|png|bmp|swf|flv|rar|zip|gz|bz2)$
              {
                   access_log off;
                   expires 15d;
                   valid_referers none bloked *.test.com *.aaa.com;
                   if ($invalid_referer)
                   {
                        return 403;
                   } 
              }
              测试:curl -e "http://baidu.com/erwds" -I -x192.168.1.178:80 'http://test.com/static/image/logo.png
              curl -e选项可以指定referer
     
        2.3nginx的访问控制
              location ~ .*admin.php$ {
                   allow 127.0.0.1;
                   deny all;
                   include fastcgi_parems;
                   fastcgi_pass unix:/tmp/www.sock;
                   fastcgi_index index.php;
                   fastcgi_param SCRIPT_FILENAME /data/www$fastcgi_script_name;
              }
              curl -x192.168.1.178          指定来源ip
              白名单和黑名单
         
         2.4nginx禁止指定user_agent
              if ($http_user_agent ~ 'curl|baidu|1111')
              {
                   return 403;
                   }
              测试curl -A "fsdjlksdfbaidu" -x192.168.1.178:80 test.com -I     curl -A选项指定user_agent
     
         2.5nginx代理详解
              vim proxy.conf
    upstream ken {
       server 61.135.169.125:80;
       server 61.135.169.121:80;           
    }
              server  {
        listen 80;
        server_name baidu.com www.baidu.com;
        
        location / {
              proxy_pass http://ken/;
              proxy_set_header Host $host;
         }
    }
                   (待整理)
     
    七、linux常用服务部署与优化
          1.1nfs部署和优化-1
              NFS == network file system
              yum install -y nfs-utils rpcbind          客户端与服务端通信rpcbind
              vim /etc/exports
              写入:/mnt 192.168.1.177(rw,sync)                选项rw可读可写,ro可读
              /etc/init.d/rpcbind start
              /etc/init.d/nfs start
              在客户端安装:yum install -y nfs-utils
              showmount -e 192.168.1.178
              mount -t nfs 192.168.1.178:/mnt /opt
              df -h          查看磁盘使用情况
     
         2.2nfs部署和优化-2
              /mnt 192.168.1.177(rw,sync,all_squash,anonuid=500,anongid=500)
            客户端执行:umount /opt/          (出现:umount.nfs: /opt: device is busy     加上-l选项:umount -l /opt/ )
            重新挂载:mount -t nfs -onolock,nfsvers=3 192.168.1.178:/mnt /opt          (-o:不加锁,nfsvers指定版本)
         2.7mysql主从配置-1
              replication          主从也叫AB复制(把主的日志复制到从上,从根据日志将数据复制,从而的达到两个数据库数据保持一致)。
              需要把A操作的动作记录下来,然后把数据推到从上去。
              rm rf /usr/local/mysql          删除旧版本mysql
              cd /usr/local/src               下载源码包保存路径
              
         3.5iredmail安装
              iRedmail:postfix 发邮件 dovecot 收邮件 apache mysql openldap policyd amavisd
         roundcube awstat fail2ban iRedAdmin
              cd patches
              sed -i 's/iredmail.org/106.187.51.47/g' get_all.sh
              cd ..
              sh iRedMail.sh
  • 相关阅读:
    gearman作业服务器的工作心得
    linux下crontab 定时执行脚本笔记
    node.js async流程控制器--queue(队列)
    解决node.js express框架的跨域问题;
    2014年11月5号工作中遇见的一些问题,记录一下.
    获取表的下一个自增ID
    一个防止页面刷新后,ajax请求的数据被重置的方法
    html元素的overflow详解
    SQL 查询 技巧
    SQL RAISERROR 用法
  • 原文地址:https://www.cnblogs.com/zhaofuyun/p/5122332.html
Copyright © 2011-2022 走看看