12.29学习日记(补上)

回复 收藏
本帖最后由 435664265 于 2016-2-18 22:21 编辑

今天学到的东西:系统精讲部分
    1.1节讲了使用mkdir指令通过绝对路径”mkdir /tmp/123(路径)和相对路径 mkdir 123来创建目录,使用相对路径创建时要先知道当前目录所属位置;而且想在父目录都没有创建的前提下创建子目录,可使用-p 选项实现。另外-v选项能将创建目录的过程一一列举出来。删除目录指令rmdir和mkdir用法一致;还有今天本来想用想man工具,出现了-bash-4的提醒,上网查了一下,原来是因为man工具没有安装,于是第一次使用了yum工具安装了man,还为此写了个报错解决过程word文档,想上传到论坛里捞点分花花,哈哈,想想有点简单,也就算了。
      1.2 rm命令介绍了rm 的常用选项-i 删除前会提示是否确认;-f 直接删除并忽视不存在的文件,不提示确认信息;-r目录删除文件,并学会了使用touch 指令来创建文件。
      1.3 cp命令用来拷贝文件或目录,df指令可以查看看当前系统分区详细情况;
      1.4 mv指令可以用来移动文件或者目录,还可以重命名(在当前目录下)并说明了不同分区下移动文件或目录慢,但是同一分区下移动目录或文件快的原因。原因在于跨区移动涉及到读写操作,但是同区移动仅需修改文件或目录的inode号;
      1.5 讲了怎么去查看文件,使用cat tac 查看,内容正反倒序;使用more,less命令可以解决文件内容过多,单屏显示不完的情况。less指令下有很多快捷键均可实现上下翻页功能;另外还有head 和tail 指令,均可加选项来选择显示行数。
      1.6 使用ll指令获得从文件的详细信息,学会怎么去辨识各种文件的类型和作用,还有一个比较重要的知识点就是知道了文件的归属概念以及不同归属下的可读、可写、可执行权限;
       1.7 进一步,在学会了怎么去辨识文件和归属者权限的基础上,再来学习怎么修改对应归属者的权限,通过chmod指令修改,并从原理上认识了默认创建的文件或目录的权限,并知道通过更改umask来修改默认设置。
      1.8 通过chown来修改属主、属组,可以类比windows下的用户和用户组来理解属主和属组的关系。
      1.9  说完文件或目录的一般属性,再来谈谈文件或目录的特殊属性。lsattr 查看当前目录下的所有文件的特殊属性;lsattr -R 可实现逐层查看 -d 选项查看目录本身权限,并知道使用chattr指令来增加文件或目录的特殊属性,保护文件不被轻易修改,删除等操作。
       综上,今天将文件或目录的创建、删除,可读可写可执行的辨识和修改,属主和属组的创建和修改,特殊属性的创建和修改,全都了解了一遍。
-------------------------------------------------------------------------------
2016.2.18  这部分内容将的主要是linux系统中的文件管理部分
2015-12-30 23:26 举报
已邀请:
0

435664265

赞同来自:

本帖最后由 435664265 于 2016-3-29 09:34 编辑

今天学到的东西:系统精讲部分
     2.0 小节继续讲了通过命令“chmod u+s 命令文件”(一般来说就是二进制的可执行文件)来临时获得root用户权限,整个过程叫做“suid”,得到root用户权限后,进而访问/root目录下文件,对文件进行操作。还有,这节课里面再次显示了root用户的至高无上地位,尽管shadow文件显示权限对所有对象都不可读、不可写、不可执行;但是对于root用户拥有霸道到不行的权利,无视一切阻拦,为所欲为。
    2.1小节将了sgid这个特殊权限,suid让普通用户临时拥有属主权限,sgid让普通用户临时拥有属组权限,suid只能对文件生效,但sgid不然,不仅对文件有效,还对目录有效。还需要注意的是,通过普通用户创建的文件或目录,当在root用户下对父目录进行sgid后,再用普通用户在父目录下创建文件或目录,其文件或目录的属组权限跟随父目录属组权限。chmod 4755=suid chmod 2755=sgid。
   
2.2小节讲了sticky_bit,防删除位指令。在root用户下新建一个文件1.txt可以被普通用户删除并在当前目录下新建一个同名文件,属主和属组均成为普通用户,原因是一个文件是否可被删除,不在于文件的属主或属组是谁,而在于该文件所在目录本身是否可写,若目录可写则目录下的任意文件均可删除。这样的事情linux系统是不能容忍它发生的,所以给root用户文件加保护,于是就有了chmod o+t . 进行保护。仅作用于目录。
         其实从上面讲的三个特殊权限得出:从指令的作用对象来看,suid仅作用在文件上,sgid对文件和目录通吃,而chmod o+t 也仅作用在目录上;从文件或目录的拥有对象,即所属主(u)、所属组(g)、其他用户(o)上分析,就是一个权力、资源分配的问题。把文件或目录比作资源,root用户就是个大财主,手下金山银山,美女左右环绕,拥有权力无边,资源无限。但是面对普通用户这样的屌丝,你又不能把他饿死,要不然谁干活呢。为了弘扬社会主义和谐的理念,资源分配上要尽可能合理,不能两级分化,root用户就将普通用户这个屌丝招到门下,让他能借用自己的资源来完成一些事情,自己不用干活,还让屌丝有了成就感。而所属组这个概念就好像一个权力集团,root用户掌管着这个集团的核心,但它也是集团的一部分。(扯远了)


         继续,2.3节讲了find搜索指令。linux中拥有搜索功能的指令还是不少,比如说which,单which 指令只能搜索到echo $PATH 路径下的可执行文件。还有一个是whereis 指令,这个和which差不多,没啥说的。而locate指令搜索的范围貌似广些,但是搜索前要手动更新库内容:updatedb。
       做了这么多的铺垫,就是为了引出find命令,使用find指令可以搜索指定目录下不同文件类型-type,不同文件名-name,不同的创建或最后修改时间-mtime、、的文件或目录。多个选项可以组合使用,选项多得不得了,五花八门:
      关于用时间搜索,-mtime -10表示过去十天内被创建或被修改的文件或目录,-mmin -5 表示过去五分钟内被创建或被修改的文件或目录;
      使用文件或目录的inode号进行搜索:find /-inum ???;
       find /var/log/ -type f -mtime +30 |xargs ls 这个命令是指将目录/var/log下大于三十天的文件给到列举出来;
       find /tmp/ -type f -mmin +7 |xargs -i mv {} {}.bak 这个命令是指将目录/var/log下大于7分钟的文件找出来,并将它们全都转换成.bak 文件;


       2.4 讲了文件或目录的三个时间属性:atime、mtime、ctime  使用stat 指令可以查看;atime显示文件被访问的时间,一般来说执行文件读指令的时候时间会更改,cat tac more less head tail指令会让atime发生更改 ;mtime显示文件被创建或更改时间,可以理解为文件内容发生变化时,该时间被更改,如使用vi echo touch指令下,mtime发生更改;ctime实现文件的权限、属主或属组,inode号,大小等属性被更改的时间;echo touch,需要注意的是使用touch指令,三个时间属性均发生更改。
       谢谢大家阅读,请留下脚印,最重要的是,请铭哥和大家帮我指出有哪些理解错误或者不够的地方。

-------------------------------------------------------------------------------
2016.2.18         linux文件管理、用户管理

0

435664265

赞同来自:

本帖最后由 435664265 于 2016-3-29 09:33 编辑

