阿铭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      默认虚拟主机就是第一个
          
           铭哥,看下我理解的对不对.\n视频里演示禁止访问虚拟主机; 在这个虚拟主机配置里写入了两个选项,第一个为默认的访问,里面把指定的目录/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 tablename\G;          查看某个表是如何创建的
          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
posted @ 2016-01-11 19:32  罂粟花的博客  阅读(1370)  评论(0编辑  收藏  举报