12/31  2.6,主题:用户和组管理
查看用户密码配置文件:cat /etc/passwd ,出现root:x:0:0:root:/root:/bin/bash 七段由冒号隔开的字段。
第一段root表示用户名;
第二段x表示密码,为安全起见,将密码放到文件 /etc/shadow 里;
第三段0表示uid,这是用户号,每个用户都有,使用id root 可以看到root用户的id号 ;
第四段0表示gid,这是组号,创建uid后会自动创建一个gid,一般同名;
第五段字段是对用户的解释说明,普通用户一般为空;
第六段字段表示用户的家目录,root家目录为:/root,普通用户家目录为:/home/michael;
第七段字段表示用户shell,root用户和普通用户的shell都为:/bin/bash。
     2.7 密码文件
   主题:密码文件详细分析
1, cat /etc/shadow 查看密码文件内容,每个账号分为九个字段;
第一个字段表示用户名;
第二个字段表示密码;root用户的密码加过密,使用$6$开头;*表示账号被锁定,!!表示该用户还没有密码;
第三个字段表示账户被创建或被更改的相对时间,数字以day为单位(基准:1970/1/1);
第四个字段表示该账号修改密码间隔时间,若为0表示无限制;
第五个字段表示该账号密码多少天后到期,默认99999;
第六个字段表示该账号密码到期前多少天给发密码到期警告;默认7
第七个字段表示该账号密码到期后,再过多少天将密码锁定,默认空;
第八个字段表示该账号的生命周期,默认空;
第九个字段作为保留值,无实际意义;


2.8 增加和删除用户组
主题:创建和删除用户组
1,命令groupadd grp1, 可创建名为grp1的用户组,创建后会自动修改两个配置文件:/etc/group,在这个文件内可以查看到全部的组,文件内容最后一行有四个字段:第一个字段是组名,第二个字段是组密码,第三个字段是gid;
另外一个配置文件:/etc/gshadow 在这个文件内可以看到全部组的密码,最后一行还是有四个字段,第一个字段是组名,第二个字段是密码,若为!表示没有密码,第三第四个字段默认空;
创建组:groupadd -g可以自定义gid(从500开始)
删除组:groupdel grp1 表示删除组grp1;
组的概念:组内有用户,用户被包含在组里。组是用来管理用户的,如果组内有用户,则不能删除组;


2.9 增加和删除用户
主题:创建和删除用户
1,命令useradd 123可以创建一个名为123的用户,在/etc/passwd 配置文件里可以查看,并自动创建一个用户组,在/etc/group 配置文件里查看;
2,使用useradd -u 504 -g 513 123表示创建一个uid=504 gid=513的用户123
命令 useradd -u505 -g 506 -d /home/user3 -s /sbin/nologin user2
这个命令表示创建一个uid=505 gid=506 家目录为/home/user3 shell解释器为/sbin/nologin 的名为user2的用户;
3,, useradd -M选项创建用户时不存在家目录;
4,userdel 123 删除用户123,但是如果有家目录,不会被删除;
userdel -r 123 可以删除用户123并同时删除家目录;

---------------------------------------------------------------
2016.2.18      以上内容讲的是linux系统的用户管理部分




0

435664265

赞同来自:

2.5 软连接和硬链接
1,软连接l文件可以类比成windows中的快捷方式,可以有效节省空间,并且可以跨分区使用。比如说在分区a下有目录/boot/big file,这个目录内文件占有空间不断增大,而且所属分区的大小比较小,这时就可以将文件移到空间大的分区b下,并用创建软连接放到/boot/big file中,这样同样可以实现功能;
2,创建文件或目录的软连接:ln -s /root/12.txt /tmp/123.txt;不加减选项-s为硬链接
3,可以让多个文件对应一个inode号,不能让多个inode号对应一个文件;硬链接不能应用在目录上,且只能在同一分区中:原因是每个分区在被创建的时候,不同分区下inode号是唯一的,同一分区下的硬链接是两个文件公用一个inode号。
0

435664265

赞同来自:

本帖最后由 435664265 于 2016-3-29 09:34 编辑

3.0 主题:使用usermod修改用户属性
1,usermod -g 512 user1 将用户user1的gid改为512;
2,一个用户可以同时属于不同的组,对属组而言,其他组叫扩展组;
3,使用groupdel 可以删去一个用户的扩展组;
4,usermod -g -u -d -s -G -L(锁定用户) -U(解锁用户);
3.1主题:修改用户密码
1,root用户使用passwd可以直接修改密码,root用户下修改普通用户密码要加用户名;
2,mkpasswd可以自动生成密码 ,选项-l 定义密码长度,-s定义特殊字符个数,-C定义大写字母个数,-d定义数字个数,-c定义小写字母个数 如: mkpasswd -l 12 -C 5 -s 0
3,echo "gtffru" |passwd --stdin michael 通过管道的形式给用户设置密码;


3.2主题:su切换用户
1,在root用户下使用su - 123 和 su 123是有区别的:前者可以切换到123用户的环境变量下,而后者还是使用root用户的环境变量,用echo $PATH查看区别;
2,在root用户下,不切换到普通用户环境下,但是可以使用普通用户的环境来执行命令:
su - -c "echo $PATH" user1 还可以执行比如说创建目录或文件等一系列命令


3.3主题:sudo命令详解
使用sudo命令,可以使普通用户临时借用root用户的身份执行命令,可以不用知道root用户的密码;
要使用这个命令,先要修改配置文件:visudo 找到root ALL-(ALL) ALL ,这个命令行分三个字段,第一个字段表示用户名root ,第二个字段分两部分,前面的部分表示登录情况,ALL就是不限制远程登录或者本地登录,可以更改为ip地址名来限制,括号里面的ALL表示使用制定者用户的命令 最后的一个ALL表示不限制使用的命令 在这行命令下面添加 Michael ALL=(root) /bin/ls,(前面加上NOPASSWD:可以在首次执行命令的使用不能输入普通用户的密码,


3.4主题:df指令
1,df -h 以G M为单位,显示磁盘分区; 类似命令 free df -k
2,df -i 查看磁盘分区inode号使用情况;
-----------------------------------------------------------------------
2016.2.18                         linux系统用户管理 、磁盘管理



0

435664265

赞同来自:

本帖最后由 435664265 于 2016-3-29 09:36 编辑

1/3学习日记

3.5 主题:使用du指令查看文件或目录大小
1,du -h /etc 查看/etc文件内全部文件大小,并根据文件大小匹配单位;
du -sh /etc 仅查看/etc文件本身大小
2,du -sh 和 ls -sh 显示文件大小有区别,原因在于磁盘存储数据的过程是:先将磁盘空间分成小块,最小单元为4k,然后放入数据内容。文件内容不一定都填满块,而且不同文件不共用块,导致磁盘小块的的空间有时候是空闲的。
而du 指令查看的是文件暂用磁盘空间的大小,但ls指令查看的是文件本身的大小,于是造成有差异
3.6 节主题:磁盘管理(磁盘分区,格式化)
1, fdisk -l 查看磁盘分区情况,为虚拟机新增一个磁盘;
2,新增磁盘后,使用fdisk /dev/sdb 为磁盘分区;如果需要分区的磁盘大小超过2T,使用parted 进行分区。主分区primary partition,扩展分区(extended)两者之和不能超过4;
但是扩展分区内可以创建逻辑分区,逻辑分区的数量可以很多;
常用命令:l list known partition types 列举分区类型;
n add a new partition 创建一个新分区;
p print the partition table 打印分区表;


3.7主题:给磁盘分区之后,需要经过格式化才能给磁盘写入数据。
1,通过mkfs指令:mkfs.ext4 /dev/sdb2 将磁盘分区/dev/sdb2格式化成ext.4 的文件系统类型;
2,通过mke2fs指令: mke2fs -L michael -t ext4 -b 2048 -m 1 /dev/sdb2
就是将分区/dev/sdb2格式化成文件系统标签为michael,文件系统类型为ext4,块大小为2k,给root 用户保留1%的空间


3.8主题:设置完磁盘分区,并给磁盘格式化之后,就需要将磁盘挂载,windows下的加载。
1,挂载命令:mount , mount /dev/sdb2 /mnt 就是将格式化好的/dev/sdb2 挂载到/mnt 下,所谓挂载点就是linux系统下的目录.
新建一个目录为/home/123 然后mount /dev/sdb2 /home/123 将磁盘挂载在目录123下,那么目录下的文件或目录都会被覆盖(暂时看不到原文件和目录),只为该磁盘分区服务,如果两个磁盘分区挂载到同一目录下,那就只为后一个磁盘分区服务;
2,查看挂载好的磁盘信息,可以使用df -h 或df -T指令;
3,如果在mount /dev/sdb2 /home/123 如果 /dev/sdb2的LABEL是michael,就可以用标签去挂载,形如:mount LABEL=michael /home/123 ,如果在/home/123目录下touch 文件,再卸载磁盘分区的话,就会出现错误,可以退出分区,再进行卸载。或者加选项进行卸载,形如:umount -l (懒惰)/home/123


3.9节1,开机启动后,让磁盘分区自动挂载到相应的挂载点,可以通过修改配置文件/etc/fstab来实现;或者将挂载的命令写到/etc/rc.local ;
2,使用命令vi /etc/fstab uuid 可以说是磁盘的一个身份标识,可以通过blkid命令获得全部磁盘的uuid,还可以通过uuid来挂载磁盘,如:mount “UUID=???" /mnt ;
3,mount 命令使用的时候可以加选项来设置特定功能,如-o noatime表示挂载磁盘的时候不去修改磁盘内文件的atime;usrquota是磁盘配额;
挂载选项defaults 包括了rw,可读可写;
suid,让普通用户获得命令文件属主的权限执行命令;
dev ,可以解析字符设备的文件;
exec,挂载后磁盘里的文件有执行权限;如果设置noexec,即使文件有x也不能够执行。
auto,能否在开机的时候自动挂载
nouser,允许普通用户进行挂载动作
async,磁盘和内存读写速度不一致;
第一个字段为磁盘分区
第二个字段为挂载点
第三个字段为文件系统类型
第四个字段为选项
第五个字段为一个数字,显示为0表示不备份日志,1表示备份日志;
第六个字段为一个数字, 表示开机是否监测磁盘,当发生非法断电时,可能会导致磁盘出现块损坏,检测优先级1》2》0,一般来说,根目录会设置成1(只能有一个1),其他需要检测的磁盘分区设置为2,不检测的分区设置为0;
4,mount -a自动加载配置文件里面所有的配置,配置完文件后可以用此命令来加载磁盘;


另一种方法:vi /etc/rc.local ,写入挂载命令,保存退出即可;

-------------------------------------------------------------------------------
2016.2.18                 linux 磁盘管理  
      


0

435664265

赞同来自:

本帖最后由 435664265 于 2016-3-29 09:35 编辑

1.1  主题:vi 和vim 文件编辑器
1,vim是vi的升级版;使用yum install -y vim-enhanced;
vim打开的文件,代码有多种颜色,但是vi打开文件时代码为白色;
vi /etc/init.d /iptables
vim !$ 直接引用了上一个字符串;
2,使用vim =10 i.txt 就会将光标定位到i.txt文件里面的第十行,若要显示行号,可以:set nu;
1.2主题:vim下光标移动
vim有三种模式:一般模式、编辑模式、命令模式;
一般模式下:
1,shift +4定位到行尾,shift+6定位到行的第一个非空白字符,0定位到行的第一个字符;
2,gg 定位到文件第一行行首,shift定位到文件末行行首;


1.3 vim 下的复制粘贴删除;
删除:shift S删除整行 dd删除整行 ;
剪切:v 选中,p粘贴;
复制:yy复制,p粘贴;


1.4 vim下编辑模式
主题:编辑模式i 编辑从当前光标位置开始,I从当前行的行首开始编辑;
a编辑从当前光标的下一个位置开始;A从当前行的行尾进入编辑模式;
o编辑从光标的下一行位置开始;O从当前光标所在位置的上一行开始编辑
0

435664265

赞同来自:

本帖最后由 435664265 于 2016-3-29 09:35 编辑

1.5 vim命令行模式
1.退出“:q ” 强制退出“:q!”保存“:w” 保存后退出“:wq”
2.显示行号“:set nu” 不显示行号“:set nonu”
3.查找:/ ? 替换“:1,100s/iptables/haha/g 表示在1至100行(1,$=% 表示在全文档范围内进行)将iptables替换成haha,而且如果在单行中出现两个iptables,全部进行替换;
4.使用脱义字符对目录进行脱义”\" 还可以使用“#”
5, nohl取消高亮;
1.6 gzip讲解
1,gzip install.log.syslog 压缩名为install.log.syslog的文件,压缩后install.log.syslog消失,得到install.log.syslog.gz 解压缩gzip -d install.log.syslog.gz 即可;
2,gzip install.log.syslog 有压缩等级1--9 默认为6 1级别压缩程度最低,9级别压缩程度最高;


1.7  bzip2 讲解

1,gzip 和bzip2使用不同的算法对文件进行压缩,大多数情况下bzip2压缩出来的文件更小;gzip和bzip2两者都不能压缩目录;
2,使用zcat 可以查看gzip的压缩文件,使用bzcat可以查看bzip2压缩出来的文件;


1.8 zip和unzip
1,zip不仅可以压缩文件,还能够压缩目录,不删除源文件。 压缩命令格式 zip 11.txt.zip 11.txt 解压缩命令: unzip 11.txt.zip 112,压缩目录需要加选项 -r 形如 zip -r 111.zip 111 加选项-d能将文件压缩放到指定的目录下


1.9 xz压缩和解压缩
xz 和gzip bzip2 使用差不多一样 压缩完文件后会生成xz 结尾的压缩文件
xz -d 为解压缩 xzcat 可以查看压缩文件;
0

435664265

赞同来自:

2.0 tar打包工具详解
tar打包工具功能:把多个文件打成一个包,或把文件和目录一块打成一个包;
tar -crf 1.tar 111 222 222.gz 打包后新文件,打包并没有压缩文件的过程;
tar -xvf 1.tar 加选项-C可以解包到指定目录下;
2.1 tar打包和压缩并用
1,使用tar -zcvf 1.tar.gz 11 22 可以认为先打包再压缩,加选项-z压缩成.gz ,使用-j 压缩成.bz2 ,使用-J压缩成.xz
查看压缩包内文件可以使用tar -tf 1.tar.gz ,.bz2 的也是一样查看;
不过.xz ,需tar -tJf 1.tar.xz;

2,tar -zxvf 1.tar.gz 解压缩
tar -jxvf 1.tar.bz2
tar -jxvf 1.tar.xz


3, tar -cvf --exclude 1.txt 1.tar 112 333 加选项--exclude可以将1.txt排除在外。
2.2 rpm安装和卸载
1,rpm =redhat package manager 包管理平台
mount /dev/cdrom /mnt 将光驱挂载到/mnt 下
cd /mnt 切换到/mnt下
2.,redhat-lsb-4.0-7.el6.centos.i686.rpm
4为主版本号,0为次版本号,7为修正版本号,el6表示红帽子系统 centos表示centOS系统,i686为32位操作系统。
3,使用rpm -ivh 安装rpm包 选项-i 表示install 选项-v 表示可视化,现象-h表示进度;
rpm特性有时候安装包会依赖于其他包,也就是需要被依赖包先安装后才能安装依赖包
如果两个rpm包相互依赖,就需要同时安装;
4,rpm -ivh --nodeps 可以对出现依赖关系的包进行强制安装。
5,rpm -e yp-tools 可以将yp-tools进行卸载;
6,rpm -Uvh yp-tools可以将yp-tools升级;
2.3 rpm查询
询rpm包:rpm -qa 查询系统中已安装的rpm包;
rpm -iq 包名 ,查看包中文件的详细信息;
rpm -qf 文件的绝对路径, 这样可以查询出文件所属的rpm包;
rpm -ql 包名,将包中的文件列举出来;

0

435664265

赞同来自:

本帖最后由 435664265 于 2016-3-29 09:36 编辑

linux系统提高部分

2.4 yum工具详解
  1,yum是用来管理rpm包的工具,优势在于:自动解决rpm包安装时出现的依赖关系;自动找到rpm包的库源,并下载下来;
2,vim /etc/yum/repos.d/Centos-
3, 使用 yum list |grep vim 来过滤和vim 相关的rpm安装包 @base(已安装) , base(未安装)
yum search ‘vim’也可以搜索相关rpm包
4,yum remove 包名,可以将rpm包删除;
5,yum update 包名,可以将rpm包升级;
6, yum grouplist ,可以查看已安装和未安装的套件(rpm包的集合)信息;
yum groupinstall "套件名” ,可以安装套件;
yum groupremove "套件名“,可以卸载套件;
2.5 搭建本地yum仓库
1,rpm包可以用yum从源来进行安装,如果不能联网,就失去了意义,这时候就需要从本地光盘 、ISO文件 U盘等进行安装,相当于使用本地的rpm制作本地的yum源。
2,本地yum仓库制作过程:mount /dev/cdrom /mnt,
修改配置文件:cd /etc/yum.repos.d
现将配置文件备份:cp -r yum.repos.d yum.repos.bak
删除base文件:rm -rf base文件;
修改配置文件:vim CentOS-Media.repo
[local_cdrom]
name=cd
baseurl=file:///mnt/ 挂载点
gpgcheck=0 是否检测,0表示不检测
enabled=1 是否执行,0表示不执行
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6


2.6 yum如何下载rpm包到本地
使用yum工具下载插件 :yum install yum-plugin-downloadonly
yum install vte --downloadonly --downloaddir /tmp下载到指定目录下


2.7 源码编译安装
1, 源码就是由c、c++等高级编程语言写出来的代码,由于要翻译成机器语言,需要进行编译;
2,源码包一定要到官网上下载;
3,到Apache上面下载了httpd文件的源码包;
4,将源码包统一放置,方便维护;/usr/local/src
5,解压缩包后,要习惯性看 vim INSTALL ,vim README文件;
6,安装过程:./configure --help 可以查看怎么安装;
./configure --prefix=/usr/local/apache ;配置完后使用echo $?进行检查,如果为0 说明配置完成;
make 将源码翻译成计算机语言;
make install 将计算机语言拷贝到指定目录下;

---------------------------------------------------------------------------
2016.2.18                       linux包管理

0

435664265

赞同来自:

本帖最后由 435664265 于 2016-3-29 09:38 编辑

学习内容:1.1shell特性
1,history 普通用户和root用户的保存路径和保存大小不一;
root用户路径:/root/.bash_history 默认保存1000条 ;
2,快捷键:!!上一条命令;!$上一条命令的最后一个参数;!950运行历史中第950条命令;!c 命令历史中最近的以c开头的命令;
3, tab键使用,按一下可以补全命令或者目录路径,两下可以将相关的文件或路径列出;4,alias给命令做别名;
5,*表示通配符 , ?只匹配一个字符
6,|管道符,将前一个命令的结果丢给后一个命令;
7,echo “iksdfsldfja” >1.txt 重定向 将文件原有内容删去再加入定向内容; echo “jkjsjkdfa”>> 1.txt 追加重定向,在文件内容后面追加内容;
8,wc -l < 1.txt 称为反向重定向,将1.txt的内容丢给wc -l 处理(wc -l查看行数);
9,使用多个任务,ctrl z 中止,jobs查看当前任务详情,fg调到前台运行,bg在后台继续运行
               1.2shell变量
1,shell变量分两种:系统变量和用户自定义变量;env 查看系统变量;$引用系统变量;
2.set不仅可以查看系统变量,还能查看自定义变量;
3,设置自定义变量:a=1;b=2,变量名字符中可以包含数字、字母、下划线,自定义变量一般设置为小写字母,以便于区分系统变量;
4,当变量赋值右边中出现特殊字符的时候,如空格键,、*号,#号使用单引号引起来:b=‘ls /tmp’;
5,引用命令的结果赋值给变量,值需要加反引号,myvim=`usr/bin/vim`;
6,引用其他变量的结果字符,来给新变量赋值,加双引号,b="$myvim"223
7,bash 进入子shell中,之前shell中自定义变量失效。通过export a=1定义出来的全局变量子shell中也能调用;exit退出子shell;
8,unset b 删除变量b

               1.3系统和用户的环境变量配置文件
1,环境变量配置文件: /etc/profile,source /etc/profile 重置配置文件;
2,/etc/bashrc /etc/profile都是关于系统级别的设置;
3,普通用户如果想自定义一些环境变量,都可以在.bashrc_profile 和.bashrc中定义


               1.4shell中特殊符号
主题:shell特殊符号
1,”*“ 通配符(多位); ”?“(一位)通配符;
2,”#“,符号后面命令失效;
3,”\"脱义符号 ,将某个字符原有意义去掉,只成为单纯字符;touch \#22.txt;
4,“|”管道符号,将前面命令的结果丢给后面的命令;
5,"$" 后面加上一个变量,表示在使用该变量"$PATH"
6, "!$"表示引用命令历史中最近的一个参数;
7,";"将两条命令写到一行中,"touch i.txt ; touch e.txt"
8,"~"表示用户家目录,也叫主目录;
9,“&” 表示将命令放到后台运行;"sleep 100 &"使用jobs可以查看运行或停止的后台任务;
10,">"重定向">>"追加重定向"2>"错误重定向"2>>"错误追加重定向;"<"反重定向;
11,"[]"将里面的数据逐个读出;ls [12].txt =ls 1.txt 2.txt;
0

435664265

赞同来自:

1.5 cut命令;    主要用于将文件内容切割成几段
1, cut -d : -f 5 passwd -d分割符号是什么;-f第几段;-c几个字符;

1.6sort命令;    主要文件或内容排序;
1,sort命令用于排序 sort file 的命令格式;sort /etc/passwd 用户密码按照ANSI码进行排序;-t -k 指定某一段进行排序,sort -t: -k3 /etc/passwd 以:进行分割,第三段进行排序 ,还是按照ansi码排序,-n按照数字大小排序 -r反序排序 , -u 去重;
               
1.7wc命令;    用于打印文件内容的各类总数信息;如行数;字符总数;单词数;
wc指令,打印文件内容总数信息; wc-l :打印文件内容行数; wc-m :打印文件字符总数; wc-w :打印文件单词数 以空白字符为分隔符;

1.8uniq和tee命令     用于去重,和sort搭配使用效果更佳
uniq指令,将相邻的字符重复项去除,保留一个;和sort指令搭配指令;
tee指令,从标准输入读取并写到标准输出和文件中 ;
# echo "2323322"> 133.txt
# cat 133.txt
2323322
# echo "2321322"|tee 133.txt
-c :将字符重复项的重复次数列出

1.9tr和split命令       tr用于替换  spilt用于将一个较大的文件分成小块
tr指令:替换字符;# echo "fajskdjf23787"|tr "a-z" "A-Z"
FAJSKDJF23787
split指令:将文件按要求分割成子文件并存放在当前目录下;
-l : 按照文件内容行数
-b: 按文件字节大小;
可以更改生成子文件的文件名;
0

laige521

赞同来自:

0

435664265

赞同来自:

本帖最后由 435664265 于 2016-1-11 23:47 编辑

2016/1/11   shell编程入门
2.0shell中连接符(并且、和、或者)
&&: 前面的命令执行成功后,才会去执行后面的命令;
||: 前面的命令执行不成功,才会去执行后面的命令;
; 前面的命令执行成功与否,后面的命令都会执行;

2.1grep过滤-1
主题:正则表达式(有规律的字符串)
1,通过指定格式的字符串去匹配一个指定行,可以出来一个正则表达式;grep egrep sed awk;
2,grep 过滤出指定行
[root@michaellinux etc]# grep 'root' --color passwd
root:x:0:0:root:/root:/bin/bash
operator:x:11:0:operator:/root:/sbin/nologin
-n : 打印出指定行;
--color :高亮;
-c: 出现行数;
-v: 取反;
-A: 输出出现关键字的下面两行
-B:出现关键字的上面两行;
-C:出现关键字的上下各两行;
-r : 遍历一个目录;

2.2grep过滤-2
包含数字字符的文件'[0-9]' 字母字符’[a-z]'
2, ^ :以某个字符开头 gc '[^a-z]' passwd;
3, 'r.o' 能找出r开头o结尾三个字符,
'r*o ' 能找出o字符前面有任意个r的字符;
'r.*o’找出任意个r开头o结尾的字符;

2.3grep过滤-3
1, grep --color 'r\?o' 1.txt== egrep --color 'r?o' 1.txt;有了egrep ,?不需要脱义;
2. ‘r+o’ 表示一个或多个r字符;
3,“.” 任意字符;“*” 任意个“*”前面字符;“.*”任意个任意字符;? 0个或1个?前面字符;+ 1个或多个+前面字符;
4,'root|login' 表示匹配root或login的字符;使用管道符来形成字符串的与条件;
'(rr)+' 匹配一个或多个rr这个整体;
'(rr){7}'匹配7个rr整体;
0

435664265

赞同来自:


笔记应该都差不多吧
0

435664265

赞同来自:

本帖最后由 435664265 于 2016-1-18 22:08 编辑

2016/1/12  shell编程入门
2.5sed命令-2
主题:sed的替换功能
1,sed '1,10s/nologin/login/g' 1.txt
将文件1.txt内1~10行里面的nologin替换成login;
2,sed ‘1,10s#/sbin/nologin/#login#g 1.txt,g表示行全局
将文件1.txt内1~10行里面的/sbin/nologin/替换成login;
3,sed 's#^.*$#login#g' 1.txt
将文件1.txt中每行都替换成login;
4,sed 's#^.*$#&login#g' 1.txt
在文件每行末端都加上login;
5,sed 's#^.*$#& login#g' 1.txt
在文件每行末端加上空格再加上login
6,将每行内的某些字符删除,将其替换成空;
sed 's#[0-9]##g' 1.txt
将文件1.txt内的数字全部替换成空;
sed 's#[a-zA-Z]##g' 1.txt
将文件1.txt内的字母全部替换成空;
7,sed 's#[^0-9a-zA-Z]##g' 1.txt
加^仅保留后面跟着的字符;
8,sed -r 's#(^[a-z0-9+)*(:,.*:)(.*$)#\3\2\1#g' 1.txt
将文件分成三段,并将第一和第三段对调位置;
9,sed -n '/user/p; /michael/p' 1.txt
将文件中含有user或michael的行匹配后打印出来;
10,sed -n '/user/p';'/michael/p' 1.txt=sed -n -e '/user/p' -e/michael/p' 1.txt
sed -n 'user|michael/p' 1.txt

2.6awk命令-1
awk -F ':' 'OFS=":" {print $3,$4}' 1.txt
-F: 分隔符;
OFS=“#” :表示第三第四段间用指定分隔符#分开;

匹配功能:
awk /r*o/ 1.txt,斜杠作为分隔符;
awk -F ':' '$1~/r*o/ {print $3}' 1.txt 分段匹配,精准打印;
awk 功能可以实现对字符串的流处理,将满足功能的数据打印出来;具备cut的功能:以某个符号为分隔符,并打印出指定段;
具备grep、sed的匹配指定字符的行输出
具备某段特定字符的匹配,并输出匹配行,也可以只输出匹配行的某段;
对于awk这样的流处理器,每行作为一段字符流,如果字符流匹配正则表达式,将匹配行打印出来,如果一段字符流匹配两个正则表达式,就打印两次
[root@master ~]# awk -F ':' '$1~/user/ {print $7}; $1~/mike/ {print $1}' 1.txt
/sbin/nologin
mike

2.7awk命令-2
awk -F ':' '$3>=500' 1.txt 去除第三段作条件,第三段满足大于等于500 的被列出;
awk -F ‘:' 'OFS=":"; $3=$4' 1.txt 两个语句之间一定要用‘;’分开;

2.8awk命令-3
awk 'NR=10' 1.txt ==head 1.txt;
awk -F ':' 'OFS=":" {if(NR==10) print $1,$7}' 1.txt
NR: 行数
NF : 段数

awk -F ':' 'OFS=":" {$7=$3+$4; print $1}' 1.txt
0

435664265

赞同来自:

本帖最后由 435664265 于 2016-2-17 20:51 编辑

2016/1/14    linux 平台日常运维管理
1.1查看系统负载命令
主题:查看系统负载;
1,使用一系列的命令,得到不同的指标来判断系统的问题所在;
2,使用w指令,第一行显示load average 即平均负载:第一数值表示一分钟内系统的平均负载,第二个数值表示五分钟内系统的平均负载,第三个数值表示十五分钟内系统的平均负载;
平均负载:表示CPU当前处理进程数;
3,cat /proc/cpuinfo 查看cpu参数
processor表示cpu核数,当processor>一分钟内系统的平均负载时,cpu有部分空闲,可以放心,当processor<一分钟内系统的平均负载说明有进程在排队;
03:22:49(系统当前时间 up(已经登录了多长时间) 5:58, 2 users, load average: 0.00, 0.00, 0.00
USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT
root tty1 - 21:25 5:57m 0.02s 0.02s -bash
root pts/1 172.16.44.1 02:47 0.00s 0.35s 0.08s w
PCPU表示某个指令使用的占用CPU的时间
JCPU表示所有进程占用CPU的时间;


1.2vmstat详解
1,vmstat 1 5
第一列表示有多少个任务(进程)处于running状态;r 表示正在运行和等待中的任务,b表示有多少个任务被I/O堵塞;
swqd 被交换的数量,单位是kb(虚拟内存的作用:在内存被占满的情况下,将磁盘的部分空间模拟成内存使用)
free 空闲的内存空间
buff
cache
si 进入到内存的数据量
so 从内存出来的数据量
bi 读磁盘
bo 写磁盘
us 用户态的进程占用cpu的百分比%
sy 系统态的进程占用cpu的百分比%
id 空闲状态占比
wa 处于等待状态的进程cpu占比
http://www.ha97.com/4512.html

1.3top动态查看负载
top工具;类似windows下的任务管理器 默认3s 更新一次数据 -d 1 选项将更新时间改为1s,-c 选项将使用的进程名称显示更完整, 可以查看当前进程的cpu占有率,内存占有率,
PID 进程id号 /proc 下有每个根据pid来命名的目录;杀死进程kill 或加载进程
user 使用进程的用户;
PR 进程使用的优先级;范围:(0-39),数值越小,优先级越高
NI 范围(-19-20) 数值越小,优先级越高
VIRT 占有虚拟内存量;
RES 占有物理内存量;
SHR 共享内存量;
S 进程状态;
TIME 已占有内存时间;

top -bn1 静态显示系统参数,可用于脚本编写;

1.4sar 命令
使用sar工具能够查看服务器cpu、内存、磁盘、网卡的使用信息。堪称系统瑞士军刀;
带宽单位是bit 常见下载速度单位是byte
带宽一般是以峰值来计算。
sar -n DEV 1 10 查看网卡rxbyt 得到接收数据的速度,结合自身带宽看是否到瓶颈;
sar 的数据历史存放目录: /var/log/sa 下的sa文件。
-q 查看历史负载;
-b 查看磁盘读写速度;
http://www.jb51.net/LINUXjishu/413975.html

1.5free查看内存

主题 :查看内存的使用状况工具;free 默认单位kb -m选项以兆为单位 -g以G为单位;
buffers cpu 写到磁盘数据的内存中间站,属于内存的一部分;
cache cpu 读取磁盘数据的内存中间站,属于内存的一部分;
真正free的内存空间要考虑buffers 和cache

1.6ps 查看进程

主题:ps 查看进程(比top专业)
ps aux 最常用,
ps -elf
user 运行进程用户;
pid 进程id
%CPU 该进程占用cpu百分比
%MEM 该进程占用内存百分比
VSZ 占用虚拟内存大小
RSS 占用物理内存大小
TTY 启动终端 ?表示后台 pts/0表示当前终端
STAT 进程状态
Ss S sleep休眠 s 主进程;
S< < 优先级较高
SN N 优先级较低
Ss+ + 处于前台运行
R 正在运行中
L 内存被锁
l 多线程进程
Z 僵尸进程
X 已死掉的进程
T 暂停中的进程
D 不能中断的进程
START 启动时间
TIME 占用cpu时间
COMMAND 进程名字


查看某些进程是否启动,可以通过管道的方式和grep合用

1.7netstat 查看端口

1,查看网络连接状况,终端机和服务器之间进行通信,服务器需要监听一个端口,目的是为了C/S 之间传输数据;比如说使用putty 就是通过sshd服务的22端口接到服务器上来,服务器会对该端口进行监听;
2,netstat -lnp
Local Address 列 冒号后面就是端口号
80 外部服务端口

netstat -an 不仅可以查看tcp/ip 还能查看socket(类似于tcp/ip ,是linux unix下特有的通信文件) 可以知道服务端的那个端口在和客户端的那个端口进行通信 ,两者之间的状态
state 查看资料 tcp/ip三次握手;

netstat 还可以知道服务器的并发数;并发指某一时刻内服务器与外部网络连接数


0

435664265

赞同来自:


2016/1/15   linux 平台日常运维管理
1.8抓包工具tcpdump和tshark
1,抓包工具tcpdump,查看网卡的数据流向,应对带宽的突发性增加;
tcpdump -nn 在当前状态下的数据流 将域名均显示为ip地址的方式,
-c 指定抓包数量
-i 抓指定网卡
port 指定端口号
tcp/udp 指定协议类型
host 指定ip地址
-w 抓包的内容
-s0 完整抓包


第一列 抓包时间
第二列 源IP:端口
第三列 目标IP:端口

网卡堵塞,出现有大量的相同的源IP和目标IP的地址时,可能被攻击。

1.9selinux介绍

主题:selinux 安全模块 为了增加linux系统的安全度。
1,cat /etc/selinux/config 查看配置文件
setenforce 0 关闭
setenforce 1 开启
2 rpm -qf `which setenforce` 查询命令安装包

2.0iptables详解-1
主题:另一个防火墙 netfilter 对应工具名称iptables 的用法;
1,table 表 chain 链
2,iptables -t filter -nvL filter表 制定规则过滤数据包
3,iptables -t nat -nvL nat表
4,iptables -t mangle -nvL mangle表
5,给filter表制定规则
iptables -t filter -I INPUT -p tcp --dport 80 -s 1.1.1.1 -j REJECT
-t filter 表下
-I 插入一条规则
-p tcp协议的数据包
--dport 使用80端口
-s 禁止ip
-j 对该数据包的处理 reject 拒绝
-A 增加一条规则
-D 删去规则
规则在前先生效,在后后生效;
2.1iptables详解-2
1,对匹配规则包(target)有三种行为:reject、drop、accept;
2,-z 将匹配的数据包清零
-F 将全部规则清空
--dport 需要先指定协议tcp 或udp
3,service iptables restart 重启规则
4, service iptables save 保存规则 想要保存规则,要先保存再重启;
文件路径 /etc/sysconfig/iptables
5, iptables-save >1.ipt 保存规则到ipt文件中
iptables -F 清空规则,此时规则为空
iptables-restore <1.ipt 将规则回复;

2.2iptables详解-3
1, nat 表下的chain
PREROUTING 更改接收数据包的公网ip,变成私网ip
POSTROUTING 更改发送数据包的主机私网ip,变成公网ip
OUTPUT 主机发送数据包的私网ip

2,mangle 表 主要用来给数据包打标记。
0

435664265

赞同来自:


2016/1/16  linux 平台日常运维管理
2.4cron计划任务
crontab -l 查看当前用户的任务计划;
-u 查看某一用户;
-e 编辑任务计划;
任务计划的组成:时间+命令
时间有五列:依次为min hour day mon week
*/8 间隔为8
root用户crontab 保存路径:/var/spool/cron/root;

2.5系统服务
ntsysv 选择系统服务开机启动项;
1,进入界面,通过空格键更改系统服务的启动状态 带*号,启动;为空,不启动;
按tab键回到确定或取消按钮;
2,chkconfig 启动或关闭不同级别下的系统服务
chkconfig atd off 关闭系统运行级别2/3/4/5 下的atd服务;
--list 查看某个服务的状态;
--level 指定级别;
chkconfig --level 345 atd on
--add 添加某项服务 chkconfig --add atd
--del 删除某项服务

2.6linux日志
养成看日志的习惯 /var/log/messages
查看用户登录历史 查看 last
邮件日志 /var/log/maillog
查看用户使用ftp服务登录日志 /var/log/secure
系统启动过程中与硬件相关的日志 /var/log/dmesg
dmesg 查看到实时更新的日志,有助于获得与硬件相关的信息
日志切割配置文件 /etc/logrotate.conf
kill pid 杀死进程
kill -HUP 进程 重新加载;
kill -9 pid 强制杀死进程;
0

435664265

赞同来自:

2016/1/17  平台日常运维管理

2.7xargs和exec详解
应用背景: 把某个目录下十天前的文件进行重命名、删除、备份、移动等操作时,可以调用这个命令 xargs 或exec
1,find /var/log/ -type f -mtime +10 -exex cp {} {}.bak \;
将/var/log目录下大于十天的文件备份成.bak的格式 \; 不能少;
find /var/log/ -type f -mtime +10| xargs -i cp {} {}.bak 能实现相同的功能
但是不同的是:上面的-exec是find的一个选项,下面的是通过管道符号的两条指令;

2.8screen命令
应用背景:如果某条命令的执行需要几天或者更长的时间,但是每天都要开关终端,而且在后台运行没有日志显示,如何解决?
1, 在放到后台运行时,加上nohup指令,保证该任务不会出现中断的情况,会在当前目录下生成文件nohub.out,文件会收集任务在后台运行过程中产生的日志,以便后续分析.
2, nohub sleep 10
3, screen -ls 查看已有screen的id 该指令建立一个虚拟终端,在虚拟终端下可以运行指令。
screen -r id 进入虚拟终端;
screen -S ??? 对虚拟终端命名 使用名字也能进入到虚拟终端中;

2.9curl命令
1,crul 在命令行界面下访问网站,或下载文件;与wget有点相同
2,curl -I ip或网站名

curl -I www.baidu.com 可查看HTML状态码,常见状态码 200 301 302 404 403 502 503
200 可以正常浏览网页;
301 302 服务端设置跳转;
curl -x 代理;
curl -Tv www.baidu.com 将访问百度的过程详细列出;
user agent 是被使用的浏览工具的身份标识;
curl -u username:password http://www.qq.com 进入需要账号密码的网站;
curl -o 命名??? http://www.qq.com 下载文件并命名;-O默认命名;
0

435664265

赞同来自:

{:4_97:}
0

435664265

赞同来自:


2016/1/18  平台日常运维管理

3.0rsync格式
rsync 同步数据、拷贝数据工具;可将本机数据拷贝到远程PUSH、也可以反操作PULL;支持网络通信,支持增量拷贝;
1,rsync -av 192.168.11.190:/tmp/1.txt /tmp (PULL)
rsync -av /tmp/1.txt 192.168.11.190:/tmp (PUSH)

开启了监听模式
rsync -av 192.168.11.190::michael/123/12.txt /tmp PULL
michael 模块名字;

3.1rsync常用选项
rsync 常用选项 ;
-a 相当于用了archive mode; equals -rlptgoD 这些选项;
--delete 如果源a上有数据被删,目标b在同步时也会被删;不加不删;
--exclude 不同步某些文件;
-P 查看同步进度;
-u 避免把目标机器上的改动覆盖;

3.2rsync选项详解
rsync -av 111/ /tmp/223/
将111目录下的所有文件或目录同步到/tmp/223/文件下 ,如果有软连接,但是没有源文件,就需要加上选项-L ,这样可以将源文件也同步过去;
2,diff 文件1 文件2 查看两个文件差异;
3, --exclude=“23” 同步时不包含23的文件或目录;
4,-P 同步过程中显示同步速度,数据等等;

3.3rsync同步之ssh隧道方式
终端之间的数据同步,须知道两个或多个终端的IP地址
rsync -avync 111/ 192.168.11,190:/tmp/111/
需要输入密码;
telnet工具可以探测服务器端的某个端口是否打开;退出telnet 先按ctrl +] 然后quit;
telnet 172.16.44.128 22
Trying 172.16.44.128...
Connected to 172.16.44.128.
Escape character is '^]'.
SSH-2.0-OpenSSH_5.3
出现这些信息,表示该端口是打开的;

通过指定端口来同步
rsync -avPz -e "ssh -p 10022" 192.168.11.190:/tmp/111/ ./111/

3.4rsync后台服务方式-1
rsync的另外一种方式:deamon
修改配置文件: vim /etc/rsyncd.conf 将配置文件的命名成这样系统会自动加载;

port=8730 指定端口;
log file=/var/log/rsync.log 建立日志文件
pid file=/var/run/rsync.pid 建立进程id

{michael} 定义模块名
path=/tmp/rsync 定义目录路径
use chroot=yes yes 是否限定在家目录下
max connect=4 定义最大连接数
rend only=yes 推送时写no
list=yes 是否把模块名字列出
uid=root 定义文件属主
gid=root 定义文件属组
auth users=michael 定义用户认证
secrets file=/etc/rs.passwd 创建存密码的文件
hosts allow=192.168.11.190 指定客户ip访问
保存后退出
rsync --daemon 同步
ps aux |grep rsync
netstat -lnp
cat /var/log/rsync.log 查看日志
mkdir /tmp/rsync
mkdir /tmp/rsync123
vim /etc/rs.passwd 修改密码文件
写入:michael:123
修改文件属性
0

435664265

赞同来自:


2016/1/19     LAMP架构搭建与优化

1.1Mysql安装
下载mysql到/usr/local/src/
cd /usr/local/src/
wget http://syslab.comsenz.com/downloads/linux/mysql-5.1.40-linux-i686-icc-glibc23.tar.gz
解压
[root@localhost src]# tar zxvf /usr/local/src/mysql-5.1.40-linux-i686-icc-glibc23.tar.gz
把解压完的数据移动到/usr/local/mysql
[root@localhost src]# mv mysql-5.1.40-linux-i686-icc-glibc23 /usr/local/mysql
建立mysql用户
[root@localhost src]# useradd -s /sbin/nologin mysql
初始化数据库
[root@localhost src]# cd /usr/local/mysql
[root@localhost mysql]# mkdir -p /data/mysql ; chown -R mysql:mysql /data/mysql
[root@localhost mysql]# ./scripts/mysql_install_db --user=mysql --datadir=/data/mysql
--user 定义数据库的所属主, --datadir 定义数据库安装到哪里,建议放到大空间的分区上,这个目录需要自行创建。这一步骤很关键,如果你看到两个 “OK” 说明执行正确,否则请仔细查看错误信息,如果你实在解决不了,请把问题发到论坛教程答疑版块(http://www.aminglinux.com/bbs/forum-40-1.html)阿铭会来帮你解决问题。

拷贝配置文件
[root@localhost mysql]# cp support-files/my-large.cnf /etc/my.cnf
拷贝启动脚本文件并修改其属性
[root@localhost mysql]# cp support-files/mysql.server /etc/init.d/mysqld
[root@localhost mysql]# chmod 755 /etc/init.d/mysqld
修改启动脚本
[root@localhost mysql]# vim /etc/init.d/mysqld
需要修改的地方有 “datadir=/data/mysql” (前面初始化数据库时定义的目录)

把启动脚本加入系统服务项,并设定开机启动,启动mysql
[root@localhost mysql]# chkconfig --add mysqld
[root@localhost mysql]# chkconfig mysqld on
[root@localhost mysql]# service mysqld start
如果启动不了,请到 /data/mysql/ 下查看错误日志,这个日志通常是主机名.err. 检查mysql是否启动的命令为:

[root@localhost mysql]# ps aux |grep mysqld

1.2Apache编译安装
/usr/local/apache2/bin/apachectl -M 列出模块
shared 动态加载 存放路径: /usr/local/apache2/modules 调用时加载
static 静态加载 存放路径: /usr/local/apache2/bin/httpd ,该文件将静态加载的模块整合到一个文件内,启动服务时自动加载
/usr/local/apache2/bin/apachectl -l 列出静态模块
配置文件 /usr/local/apache2/conf/httpd/conf
/usr/local/apache2/bin/apachectl -t 查看配置文件是否存在语法错误
/usr/local/apache2/bin/apachectl stop 停止服务
/usr/local/apache2/bin/apachectl restart 杀掉进程,重新开始
/usr/local/apache2/bin/apachectl graceful 保留进程,重新加载配置文件
apache工作模式;
配置文件:httpd目录下,./configure --help|less 查看--with-mpm=MPM
MPM={beos|event|worker|prefork|mpmt_os2|winnt}

1.3Apache的mpm工作模式
工作模式
prefork 子进程模式,每个子进程都会占用内存,内存消耗严重,但是某一子进程出现问题,不会影响其他进程;
进程分主进程和子进程;
worker 多线程模式 ,多个线程占用同一内存,内存消耗小,但是某一线程出现问题,同一内存内的其他线程不能工作;
event worker 升级版;

1.4php编译安装-安装顺序在最后
1,安装拓展yum源:rpm -ivh ‘源地址’ 论坛里关键字‘epel yum源安装’
2,通过yum list|grep -i mcrypt 搜索安装包;
3,--with -apxs2=/usr/local/apache2/bin/apxs;
--with-mysql=/usr/local/mysql/
说明了php安装的依赖关系,依赖这apache和mysql中的相关文件;
4,/usr/local/php/bin/php -m 可以观察到PHP有哪些模块;
-i 选项可以查看php详细信息;
0

435664265

赞同来自:

2016/1/20     LAMP架构搭建与优化

2.0Apache日志切割
主题:配置Apache的访问日志
需求:网站访问量大的时候,总有一天会撑爆,所以说要每天都需要做好日志的切割归档工作
1, vim /usr/local/apache2/conf/extra/httpd-vhosts.conf,去掉#,将网站的日志打开;

# ErrorLog "logs/dummy-host.example.com-error_log"
# CustomLog "logs/dummy-host.example.com-access_log" common

common表示日志的类型;下面显示了combined 和common两种类型的日志格式,可以自定义;
LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" combined
LogFormat "%h %l %u %t \"%r\" %>s %b" common
h 来源ip,即是访问的客户端ip
l
u 用户 不存在用-代替
t 时间
r 动作
referer 参照页,引用页"http://www.test.com/forum.php?mod=forumdisplay&fid=2"
user agent 可以看出用户使用什么浏览器访问 可以用于用户的限制;

2,切割日志
CustomLog "|/usr/local/apache2/bin/rotatelogs -l /usr/local/apache2/logs/test.com-access_%Y%m%d_log 86400 " combined
86400 单位是秒,表示一天为基本单元生成日志文件

2.1Apache不记录指定文件类型日志
主题:Apache不记录指定文件类型日志
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

对于http://www.test.com/forum.php来说, /forum.php是它的URI

2.2Apache配置静态缓存
主题:apache配置静态缓存来降低带宽;

ExpiresActive on
ExpiresByType image/gif "access plus 1 days"
ExpiresByType image/jpeg "access plus 24 hours"
ExpiresByType image/png "access plus 24 hours"
ExpiresByType text/css "access plus 2 hours"
ExpiresByType application/x-javascript "now plus 2 hours"
ExpiresByType application/x-shockwave-flash "now plus 2 hours"
ExpiresDefault "now plus 0 min"

文件格式为image/gif的静态缓存为1天

2,在网页上随便找一个图片元素,查看该元素在网页上的静态缓存是多长时间curl -x127.0.0.1:80 'http://www.test.com/static/image/common/logo.png' -I

Cache-Control: max-age=86400 这里就显示了它的静态缓存时间;

2.3Apache配置防盗链
主题:Apache配置防盗链
需求:A网站内的图片资源很多,只要经过简单的复制图片链接,就能获得该图片,使用在B网站内。
每次访问B网站的时候,因为有A网站的图片,就会消耗A网站的带宽资源。为了预防这样的情况,需要对A网站内的图片设置防盗。
1,SetEnvIfNoCase Referer "^http://.*\.yourdomin\.com" local_ref
SetEnvIfNoCase Referer ".*\.yourdomin\.com" local_ref
SetEnvIfNoCase Referer "^$" local_ref

Order Allow,Deny
Allow from env=local_ref

也就是说,这也图片只有在你的网站下使用的时候才能用,不在你的白名单里面,不能调用。
SetEnvIfNoCase Referer "^http://.*\.yourdomin\.com" local_ref 这个是设置域名白名单的地方
SetEnvIfNoCase Referer ".*\.yourdomin\.com" local_ref
0

435664265

赞同来自:


2016/1/21     LAMP架构搭建与优化
2.4Apache访问控制
主题:访问控制
需求:如果发现某来源IP对网站进行攻击,可以将该IP禁掉;
1,先从主配置文件/usr/local/apache2/conf/httpd.conf拷贝相应的模板

AllowOverride None
Options None
Order allow,deny
Allow from all


目录应该改为相应的目录下,这里是/data/www
Order allow,deny
allow from all
从order的顺序来看,先allow 就先看allow下面的命令;
还可以用同样的原理将admin.php限制访客

Order deny,allow
Deny from all
Allow from 127.0.0.1

2.5Apache禁止解析php
主题:Apache禁止解析php
通过限制解析php

2.6Apache 禁止指定user_agent
通过rewrite module来实现对user agent的访问限制;
# RewriteCond %{HTTP_USER_AGENT} ^.*curl.* [NC,OR]
# RewriteCond %{HTTP_USER_AGENT} ^.*chrome.* [NC]
# RewriteRule .* - [F]

2.7Apache通过rewrite限制某个目录
通过rewrite module 禁止掉用户访问有些目录;

# RewriteCond %{REQUEST_URI} ^.*/tmp/.* [NC]
# RewriteRule .* - [F]

2.8php.ini配置文件详解
主题:查看并配置PHP
1, /usr/local/php/bin/php -i |head 查看配置文件路径;
2,Loaded Configuration File => /usr/local/php/etc/php.ini
3,在/usr/local/php/etc/php.ini中,如果要注释命令行,需用“;”,不能用“#”
常用配置如下:
1.disable_functions =eval,assert,popen,passthru,escapeshellarg,escapeshellcmd,exec
,system,chroot,scandir,chgrp,chown,shell_exec,proc_get_status,ini_restore,dl,pfs
ockopen,openlog,syslog,readlink,symlink,leak,popepassthru,stream_socket_server,p
open,proc_open,proc_close
2,错误日志相关;在浏览器上显示错误信息
display_errors = On
状态码500 一般来说就是php的脚本有问题;将display_error=Off 错误信息会不被人利用;
一般保留在off状态。
3,确保在/usr/local/php/etc/php.ini中,错误日志要开启log_errors = On
error_log =/usr/local/php/logs/ php_errors.log
mkdir /usr/local/php/logs/ 将该目录设置成777
chmod 777 /usr/local/php/logs

4,配置日志级别
error_reporting = E_ALL & ~E_NOTICE
5. 将网站的访问的服务器目录限定在一个或多个指定的目录下;
open_basedir =/data/www:/tmp
同样的功能还能通过apache去配置,好处在于如果服务器跑多个网站,不用一一配置,可同一在apache内配置;
php_admin_value open_basedir "/data/www/:/tmp/"

回复帖子,请先登录注册

退出全屏模式 全屏模式 回复
评分
可选评分理由: