Linux 常用命令汇总--加了注释


目录


 

第一天 linux简介, 安装, 目录管理命令


第一章 linux简介


X-SHELL 软件的常用快捷键:

ctrl+c 强制终止

ctrl+l 清屏

ctrl+u 从光标所在删除到行首

ctrl+a 光标移动到行首

ctrl+e 光标移动到行尾


LAMP: linux+apache+mysql+php php和asp都各有特点, mysql不如SQLServer

但linux的稳定性和安全性比WIDOWS高

Windwos: Windows+IIS+SQLServer+ASP    


常见Unix

AIX IBM

HP-UX HP

solaris SUN


常见的Linux


1、fedora、RedHat、CentOS、SUSE、gentoo、红旗、Mandriva、turbolinux

RHEL enterprise


Redhat:

个人版:fedora

企业版;RHEL


Windows:

个人版: win7 8 10 xp 阉割

企业版: winNT 2000 2003 2008

CentOS  5.5 2.6.18 www.kernel.org 3.1。14


2、Debian、Ubuntu


Linux特点


特点:开源 免费

稳定

安全

缺点: 易用性差

厂商支持性差


第二章 Linux安装


一  虚拟机使用

VMware主要特点:

1、不需要分区或重新开机就能在同一台PC上使用两种以上的操作系统

2、本机系统可以与虚拟机系统网络通信

3、可以设定并且随时修改虚拟机操作系统的硬件环境


安装方式

图形安装 :直接回车

字符安装:linux text  回车

耗费资源少,安装速度快。显卡不能识别


分区表: MBR 主引导记录 64B 16B


IDE: 133MB/s

SCSI: 200MB/s

SATA: 500MB/s




分区


linux分区表示


分区类型:

主分区:最多只能分四个

扩展分区: 扩展分区最多1个,扩展不能格式化,也不能写入数据。只能包含逻辑分区。扩展分区加主分区最多有4个。

逻辑分区:


文件系统:

Windows: fat16 fat32 ntfs

Linux: ext2 ext3 ext4

Inode i节点


1) 注意事项

注意: linux下所有内容都是文件,包括硬件

linux严格区分大小写

linux下不以扩展名区分文件类型,而是靠权限.

但是有特列,如压缩文件,rpm软件包文件

所有的可存储设备,都必须挂载使用。包括硬盘


2) Linux分区表示

/dev/hda1 hd:IDE硬盘 sd:SCSI,SATA硬盘

a:第一块硬盘 1:第一个分区

/dev/sda1

/dev/sdc5 第三块scsi硬盘的,第1个逻辑分区


3)挂载过程

windows中: 盘符

C:\

D:\

E:\

Linux中:


硬盘文件名----------指定挂载目录(盘符) 挂载

/dev/sda1-----------/boot


2 linux分区

1)必须分区

/ 根分区必须单独分。 越大越好 C:分区

swap分区 交换分区 2倍 不要大于2GB

2)常用分区

/boot 启动分区 100MB /dev/sda1 D:分区

/home E:分区

/www F:分区


3 密码原则:

复杂性,容易记忆性,时效性


linux管理员: root

wmzxdlxx

wm2xd_LXX


flzx_3QC


root


撞库:就是去小的网站,去安全性低的网站把账号密码弄到,然后再用这个账号密码去别的网站试试.


4 安装完成基本

关闭防火墙

关闭SELinux 增强安全组件

修改IP地址:

安装时修改

setup----- service  network restart


5 远程管理工具


6 远程文件传输工具


第三章 Linux常用命令


linux命令的格式


1、命令  [选项]  [参数]


ls list 显示目录下内容


命令名称:ls

命令英文原意:list

命令所在路径:/bin/ls

执行权限:所有用户

功能描述:显示目录文件


ls 名直接回车,显示目录下内容


ls  -l 长格式显示

(缩略选项用一个减号,完整选项用两个减号)

如: ls -a  和 ls --all 是同样的效果. 



-rw-------    1   root    root    1190    08-10 23:37     anaconda-ks.cfg

第一项: 权限位

第二项:  1 引用计数

第三项:  root 所有者

第四项:  root   初始组

第五项:  大小

第六项 最后一次修改时间

第七项 文件名


ls  -a  显示所有文件(包含隐藏文件) all

ls  -al

ls  -h 文件大小显示为常见大小单位 B KB MB human-readable:人性化显示

ls  -d 显示目录本身,而不是里面的子文件 directory

ls  -l 使用详细格式列表 list



示符:

[root@localhost src]#


[当前登录用户@主机名 当前所在目录]#


# 超级用户

$ 普通用户


当前所在目录: ~ 用户家目录

管理员 /root

普通用户 /home/用户名


目录操作命令


1) cd 切换所在目录


命令名称:cd

命令英文原意:change directory

命令所在路径:shell内置命令

执行权限:所有用户



②cd  /usr/local/src

  

相对路径:参照当前所在目录,进行查找。一定要先确定当前所在目录。    root]#cd  ../usr/local/src

绝对路径:cd  /usr/local/src 从根目录开始指定,一级一级递归查找。 在任何目录下,都能进入指定位置


cd  ~ 进入当前用户的家目录 /root /home/aa/

cd 进入当前用户的家目录 /root /home/aa/

cd  - 进入上次目录

cd  .. 进入上一级目录

cd  . 进入当前目录


2) pwd 显示当前所在目录

命令名称:pwd

命令英文原意:print working directory

命令所在路径:/bin/pwd

执行权限:所有用户


3) linux常见目录

/ 根目录

/bin 命令保存目录(普通用户就可以读取的命令) binary

/boot 启动目录,启动相关文件

/dev 设备文件保存目录 device

/etc 配置文件保存目录  edit text config

/home 普通用户的家目录 

/lib 系统库保存目录

/mnt 系统挂载目录 mount

/media 挂载目录

/root 超级用户的家目录

/tmp 临时目录

/sbin 命令保存目录(超级用户才能使用的目录)

/proc 直接写入内存的

/sys system

/usr 系统软件资源目录   unix system resource

/usr/bin/ 系统命令(普通用户)

/usr/sbin/ 系统命令(超级用户)

/var 系统相关文档内容

/var/log/ 系统日志位置

/var/spool/mail/ 系统默认邮箱位置

/var/lib/mysql/ 默认安装的mysql的库文件目录

4) 建立目录

mkdir  目录名

命令名称:mkdir

命令英文原意:make directories

命令所在路径:/bin/mkdir

执行权限:所有用户


mkdir  -p  11/22/33/44

p :parents:若所要建立目录的上层目录目前尚未建立

则会一并建立上层目录

5) 删除目录

rmdir  目录 只能删除空目录

命令名称:rmdir

命令英文原意:remove empty directories

命令所在路径:/bin/rmdir

执行权限:所有用户


rm  文件名 删除文件


rm  -rf   目录 删除文件和目录 force:强制删除目录或文件

-r  递归,删除目录 recursive:递归处理,将指定目录下的所 有子文件及子目录一并处理.

-f  强制 force


6)  tree  目录名 显示指定目录下所有内容的目录树

命令名称:tree

命令所在路径:/usr/bin/tree

执行权限:所有用户





作业:

1、安装Linux(Vmware、Linux系统、远程工具)

2、课堂练习

2、预习-Linux常用命令















第二天 linux常用命令


文件操作命令


1)创建空文件或修改文件时间


touch  文件名

命令名称:touch

命令所在路径:/bin/touch

执行权限:所有用户

touch a 如果文件a不存在,则建立空文件,文件名是a, 如果a文 件存在, 则更改a文件的最后修改时间.

touch a b c d 一次创建多个空文件



2)删除


rm  -rf  文件名

-r  删除目录

-f 强制

命令名称:rm

命令英文原意:remove

命令所在路径:/bin/rm

执行权限:所有用户

rm a 删除文件a

rm a b c  删除多个文件a b c ,但是会询问是否要删除,按y或者n

rm -f a b c d 强制删除多个文件a b c d ,不会询问,直接删除

rm -r 删除目录



         3)cat  文件名 查看文件内容。从头到尾

命令名称:cat

命令所在路径:/bin/cat

执行权限:所有用户

             tac 文件名 查看文件内容,从尾到头


-n 列出行号 n : number


4)more  文件名 分屏显示文件内容

命令名称:more

命令所在路径:/bin/more

执行权限:所有用户

less 文件名 与 more 类似, 按 pgup 和 pgdn 翻页


空格向下翻页 b   向上翻页 q  退出


6) head  文件名 显示文件头

命令名称:head

命令所在路径:/usr/bin/head

执行权限:所有用户

head  -n  行数   文件名 指定显示文件头几行

head  -n  20  文件名

head  -20  文件名


7) tail 文件名  显示文件末尾

与head命令类似, 但显示的是尾页


8) 链接文件

命令名称:ln

命令英文原意:link

命令所在路径:/bin/ln

执行权限:所有用户


快捷方式

新建的链接,占用不同的硬盘位置

修改一个文件,两都改变

删除源文件,软连接打不开


ln  -s  源文件  目标文件 s: symbolic 对文件建立符号链接,而非硬链

文件名都必须写绝对路径


文件和目录都能操作的命令


1)rm 删除文件或目录


2)复制

命令名称:cp

命令英文原意:copy

命令所在路径:/bin/cp

执行权限:所有用户



cp  源文件  目标位置               


-r  复制目录

-p 连带文件属性复制 preserve :保留  保留源文件或目录的属性, 

  修改日期也是源文件的日期

-d 若源文件是链接文件,则复制链接属性

-d或--no-dereference  当复制符号连接时,把目标文件或目录 也建立为符号连接,并指向与源文件或目录连接的原始文件或目录

-a 相当于  -pdr   -archive 此参数的效果和同时指定"-dpR"参数相同。 


cp  aa  /tmp/ 原名复制

cp  aa  /tmp/bb 改名复制



3)剪切或改名

命令名称:mv

命令英文原意:move

命令所在路径:/bin/mv

执行权限:所有用户


mv  源文件  目标位置

mv  /root/aa  /tmp/ 剪切

mv  aa  bb 改名



权限管理


1 权限位

-rw-r--r--   1   root root     0 08-11 01:45 aa


 


权限位是十位

第1位: 代表文件类型

- 普通文件

d 目录文件

l 链接文件


第2-4位: 属主权限u  user  

第5-7位: 属组权限g     group

第8-10位: 其他人权限o other


r 4

w 2

x 执行 1

目录要么不给权限,要么就给5,

2 修改权限

chmod

命令名称:chmod

命令英文原意:change the permissions mode of a file

命令所在路径:/bin/chmod

执行权限:所有用户


chmod  u+x  aa aa文件的属主加上执行权限

chmod  u-x  aa

chmod  g+w,o+w  aa

chmod  u=rwx  aa

chmod  755  aa

chmod  644  aa

3 权限意义:

1)权限对文件的含义

r:读取文件内容 cat  more  head  tail

w:编辑、新增、修改文件内容 vi  echo

  但是不包含删除文件

x:可执行

 

2)权限对目录的含义

r:可以查询目录下文件名 ls

w:具有修改目录结构的权限。如新建文件和目录,删除此目录下文件和目录, 重命名此目录下文件和目录,剪切 touch  rm  mv  cp

x:可以进入目录 cd

目录要么不给权限,要么就给5, 也就是只给 rx- 的权限. 


4 属主和属组命令

chown

命令名称:chown

命令英文原意:change file ownership

命令所在路径:/bin/chown

执行权限:所有用户


chown  用户名  文件名 改变文件属主


chown  user1  aa user1必须存在


chown  user1:user1  aa 改变属主同时改变属组


useradd  用户名 添加用户

passwd 用户名 设定用户密码


帮助命令

1 man  命令名 查看命令的帮助

命令名称:man

命令英文原意:manual

命令所在路径:/usr/bin/man

执行权限:所有用户

2 命令  --help 查看命令的常见选项

是在命令的后面输入--help

查找命令


通配符:

* 匹配任意内容

匹配任意一个内容

[]



1 whereis  命令名 查找命令的命令,同时看到帮助文档位置,只是查找命令的

命令名称:whereis

命令所在路径:/usr/bin/whereis

执行权限:所有用户


2 find 搜索命令

命令名称:find

命令所在路径:/usr/bin/find

执行权限:所有用户

find  查找位置   -name  文件名

按照文件名查找


find  /  -name  aabbcc 按照文件名查找



按照用户

-user  用户名 按照属主用户名查找文件

-group  组名 按照属组组名查找文件

-nouser 找没有属主的文件


/proc 内核

/sys 内核

/mnt/cdrom/ 光盘 除了这三个目录

find  /  -nouser


按照文件权限

-name 按照文件名

-size 按照文件大小。+50k:大于50k,-50k:小于50k,50k:等于50k k M 注意:k是小写,M是大写

find  /  -size  +50k


-type 类型 按照文件类型查找 f:普通 d:目录 l:链接


find  /root  -perm  644 按照权限查找


-iname 按照文件名查找,不区分大小写


-inum 按照i节点查找

find . -inum 2739078


在查找出的结果中,直接进行命令操作

find  /var/log/  -mtime  +10  -exec  rm -rf  {} \;

-mtime<24小时数>  查找在指定时间曾被更改过的文件或目录,单位以24小时计算

注意:{}空格\;   没有这个空格报错.


find /root -inum  1140247  -exec  ls -l {} \;


3 grep “字符串”  文件名 查找符合条件的字串行。

命令名称:grep

命令所在路径:/bin/grep

执行权限:所有用户


grep  -i  “root”  /etc/passwd   -i或--ignore-case   忽略字符大小写的差别。

-v 反向选择 -v或--revert-match   反转查找。

-i 忽略大小写


Find: 在系统当中搜索符合条件的文件名,如果需要匹配,使用通配符匹配。

通配符是完全匹配。

Grep: 在文件当中搜索符合条件的字符串,如果需要匹配,使用正则表达式匹配.

正则表达式是包含匹配


4 管道符

命令1  |  命令2 命令1的执行结果,作为命令2的执行条件

netstat -an | grep ESTABLISHED | wc -l

统计正在连接的网络连接数量

  established adj. 确定的;已制定的,已建立的

wc 计算字数 -l或--lines   只显示列数。

cat  文件名  |  grep  “字串”     提取含有字符串的行

grep  “字符串”  文件名

ls  -l  /etc  |  more 分屏显示ls内容


补充命令:

netstat  查看网络状态的命令, 查看端口. netstat -tlun

-t 查看tcp端口 -t或--tcp   显示TCP传输协议的连线状况。

-u 查看udp端口 --u或--udp   显示UDP传输协议的连线状况。

-l 监听 -l或--listening   显示监控中的服务器的Socket。

-n 以IP和端口号显示,不用域名和服务名显示

-n或--numeric   直接使用IP地址,而不通过域名服务器。

-a 查询所有连接 -a或--all   显示所有连线中的Socket


目录要么不给权限,要么就给5,




压缩和解压缩

.gz .bz2 linux可以识别的常见压缩格式

.tar.gz .tar.bz2 常见的压缩和打包命令


压缩同时打包

tar  -zcvf  压缩文件名  源文件

tar  -zcvf  aa.tar.gz  aa

tar  -zcvf  aa.tar.gz  aa  bb  cc

同时压缩3个文件,分别是aa bb cc ,不同文件用空格分隔.

-z  识别.gz格式 -z或--gzip或--ungzip   

通过gzip指令处理备份文件

-c: 压缩 -c或--create   建立新的备份文件。

-v:显示压缩过程 -v或--verbose   显示指令执行过程

-f:指定压缩包名 -f<备份文件>或--file=<备份文件>   

指定备份文件。

 -x或--extract或--get  从备份文件中还原文件

tar  -zxvf  压缩文件名 解压缩同时解打包   是解压到当前的目录下

tar -jxvf root.tar.bz2 -C /tmp/ 指定解压缩位置 -C 指定解压缩位置

tar  -jcvf  压缩文件名  源文件 压缩同时打包

tar  -jcvf  aa.tar.bz2  aa

tar  -jxvf  aa.tar.bz2 解打包同时解压缩


查看不解包

tar  -ztvf  aa.tar.gz 查看不解包

tar  -jtvf  aa.tar.bz2

-t  只查看,不解压 -t或--list   列出备份文件的内容





关闭和重启命令

1)shutdown  -h  now 没有特殊情况,使用此命令

-h 关机 halt 发音: [浩t]  停止

-r 重启


shutdown  -r  now

远程服务器不允许关机,只能重启.


命令名称:shutdown

命令所在路径:/sbin/shutdown

执行权限:root

2)reboot

命令名称:reboot

命令所在路径:/sbin/reboot

执行权限:root


logout 退出

exit 




挂载命令

linux所有存储设备都必须挂载使用,包括硬盘

命令名称:mount

命令所在路径:/bin/mount

执行权限:所有用户


光盘挂载


/dev/sda1 第一个scsi硬盘的第一分区

/dev/cdrom 光盘

/dev/hdc 光盘 centos  5.5

/dev/sr0 光盘 centos 6.x

mount  -t  文件系统  设备描述文件  挂载点(已经存在的空目录)

mount  -t  iso9660  /dev/cdrom  /mnt/cdrom

mount /dev/cdrom /mnt/cdrom 如果没有/mnt/cdrom  要先创建一个

mount 查看已经挂载的设备

cd /mnt/cdrom 进入cdrom

ls 查看里面的内容


光盘卸载

umount  /dev/cdrom 

umount  /mnt/cdrom 强调:退出挂载目录,才能卸载


fdisk  -l

mount  -t  vfat  /dev/sdb1  /mnt/usb



网络命令

1 ping 测试网络连通性

命令名称:ping

命令所在路径:/bin/ping

执行权限:所有用户


ping  -c  次数  ip 探测网络通畅  

-c<完成次数>   设置完成要求回应的次数。

ping IP 一直ping,按CTRL+C退出


2 ifconfig  查询本机网络信息

命令名称:ifconfig

命令英文原意:interface configure

命令所在路径:/sbin/ifconfig

执行权限:root




[root@localhost ~]# ifconfig

eth0      Link encap:Ethernet  HWaddr 00:0C:29:30:C8:AF  

当前的网络是以太网,网卡的max地址

          inet addr:192.168.106.27  Bcast:192.168.106.255  Mask:255.255.255.0

IP, 广播, 子网掩码

          inet6 addr: fe80::20c:29ff:fe30:c8af/64 Scope:Link IPV6的地址

          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1

网络传输的参数

          RX packets:485759 errors:1 dropped:35 overruns:0 frame:0

到现在为止, 接收了多少包

          TX packets:23836 errors:0 dropped:0 overruns:0 carrier:0

到现在为止, 发送了多少包

          collisions:0 txqueuelen:1000 

          RX bytes:66662290 (63.5 MiB)  TX bytes:12826461 (12.2 MiB)

到现在为止, 接收包的总大小, 发送包的总大小

          Interrupt:19 Base address:0x2000 

当前网卡在内存中的地址


lo        Link encap:Local Loopback  

本地回环网卡,任何的电脑都有

          inet addr:127.0.0.1  Mask:255.0.0.0

每个电脑都有这个IP,不接网线也能ping,代表网络协议安装好了

          inet6 addr: ::1/128 Scope:Host

          UP LOOPBACK RUNNING  MTU:16436  Metric:1

          RX packets:0 errors:0 dropped:0 overruns:0 frame:0

          TX packets:0 errors:0 dropped:0 overruns:0 carrier:0

          collisions:0 txqueuelen:0 

          RX bytes:0 (0.0 b)  TX bytes:0 (0.0 b)


[root@localhost ~]# 




作业

1、整理笔记

2、课堂练习

3、作业题

4、预习:vi和软件安装



复习:

判断题:

查看某文件权限为rwxr-xr-- ,则其所属组权限为只读。


对一个目录有w权限,表示可以修改目录下文件内容。


3、.tar.gz格式的压缩包可以使用tar -xjf解压缩


mv剪切目录时不需加-r选项。


5、/sbin目录下的命令只有root可以使用。


6、find根据文件大小查找使用选项为-size ,默认单位为KB 。


7、grep查找时反向查找可以使用-i 。


8、改变文件的所有者可以使用命令chgrp 。


第三天 vi编辑器


vi编辑器简介

vim 全屏幕纯文本编辑器 是vi的升级版,是linux系统中编程最好的文本编辑器.


vi  /root/.bashrc 环境变量配置文件

alias  vi=’vim’ alias: 别名    仅限于此次生效.重启后不生效

vi ~/.bashrc 进入别名的文件,加进去,以后就一直有效了,只限于本用户 bash : base shell的意思      rc : resource 的意思

vim使用

1 vi模式 

vi  文件名



 

命令模式 其他模式,按ESC进入命令模式

输入模式 在命令模式,按i , a , o 都可以进入输入模式

末行模式 输入:就进入了末行模式

在任何模式,按Esc都可以进入到命令模式(插入模式需要按:q退出后)




命令----》输入  a:追加 add, 在原始的光标后面出现输入的字符  

i:插入 input, 在原始的光标前面出现输入的字符  

o:打开 open, 另起一行,显示输入的字符

命令----》末行   :w  保存  write 只保存不退出  

:q  不保存退出  quit 不保存退出 

:wq 保存退出

!   强制  

:q! 强制不保存退出(任何用户都可以使用,)   

用于:用户修改了文件,但是想不保存,直接退出.就要用强 制!.修改就消失了 默认:q退不出去.

:wq!(只有root用户可用,)

用于:对没有写权限的文件做修改,是只读文件,root用户可 以修改,但是退出的时候,会提示”在修改一个只读文件”,所以 需要强制.

输入----末行


2 命令模式操作


1)光标移动

hjkl 代替方向键, h: 左 j: 下 k:上 l:右


:n 移动到第几行 :3移动到第3行,光标位于行首


gg 移动文件头 光标移动到第一行,位于行首

G 移动到文件尾 光标移动到最后一行,位于行首


3)删除字母

x 删除单个字母 删除光标位置的一个字符

nx 删除n个字母 删除光标后面的n个字符. 

如: 3x 就是删除光标位置开始,后面的3个字符.


4)删除整行 剪切

dd 删除单行 删除光标位置所在的行

注意:是删除整行的内容,而不是显示出来的一行

ndd 删除多行 光标位置所在的行开始,向下删除n行,如: 3dd   

p 粘贴 是粘贴在光标位置的下一行

P(大) 粘贴到光标前 是粘贴在光标位置的上一行


dG 从光标所在行删除到文件尾

要想删除整个文件,可以按gg把光标移动到文件头,然后按dG


5)复制

yy 复制光标所在行的内容

Nyy 赋值光标所在向下N行的内容


6)撤销

u 撤销

ctrl+r 反撤销


7)显示行号

:set  nu nu 是number的缩写

:set  nonu nonu 是no number的缩写


8)颜色开关

:syntax  off syntax 是”语法”的意思

:syntax  on


vim配置文件

~/.vimrc 手工建立的,vi配置文件

想要的功能是,以后每次进入vim都显示行号

cd    返回家目录,目的是只有现在的这个用户更改了配置文件

vi .vimrc 进入配置文件,里面默认是空的.想要什么功能自己直接写

i 进入插入模式

set nu 设置显示行号. 注意: 行首没有冒号:

Esc 返回命令模式

:wq 保存退出



9)查找 掌握

/查找内容 向下查找 被查找的内容以黄色背景显示

n 下一个

N 上一个


10)替换

:1,10s/old/new/g 替换1到10行的所有old为new

g: 把找到的所有内容都替换,不加g, 只替换找到的第一个.

:%s/old/new/g 替换整个文件的old为new

g 范围内所有old换为new


:1,5s/^/#/g 注释1到5行 ^是正则中的起始符

:1,5s/^#//g 取消注释


:1,5s/^/\/\//g 文件头加入// \的共是转义/

:1,10s/^\/\///g


编译: 就是把高级语言转换为机器码(二进制)的过程


软件包安装


软件包分类: 两类, 1:源码包 2:脚本安装包


源码包 优点: 特点 开源 自由定制

能看到源码, 所以是开源的,执行效率要比RPM包的效率高5%

如果是一个大的商城,如淘宝,京东,这个是就很大的问题.

缺点: 编译时间长,一旦报错,很难解决

需要编译,编译很占资源,很费时间,一个mysql安装包,23M,解压后130M

I7电脑需要15分钟,编译是不可逆转的.

脚本安装包:


二进制包:rpm包

特点:安装速度快 简易

缺点:自定义性差 依赖性 依赖性特差,需要安装很多的依赖包


选择安装包的原则:

如果这个软件是给系统自用的,用RPM包

如果软件是给客户端提供服务器,用源码包


a---->b---->c 树形依赖 解决方案:先安装c 再装b  再装a

a---b----c---a 环形依赖 解决方法:a b c 一起装,用一条命令安装

库文件依赖 www.rpmfind.net

(rpm -ivh /mnt/CentOS/mysql-connector-odbc-3.51.26r1127-1.el5.i386.rpm )


libodbcinst.so.1


rpm安装


 手工RPM命令安装


1 包命名

包名-版本号-发布次数-适合linux系统-硬件平台.rpm

openaislib-devel-1.1.1-7.el6.i686.rpm

包名:  openaislib-devel

版本号:  1.1.1

发布次数:7

适合linux系统:el6

硬件平台: i686

rpm: rpm包


包全名:操作没有安装的软件包,软件包使用包全名

包名:操作的是已经安装的软件包,软件包使用包名


2 依赖性


3 安装


service  httpd  start 启动apache

netstat -tlun 查看端口,看看apache是否启动了,apache是80的端口

-t或--tcp   显示TCP传输协议的连线状况

-l或--listening   显示监控中的服务器的Socket

-u或--udp   显示UDP传输协议的连线状况

-n或--numeric   直接使用IP地址,而不通过域名服务器

Aphache rpm包的网页目录. 

vi  /var/www/html/index.html


setup  进入之后可以配置IP,防火墙...



rpm  -ivh  包全名(绝对路径)

只有安装和升级才用到包全名,剩下的都是包名就可以

-i  install 安装 -v 显示详细信息 -h 显示进度


rpm  -Uvh  包全名

-U  升级


4 卸载

rpm  -e  包名

--nodeps 不检查依赖性

no depends 强烈不推线这么做,因为会卸载掉系统的依赖包.


5 查询

1)查询软件包是否安装

rpm  -q  包名 查询包是否安装

因为rpm包已经安装,所以包名不用写全称.是精确查询

rpm  -qa  | grep  httpd 显示所有安装包

是包含匹配,能查到文件名是httpd的

2)查询包信息

rpm  -qi  包名 查询包的信息 包的一些信息,包名, 版本, 网站, 简介等等

-i information


3)查看包中文件安装位置

安装位置是作者认为装哪里,就装哪里.一般不需要指定安装位置.

rpm  -ql  包名 查询包中文件的安装位置

能看到安装的内容,一般包括配置文件,库,执行命令等等.

-l list

4)查询系统文件属于哪个包

通过包装出来的文件才能查询.如: touch出来的文件就查不到

rpm  -qf  系统文件名 查询系统文件属于哪个包

注意:是系统文件,是包经过安装后的文件.


(7) 启动httpd服务

service  httpd  restart|start|stop|status


/etc/rc.d/init.d/httpd  start

服务的绝对路径可以查看服务.

/etc/rc.d/init.d/


(二 )  yum 仅仅是rpm在线的一种安装方法,没有yum包. 

Redhat的yum在线安装是售后服务,收费,而CentOS免费.

安装和卸载都可以用yum执行,但是查询不能.查询是用于已经安装的文 件.而yum是用于安装新的文件和卸载已经安装的文件.


yum  -y  install  包名 安装 -y  自动回答yes

注意:只需要写包名就可以了.不用谢包全名. 

如果没有-y 那么,每装一个包都会询问是否安装.

yum  -y  remove  包名 当它不存在

有可能把系统的依赖包都给卸载掉.所以不用.

yum  -y  update  包名

yum  list 查询所有可以安装的包

查询的是yum源里有哪些包可以用.


光盘作为yum源:

 1. 让默认的网站yum源不生效.

cd  /etc/yum.repos.d/

yum源的相关文件是保存在这个目录中的,默认有4个安装文件.

其中,生效的是Base.repo,其他的都不起作用. 

mv  CentOS-Base.repo  CentOS-BS.repo.bak

把名字改掉,目的是让他失效.这样它就不是默认的生效yum源.

如:

 13 [base] yum源的名字

 14 name=CentOS-$releasever - Base 说明

 15 mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=os 地址

 16 #baseurl=http://mirror.centos.org/centos/$releasever/os/$basearch/

 17 gpgcheck=1 是否进行安全级的校验

虽然没写,但是默认就是enabled=1.默认是yum源生效.

 18 gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6


2. 挂载光盘

mount /dev/hdc  /mnt/cdrom


3. 修改光盘安装文件,让其生效.

vi  /etc/yum.repos.d/CentOS-Media.repo

进入这个文件,修改以下内容

baseurl=file:///mnt/cdrom/ 指定yum源位置

多余的注释掉

enabled=1 yum源文件生效 enabled=0就是关闭

gpgcheck=1 rpm验证生效 关掉会降低安全性


pkill -9 yum-updatesd 如果yum报错正在升级,执行此命令,强制杀死升级进程


yum  -y  install  gcc (gcc是c语言编译器,不装gcc,源码包不能安装)



源码包安装


1 远程传输工具winscp传输apache到linux.

httpd


2 安装

1)解压


2) cd  解压目录

3)  查看安装文档


INSTALL README


4)编译前准备

./configure  --prefix=/usr/local/apache2


功能:

1 检测系统环境,生成Makefile

2 定义软件选项


5)编译 make  clean

make


6)编译安装

make  install


报错判断:

第一:安装过程是否停止

第二:注意error  warning  no  等错误报警

3 启动

/usr/local/apache2/bin/apachectl  start


4 删除

直接删除安装目录



补充:

date 查看系统时间

date  -s  20130220 设定日期

date  -s  09:30:00 设定时间


du  -sh  目录名

du(disk usage) 统计目录下所有子文件的大小,最终会统计总大小.

一般所有统计目录大小的命令都支持 -h

-s -s或--summarize   仅显示总计。

-h 习惯单位 -h或--human-readable   以K,M,G为单位,提高信息的可读性


df  -h df(disk free)  查看分区大小.

du统计的文件大小是准确的 没有统计缓存等空间.

df统计的剩余空间是准确的 因为除了文件占用,缓存等也占用.

所以,剩余空间是准确的.

服务器应该定时重启, 高负载服务器一周重启一次, 低负载服务器最少一月重启一次


作业:

笔记整理

课堂练习

课后练习题

预习:用户管理,服务管理




IP地址配置:

1setup 进入配置选项


2vi /etc/sysconfig/network-scripts/ifcfg-eth0 设置网卡启动

ONBOOT=no 改为 ONBOOT=yes


3service  network   restart 重启网络服务


4、修改虚拟机为桥接(以下步骤,只对虚拟机生效)


5、虚拟机桥接到有线网卡

编辑----虚拟网络编辑器----桥接到有线网卡(没有wireless的网卡)


6、修改UUID冲突(此步骤,只针对复制镜像生效)

1vi /etc/sysconfig/network-scripts/ifcfg-eth0

删除MAC地址行

2rm  -rf  /etc/udev/rules.d/70-persistent-net.rules

删除网卡和MAC地址绑定文件

3)重启动系统


7service  network   restart



软件安装:

RPM

手工命令安装

安装: rpm -ivh 包全名 -i<套件档>--install<套件档>  安装指定的套件档。

升级: rpm -Uvh 包全名 -h--hash  套件安装时列出标记 -U<套件档>--upgrade<套件档>   升级指定的套件档

卸载: rpm -e 包名 -e<套件档>--erase<套件档>  删除指定的套件

查询:

查询包是否安装: rpm -qa | grep 包名

查询包信息: rpm  -qi 包名

查询包中文件的安装位置: rpm -ql 包名

查询系统文件属于那个包: rpm -qf 系统文件名


Yum在线安装

安装: yum -y install 包名

升级: yum -y update 包名

卸载: yum -y remove 包名

查询 yum list


源码包:

安装之前的一些事情

源码包哪里来? ---官方网站下载的

在同一个系统中,是否可以安装RPMapache,再装源码包apache?

可以,安装位置不同(rpm包装在系统默认位置,源码包装在指定位置,一般是/usr/local/目录下,但是只能启动一个.原因是端口都是80)

如何把软件考进linux系统中. 可以用WinSCP

安装步骤

只有3个步骤, 1: 指定安装目录. 2: 编译. 3: 编译安装.

. 解压缩

drwxr-xr-x. 11  501 games 4.0K 6月  11 2008 httpd-2.2.9

-rw-r--r--.  1 root root  6.2M 5月  21 17:27 httpd-2.2.9.tar.gz

问题:为什么压缩后的文件只有4.0K.

是分区的问题.目录的BLOCK保存的是文件名.

4.0K是一级子目录的文件名加起来是4K. Ll命令只能统计文件 大小,不能统计目录大小.统计目录的大小,du命令.

. 进入压缩目录


. 查看说明.

一般都有一个安装说明INSTALL README. 都是大写.

安装说明里有安装方法和步骤

.

. 编译前准备

./configure  --prefix=/usr/loacl/apache2

定义安装选项, 这个是定义安装的位置. 一般的源码包都安装在/usr/local/目录下.

 其他的安装选选项可以输入 ./configure  --help查询

此步作用:

检测系统环境. 比如说:如果没有安装gcc, 安装就不能进行了.

定义安装选项, 写入Makefile文件

./configure  --prefix=/usr/loacl/apache2

( ./configure  不是linux自带的命令,是包自带的命令. 一般的包都有

定义了安装的位置. 执行完这条命令, 才会有Makefile文件

. 确定是否报错, 或安装成功

报错:

安装停止

检测是否出现  no  error  warning  等关键字.

. 编译

make 是真正意义上的编译步骤. 可能会慢.

. 编译安装

make install

. 如何确定安装成功.

进入安装的位置, 然后ls命令显示出文件. 就安装成功了.

. 如何卸载

直接删除安装目录






启动源码包apache.


rpmapache 如何启动

serveice  httpd  start

/etc/rc.d/init.d/httpd  start

网页位置: /var/www/html/


源码包apache如何启动

/usr/local/apache2/bin/apachectl start

在安装目录下有INSTALL安装说明. 在里面就能看到

 10      $ ./configure --prefix=PREFIX

 11      $ make

 12      $ make install

 13      $ PREFIX/bin/apachectl start        这里就是启动说明, 这里的 PREFIX 代表的是安装的根目录下. 与第一行结合起来看, 第一行是安装目录


网页位置: /usr/local/apache2/htdocs/




复习:

判断题

1、在vim命令模式中输入:q!是强制不保存退出,只有root可以使用

2、在vim命令模式中ndd是复制多行

3、在vim命令模式中:%s/old/new/g会把文件中所有的old替换为new

4、rpm –ql 包全名 命令是查找包中文件的安装位置

5、RPM包安装的服务的启动方式是/usr/local/apache2/bin/apachectl start

6、yum –y install 包全名 命令是yum安装命令

7、源码包删除方式是直接删除安装目录







第五天: 用户和用户组管理



用户管理命令


用户信息文件: /etc/passwd

这个命令很重要,可以判断系统中有多少个用户,查看用户的基本信息.

aa:x:501:501::/home/aa:/bin/bash

第一列:用户名

第二列:密码位 x: 表示有密码, 密码在/etc/shadow 文件里

第三列:UID 用户ID

0: 管理员 root

1-499: 伪用户(系统用户)

 系统用户不能删掉,删掉系统就崩了,

功能是: 每次开机启动服务,一个服务就一个用户.

>=500 普通用户 也有特殊的, 是大于500的

第四列:GID 初始组ID 下面红色字

第五列:用户说明

自己添加的用户没有说明,

系统用户一般有说明, 这个说明就是一个注释.

第六列:家目录

第七列:用户登录之后的权限

普通用户一般是 /bin/bash  

系统用户一般是 /sbin/nologin  

想让用户不能登录, 就可以改这个, 

/bin/bash 改成 /sbin/nologin


影子文件: /etc/shadow

保存用户加密后的密码的文件, /etc/passwd 里面有的用户. 

这里面都有.是一个非常重要的文件. 通过权限就能看出来. 权限是000

里面的内容都是如下格式:

root:$6$ng3IcE9941zrBQfy$t/ttp8Bkg0viB8Md4uX1V2JhoeknqEJfcJox2wsb5cy5axzLXKOyevf1QmmlFL/WzAQftf0XhR9Imr5VcT0uO/:16573:0:99999:7:::

其中,共有9列,

第一列: 用户名

第二列: 加密后的密码

第三列: 最近更动密码的日期:这个字段记录了『更动密码的那一天』的日期, 不过,很奇怪呀! 在我的例子中怎么会是 12959 呢?呵呵,这个是因为计算 Linux 日期的时间是以 1970 年 1 月 1 日, 作为 1 ,而 1971 年 1 月 1 日则为 366 啦! 所以这个日期是累加的呢! 得注意一下这个资料

呦!那么最近的 2005 年 1 月 1 日就是 12784 啦

第四列: 0, 是密码有效期的宽限期, 0代表没有宽限期, 到有效期了就禁止登陆. 

如果是3, 就代表有3天的宽限期, 即共计有有效期加宽限期的时间更改密码,不该 就禁止登陆, 这个是超哥讲的. 


资料上是: 

密码不可被更动的天数: 第四个字段记录了这个账号的密码需要经过几天才可以被变更!如果是

0 的话, 表示密码随时可以更动的意思。这的限制是为了怕密码被某些人一改再改而设计的!如

果设定为 20 天的话,那么当你设定了密码之后, 20 天之内都无法改变这个密码呦!

第五列: 99999代表密码的有效期是99999天.大概是273年, 可以改这个数据, 让用户更改密码

第六咧: 7, 代表有效期的前7天开始提示用户更改密码.

第七列: 账号失效日期:这个日期跟第三个字段一样,都是使用 1970 年以来的总日数设定。这个 字段表示: 这个账号在此字段规定的日期之后,将无法再使用。 这个字段会被使用通常 应该是在『收费服务』的系统中, 你可以规定一个日期让该账号不能再使用啦!




组信息文件: /etc/group

mail:x:12:mail,postfix

sc:x:500: 里面内容的格式都是这样的

组名:组密码位:组ID:组中附加用户

组名对应的初始用户是看不到的,只能看到组中的附加用户.


1 添加用户

useradd  用户名 这个命令不加选项是合理, 加选项就容易乱 


useradd  选项  用户名

选项:

-g  组名 指定初始组 不要手工指定

-G  组名 指定附加组,把用户加入组,使用附加组

-c  说明 添加说明 说明用””包含

-d  目录 手工指定家目录,目录不需要事先建立

-s  /bin/bash 手工指定用户登录之后的权限



useradd  -g  aa  bb 添加bb用户,同时指定初始组为aa

useradd  -G  user1  aa 添加用户aa,指定附加组为user1

gpasswd  -a  用户名  组名

useradd  -g  组名  用户名


初始组:每个用户初始组只能有一个,初始组只能有一个

一般都是和用户名相同的组作为初始组

强烈推荐不更改初始组, 就用默认的和用户名相同的组名.改后容易乱

不同的用户可以有同一个初始组,但是每个用户只能有一个初始组.

怎么查用户的初始组,只有一个方法:

用vi /etc/passwd  命令查看初始组的ID ( GID )

用vi /etc/group  命令查看刚才的GID, 行头就是初始组的名字.

附加组:每个用户可以属于多个附加组。要把用户加入组,都是加入附加组


2 设定密码

passwd   用户名

passwd 改变当前用户密码 自己改自己密码,需要输入3便密码

passwd  root 改变root密码


3 删除用户

userdel  -r  用户名

-r  连带家目录一起删除

如果只用userdel删除用户, 还会存在目录, 所以,要userdel -r一起用


4 添加组

groupadd  组名


5 删除组

groupdel  组名 注意:组中没有初始用户

如果这个组是一个用户的初始组, 就不能被删除


6 把已经存在的用户加入组

gpasswd  -a  用户名  组名 用户加入组

注意: 和 useradd  -g  指定的初始组  添加的用户   操作的是用户  

而 gpasswd 操作的是组. 这两个是反的.

gpasswd  -d  用户名  组名 把用户从组中删除 


用户相关命令

1 id  用户名 显示用户的UID,初始组,和附加组

[root@localhost home]# id sc

uid=500(sc) gid=500(sc) groups=500(sc),0(root)


2 su  -  用户名 切换用户身份

su ( super user )   su root 是切换超级用户,需要密码    

超级用户切换其他用户, 不需要密码

- 连带环境变量一起切换


ACL权限

access control list 访问控制表   用来解决用户身份不足的现象.


举例: /www

sc-root

61-fgroup

o

770


[root@localhost ~]# mkdir /www

[root@localhost ~]# chmod 770 /www/

[root@localhost ~]# groupadd fgroup

[root@localhost ~]# gpasswd -a sc fgroup

正在将用户“sc”加入到“fgroup”组中

[root@localhost ~]# gpasswd -a aa fgroup

正在将用户“aa”加入到“fgroup”组中

[root@localhost ~]# chown root:fgroup  /www

[root@localhost ~]# ll -d  /www/

drwxrwx--- 2 root fgroup 4096 04-25 14:56 /www/


1 getfacl  文件名 查询文件的acl权限 get file acl

文件名只能是相对路径. 


2 setfacl  选项  文件名 设定acl权限 set file acl 

-m 设定权限

-b 删除权限


setfacl  -m  u:用户名:权限   文件名 m: modify 修改

setfacl  -m  g:组名:权限   文件名


setfacl  -m u:aa:rwx  /test 给test目录赋予用户aa读写执行的acl权限


setfacl -m u:cc:rx -R soft/ 赋予递归acl权限,只能赋予目录

-R  递归 权限溢出


setfacl  -b  /test 删除acl权限


3 setfacl  -m d:u:aa:rwx -R /test acl默认权限    注意:默认权限只能赋予 d: default 默认权限

注意:如果给目录赋予acl权限,两条命令都要输入

-R 递归

-m  u:用户名:-R 权限 只对已经存在的文件生效

-m  d:u:用户名:-R 权限 只对未来要新建的文件生效


输出重定向和多命令顺序执行


1 输出重定向

把应该输出到屏幕的输出,重定向到文件。  只要有输出, 都能记录到文件里.


> 覆盖

>> 追加


ls  >  aa 覆盖到aa

ls  >>  aa 追加到aa


ls  gdlslga  2>>aa 错误信息输出到aa 强调:错误输出,不能有空格

2 错误信息



掌握

ls  >>  aa  2>&1 错误和正确都输入到aa,可以追加 输入到同一个文件

2>&1 把标准错误重定向到标准正确输出


ls  >>  aa  2>>/tmp/bb 正确信息输入aa,错误信息输入bb   输入到不同的文件




服务和进程管理


进程管理三个主要任务:

判断服务器健康状态

查看所有正在运行的进程

强制终止进程


进程查看


1 ps  aux 查看当前系统所有运行的进程

ps ( process status )   

注意: ps aux  中间没有减号-  ,加减号了会报错的

-a 显示前台所有进程

-u 显示用户名

-x 显示后台进程


user: 用户名

pid: 进程id。PID 1  init  系统启动的第一个进程

%CPU cpu占用百分比

%MEM 内存占用百分比

VSZ 虚拟内存占用量 KB

RSS 固定内存占有量

tty 登录终端

tty1-7 本地终端 1-6 字符  7图形

pts/0-255 0-255个远程终端, 其实支持的比这个多, 但是习惯默认就这么多

? 是由内核直接调用

stat 状态

S:睡眠 D:不可唤醒 R:运行  

T:停止  Z:僵死  W:进入内存交换 X:死掉的进程 

<:高优先级 N:低优先级 L:被锁进内存

s:含子进程 +:位于后台 l:多线程

start 进程触发时间

time 占用cpu时间 越高越占资源

command 进程本身

/sbin/init 是所有进程的父进程.  


vi /etc/inittab   这个就是init的配置文件. 是选择default runlevel的

id:3:initdefault:   这个就是进入配置文件最底部的内容, 3代表开机默认进入的是命令行界面. 改这个就能修改开机默认的界面. 5是图形界面, 但是必须得安装图形界面. 后面有详细的解释 . 


2 pstree 查看进程树

pstree ( process status tree ) 

会把同类进程合并起来, 用pstree  -p     

p 的意思是pid, 显示 pid ,这样进程就展开了. 


3 top 用来判断健康. 每隔3秒刷新一次


第一行: 系统当前时间 系统持续时间 登录用户数 1,5,15分钟之前的平均负载

第二行:进程总数

第三行:CPU占用率 %id 空闲百分比

第四行:内存使用: 总共 使用 空闲 缓存

第五航:swap使用


操作命令 M 内存排序

P CPU排序

q 退出




4 进程管理 终止进程 有真确的关闭方法, 就不要用KILL, 除非关不掉了.

kill  信号  PID 结束单个进程

kill -l 查看支持的信号   kill 信号 后面跟的是PID. 不是进程名

-9  强制


killall  -9  进程名 结束一类进程

pkill  -9  进程名 等价于killall



w 判断登录用户 w: who  命令是查看当前登陆了多少用户

pkill  -9  -t  终端号 把某个终端登录的用户踢出

是按照终端号踢出用户的 .TTY

pkill  -9  -t tty1 把本地登录终端1登录用户踢出



linux服务管理

Windows 的服务分为:自动 手动 禁用 

手动的意思是:开机不启动,需要的时候,不经过用户同意, 直接就启动. 

Linux 的服务没有手动服务, 只有自动和禁用

1 分类

1)系统默认安装的服务 rpm包

①独立的服务

绝大多数的服务都是独立的

独立的意思是: 服务直接就放到内存里, 需要的话, 服务就直接用. 好处是响应速度快. 缺点是:每一个服务都需要占用一定的内存 

②基于xinetd的服务,xinetd是系统超级守护进程

意思是: 服务都需要经过xinetd中转,xinet本身是独立的. 

他管理着一些后台, 后台要使用,要经过他的调用

好处是, 只占用一个服务. 缺点是: 响应速度慢. 

基于xinet的服务越来越少, 要查看基于xinnet的服务, 需要先在yum源 安装 xinet , 然后用 chkconfig --list 就能看到了. 

service 搜索的目录是/etc/rc.d/init.d

源码包是安装在作者指定的目录的, 不是在/etc/ 目录里.

所以 , 类似于这样的服务命令, 都不支持源码包


2)源码包安装的服务


(一)系统默认安装的服务

1 确定服务分类

chkconfig  --list 查看RPM包安装服务的自启动状态

chkconfig ( check config ) 检查,设置系统的各种服务


运行级别:0-6

0 关机

1 单用户模式

就类似于windows中的安全模式. 启动最基本的服务, 用于安全修复. 

2 不完全多用户,不包含NFS服务

3 完全多用户 字符界面

4 未分配

5 图形界面

6 重启


init 0 关机

init 5  转到图形界面

init 3 转到文本界面

init 6 重启


runlevel 查询系统当前运行级别

输出: N 3    N的意思是: NULL, 空, 

是在进入命令行界面之前, 上一个级别是什么. 

这里开机直接进入了命令界面,所以是空

可以用 init 5 来转换到图形界面, 前提是必须安装了图形界面. 

vi  /etc/inittab

/sbin/init 是所有进程的父进程.  

vi /etc/inittab   这个就是init的配置文件. 

id:3:initdefault:   这个就是进入配置文件最底部的内容, 

3代表开机默认进入的是命令行界面. 

改这个就能修改开机默认的界面.

id:3:initdefault: 定义系统默认运行级别


2 独立的服务器管理


1)启动 启动的意思就是可以马上停止, 启动

方法一

/etc/rc.d/init.d/服务名   start|stop|restart|status

是通用的方法, 就用这个. 


方法二

service   服务名   start|stop|restart|status

只能管理rpm包的服务

service 是RedHat的独有命令.


2)自启动 自启动的意思就是, 需要下次开机才能启动

方法一

chkconfig  --level  2345  服务名  on|off

只能管理rpm包的服务. 


方法二 推荐

vi  /etc/rc.local---->/etc/rc.d/rc.local  

这个2个命令写哪个都可以. 

在这个文件里写入的任何命令 , linux 在启动的时候都会读取一遍. 

前面的是后面的软连接

/etc/rc.d/init.d/httpd  start

在这个文件里加入这条命令, 

那么, linux 下次在开机的时候就会自动启动apache了

如果自启动的两个方法都使用了, 那么服务就会启动两次,

第二次启动的时候就会报错了, 所以, 要二选一. 

下次开机, 自启动生效后, 查看的方法有2个, 

一个是: 查看进程, 一个是:查看端口. 


3 ntsysv

所有系统默认安装服务都可以使用ntsysv命令进行自启动管理

所有用rpm安装的服务, 都在这个图形界面找到. 

 这个是控制开机自启动的. 是redhat专有. 

service, chkconfig , ntsysv  都只能管理rpm包安装的服务. 

而不能管理源码包安装的服务. 

Service, setup , ntsysv 是 redhat 专有的命令. 


(二)源码包安装的服务

1源码包安装的服务


1)绝对路径启动

/usr/local/apache2/bin/apachectl  start

每一个源码包的启动方式是不一样的. 因为路径不同. 


2)自启动

vi /etc/rc.local

/usr/local/apache2/bin/apachectl  start


服务管理:

RPM包安装的服务

独立的服务

启动:

1)/etc/rc.d/init.d/服务名  start

2) service  服务名   start

自启动:

1) chkconfig  --level  2345  服务名  on|off

2)vi  /etc/rc.local

/etc/rc.d/init.d/httpd  start


基于xinetd的服务


源码包安装的服务

启动:

/usr/local/apache2/bin/apachectl  start

自启动:

vi  /etc/rc.local

/usr/local/apache2/bin/apachectl  start


date -s 20150521 就是改系统的日期. 

date -s 04:20:13 就是改系统的时间. 



计划任务


echo  11  >>  /root/aa 在aa文件中追加11.一会定时任务验证用

前提: crond 这个服务运行, 才能用计划任务, 默认是开启的. 


循环定时任务

crontab  -e

编辑定时任务 用这个命令做定时任务, e 是 edit , 进去是空的. 

写入 0 5 * * * /root/bak_etc.sh   就会定时的执行这个脚本. 

* * * * *  命令



10  *  31  *  *  命令

10  *  *  *  *  命令

5  4  *  5-10  *  命令 意思是: 5到10月  

*/10  *  *  *  *  命令 意思是: 每隔10分钟

5 4  1,15  *  *  命令 每个月的第一天和第15天

日期和星期不要同时指定,会超出预期

5 4 10 * 5 命令

*/20 4 * 5 2 命令


第一个*:一小时中第几分钟 0-59

第二个:一天中第几个小时 0-23

第三个:一个月中第几天 1-31

第四个:一年第几个月 1-12

第五个:一周中星期几 0-6 0 和 7 都代表星期日


注意: 没有年和秒



crontab  -l 查看系统定时任务

crontab  -r  删除定时任务

直接删掉, 输入这个命令就删掉 了计划任务. 


注意事项:

选项都不能为空,必须填入,不知道的值使用通配符*表示任何时间 

每个时间字段都可以指定多个值,不连续的值用,间隔连续的值用-间隔

间隔固定时间执行书写为*/n格式 

命令应该给出绝对路径 

星期几何第几天不能同时出现

最小时间范围是分钟,最大时间范围是


系统运行级别

1 dmesg 查看系统启动信息

查看linux开机的自检信息. 信息很多. display message


cat  /var/log/dmesg 系统启动信息日志

dmesg | grep eth0 查看eth0信息

查看网卡的型号. 用这样的命令判断linux开机自检出来的硬件信息. 

dmesg | grep CPU 查看cpu信息

查看cpu的硬件情况


2 系统运行级别 

0 关机

1 单用户

2 不完全多用户,不含NFS

3 完全多用户

4 保留

5 图形界面

6 重启


runlevel  查询系统运行级别


init  运行级别 改变运行级别 init 0     init  6



修改系统默认运行级别

vi  /etc/inittab init配置文件

id:3:initdefault: 系统默认运行级别



作业:

笔记整理

课堂练习

课后练习题

预习:网络配置和文件服务器



复习:

判断题:

1、useradd  -G test group 会添加用户test,并把用户加入到group组中

2、gpasswd  -G  test  group 会把已经存在的用户test添加入用户组group中

3、setfacl  -m d:u:aa:rwx -R /test 会给/test目录和目录下所有文件设定用户aa拥有rwx权限

4、ls  >>  aa  2>&1 会把ls命令的正确与错误输出都追加到文件aa中

5、/etc/rc.d/init.d/httpd  start 会启动RPM安装的apache并把apache设定为自启动

6、*/10 5 10 * * 命令 命令会在每年10月的早上5点,每10分钟执行一次

7、3运行级别是字符界面、可以修改vi  /etc/inittab配置文件,改id:3:initdefault:这句话,变为开机直接进入字符界面




网络基础知识:


IP地址: Ipv4 2*32

255.255.255.255

是有32为的二进制组成的. 每八位分开,

就这样的格式 1111111.1111111.1111111.1111111.


10.0.0.0 - 10.255.255.255 这个是私有网络, 就是内网. 

172.16.0.0 - 172.31.255.255

192.168.0.0 - 192.168.255.255


端口: tcp  有216个端口, 是6W多个端口 就是三次握手

Udp 有216个端口, 是6W多个端口 就是不握手, 直接把数据包扔给你.

0到10000以内的端口. 是服务器的常规端口. 一般系统服务会占用. 

10000以上的端口, 是给用户用的. 


常见网络端口:

20  21 ftp服务 文件共享

22 ssh服务 安全远程网络管理

传送的数据是加密的. 

23 telnet服务

也是远程管理. 用telnet传送的数据, 都是明文.

服务器不允许开启这个服务. 但客户端是常规命令.

25 smtp:简单邮件传输协议 发信

110 pop3:邮局协议 收信

80 www 网页服务

3306 mysql端口

53 DNS端口

/etc/services

Linux系统下的所有常见端口文件. 可以用vi /etc/services 查看. 


端口数量 tcp  65535 udp  65535


telnet  ip  端口 测试端口是否可以正常连接

ctrl+]  -----------  quit 退出方式


netstat  -tlun  查看本机所有监听端口

-t  tcp  -u udp   -l  监听  -n  以IP和端口号显示


网关的功能: 1). 接收局域网内不能处理的数据包. 

2). 实现NAT功能, 从内网到外网的转换. 

发送的数据包不能处理, 都交给网关. 

经过网关的转换, 就可以发送给公网了,

网关就是实现内网和外网链接的一个桥梁



DNS: Domain  Name  System

负责IP和域名之间的转换, 没有设置DNS, 不影响局域网之间的通讯, 

但是没有DNS, 会不能访问互联网的网页. 

例如 QQ 可以聊天, 但是不能打开网页, 一般就是DNS没设置好


域名 --> IP 正向解析

IP ——》 域名 反向解析


北京网通: 202.106.0.20

这个DNS比较稳定. 还有8.8.8.8      114.114.114.114




网络配置 


IP地址配置的方法:


1 setup redhat的专有功能

service network  restart   

设置好setup之后要重启网络服务.


2 ifconfig  eth0  ip  netmask  掩码

临时生效, 重启之后就回复原来的IP设置. 


3 网卡配置文件

是最标准的配置IP方法. 分为3个步骤. 


1)/etc/sysconfig/network-scripts/ifcfg-eth0 网卡信息文件

用vi进入,内容如下:


左侧的都是大写. 右侧的都是小写

DEVICE=eth0 网卡设备名

如果有2块网卡, 那么就是eth1. 

但是, 网卡信息文件名和网卡设备名必须一致. 就是:黄色背景的,必须一致. 

BOOTPROTO=none 是否自动获取IP     none:不生效 static:手动 dhcp:动态获取IP, 自动获取IP. 

要想自动获取IP, 就要在局域网内拥有dhcp服务器. 就会有人给分配IP, 

就不许要设置这么多的内容. 只需要设置浅蓝色的4个设置

BROADCAST=192.168.140.255 广播地址

HWADDR=00:0c:29:21:80:48 mac地址

IPADDR=192.168.140.253 IP地址

IPV6INIT=yes IPv6开启

IPV6_AUTOCONF=yes IPv6获取

NETMASK=255.255.255.0 掩码

NETWORK=192.168.140.0 网段

ONBOOT=yes 网卡开机启动

TYPE=Ethernet 以太网  

运行在双胶网线(普通的网线,8跟线的)上的网络, 都是以太网. 

GATEWAY=192.168.140.1 网关


2)/etc/sysconfig/network 主机名配置文件, 设置后永久生效,但是要重启 用vi进入, 内容如下:

HOSTNAME=localhost.localdomain 主机名

如果是在WINDOWS系统下, 同意局域网内, 主机名一样是不能访问的. Linux的可以. 

修改后需要重启才能生效, 不想重启, 可以用 hostname=主机名 

这个命令. 是临时生效. 同时设置就达到效果

重新登陆一次. 远程终端工具(X-shell)就起效果了. 

hostname  主机名 临时设定主机名

hostname 查看主机名


3)/etc/resolv.conf DNS配置文件 用vi进入. 内容如下:

nameserver  202.106.0.20


网络命令


1 ifconfig 查看网卡信息

看不到网关. 能看到IP地址, 子网掩码. MAX地址. 


2 ifup  eth0 ifdown  eth0 快速开启和关闭网卡 

就相当于windows中的禁用和开启网络邻居里的网卡, 临时的. 


3 netstat  -an 查看所有网络连接

netstat  -tlun 查看tcp和udp协议监听端口

netstat  -rn 查看路由 default:默认路由(网关) 查看网关.  


4 route 查看路由

route -n 查看网关

route  add   default  gw  192.168.140.1 手工设定网关,临时生效

route del default gw 192.168.190.6 删除网关


5 ping  ip 探测网络通畅



7 traceroute  ip或域名 探测到底目的地址的路径(linux命令)

就是路由追踪命令

在命令行输入: traceroute www.xdlit.cn  

如果不通, 就会显示经过了哪些节点. 到哪个节点不通. 


tracert  ip windows下命令


89开启


tcpdump -i eth0 -nnX port 21


VSFTP服务

在linux系统, 叫vsftp, 是明文传递的. 网络协议是https的是加密的. 

tcpdump -i eth0 -nnX port 21 监听端口21 抓包 -nn 拆开包  X 十六进制

文件服务器简介


ftp:在内网和公网使用。 服务器:windows,linux 客户端:windows,linux


1 ftp软件


linux: wu-ftp 早期,不太安全  淘汰了

proftp 增强ftp工具

vsftp 安全,强大  是redhat绑定的


windows IIS windows下网页搭建服务,可以搭建ftp服务

Serv-U 专用ftp服务器


2 原理

ftp主要使用下面这2个端口

开启 21  命令传输端口 是监听端口

20 数据传输端口 只有数据传递的时候才需要


3 ftp的用户

1)ftp允许登录用户 就是系统用户 使用密码也是系统密码

上传位置:/home/家目录


2)匿名用户 anonymous 密码:  空   或者  邮箱地址   11@aa   

匿名用户需要输入用户名,  用户名是: anonymous   密码是空

上传位置:/var/ftp/



安装


rpm  -ivh  vsftpd...........

是需要服务器的. 一般是给内部人员使用的. 

一般外人不是免费使用的. 一般访问量不大, 用rpm也能接受

yum  install  vsftpd  -y


相关文件


/etc/vsftpd/vsftpd.conf 配置文件


/etc/vsftpd/ftpusers

用户访问控制文件 写入此文件的用户都不能访问ftp服务器

就是黑名单. root也是黑名单. 是正确的. 


/etc/vsftpd/chroot_list 需要手工建立 定义是否把用户限制在家目录


配置文件配置


/etc/vsftpd/vsftpd.conf 用 vi 打开 


1 主机相关配置

listen_port=21 监听端口

这句话在配置文件里找不到.

默认设置就是这个, 找不到就是默认设置. 需要改就添加进去. 

connect_from_port_20=YES 数据传输端口

ftpd_banner= 欢迎信息

每次进入的信息. 默认是没开启. 是注释掉的. 



2 匿名用户登录 在linux下识别为  ftp  用户


anonymous_enable=YES 允许匿名用户登录

不需要, 因为是给内部人用的. 一般都关掉


3 本地用户

local_enable=YES 允许系统用户登录

write_enable=YES 允许上传

local_umask=022 默认上传权限

local_max_rate=300 上传限速 单位是 字节/秒


4 限制用户访问目录

chroot_local_user=YES 只有此句,所有用户限制在家目录下. 

如果不写这几句, 任何的普通用户, 通过ftp都可以访问任何目录. 


如有三句话,只有文件chroot_list中的用户可以访问任何目录,其他用户限制在家目录

chroot_local_user=YES

chroot_list_enable=YES

chroot_list_file=/etc/vsftpd/chroot_list


在windows cmd 下, ftp IP , 会login failed , 连接失败. 报错. 

这个不是ftp的原因. 

在linux中有这样一个命令: selinux    

用vi 打开它的配置文件.  vi /etc/selinux/config  , 进去让它失效. 把 SELINUX=enforcing  改成   SELINUX=disabled  就失效了, 其中, enforcing 的意思是强制生效. 

因为它是由内核编译的. 所以改完之后必须重启Linux. 

selinux就是Linux的安全防护. 是美国国家安全局开发的. 是为了限制root的权限

这样, 就不会报错了. 


ftp客户端使用


使用命令登录

ftp  ip windows cmd下, 输入完之后, 需要输入用户名和密码. 


get  文件名 下载 下载的文件放在了当前目录下. 不能断点续传. 

put  文件名 上传 不能上传和下载目录


使用windows窗口

ftp://用户名@IP 不支持断点续传. 是图形界面. 



使用第三方工具登录

flashFXP. winSCP 



ssh安全登录 22端口


联机加密工具

非对称钥匙对加密


安装 默认安装 openssh  默认都装了.如果没装, 就装这个包


启动 默认开机自启动 service  sshd  restart


配置文件 /etc/ssh/sshd_config



ssh远程安全联机 掌握


ssh   用户名@ip

linux 和 linux 互联, 第一次需要输入YES, 目的是传送公匙, 然后输入用户 名和密码就可以登录了. 


scp 网络复制,网络文件传输 掌握


1 下载


scp   用户名@ip:路径   本地路径


scp  root@192.168.140.93:/root/abc  /root


scp  -r  root@192.168.140.93:/root/11  /root 下载目录


2 上传

scp  本地文件或目录  用户名@ip:路径


scp  -r  /root/11  root@192.168.140.93:/root 上传目录


总结: 

传输数据的工具: 

Windows 和 windows : 用什么都可以, 如QQ, 网盘

Windows 和 linux   : winSCP

Linux   和 Linux   : SCP



课后作业:

笔记整理

课堂练习

网络设置练习题

预习 lamp环境搭建





第六天 搭建LAMP环境



一、准备工作


1、安装编译工具gcc、gcc-c++

注意解决依赖关系,推荐使用yum安装,若不能联网可使用安装光盘做为yum源——

1)编辑yum配置文件:

# mount /dev/cdrom /mnt/cdrom

# vi /etc/yum.repos.d/CentOS-Media.repo 

[c5-media] 

name=CentOS-$releasever - Media

baseurl=file:///mnt/cdrom   * 修改为光盘挂载点

       file:///media/cdrom/

       file:///media/cdrecorder/

gpgcheck=1

enabled=1  * 改为1意为启用

gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-5

2)剪切/etc/yum.repos.d/CentOS-Base.repo

# mv /etc/yum.repos.d/CentOS-Base.repo //etc/yum.repos.d/CentOS-Base.repo.bak

3)依次安装gcc、gcc-c++

# yum -y install gcc

# yum -y install gcc-c++


2、关闭系统RPM安装包的Apache、MySQL的服务

关闭启动的服务httpd、mysqld

# service httpd stop

# service mysqld stop


确定rpm包安装的httpd和mysqld不能开机自启动

chkconfig  --level  2345  httpd(mysqld)  off


3、关闭SELinux,允许防火墙80端口访问

使用setup

关闭防火墙和SElinux


1)关闭SELinux

# vi /etc/selinux/config

SELINUX=disabled   * 若安装时没有禁用SELinux ,将enforcing改为disabled

修改后需重新启动Linux方可生效!

2)关闭防火墙Netfilter/iptables

因尚未做防火墙讲解,直接简单的关闭所有防火墙设置:

# iptables  -F     * 如果没有禁用防火墙,默认80端口禁止访问

iptables -Z

iptables  -X

Iptables -L 查看防火墙 


4、关闭不必要自启动服务

# ntsysv

以下列出服务可保持自启动,未列出的服务都可以关闭:

atd    

crond        # atd、crond计划任务

irqbalance

microcode_ctl   # 系统irq端口调用,系统服务

network    #网络设置

sendmail   #邮件

sshd      #远程管理

syslog    #系统日志


5、拷贝源码包,解包解压缩

 建议将LAMP环境安装源码包统一存放在一个目录下,如/lamp

 可编写个批量处理脚本,一次性把所有.tar.gz的安装包解包解压缩

 # vi tar.sh

#!/bin/bash

  cd /lamp

ls *.tar.gz > ls.list

ls *.tgz >> ls.list

  for i in `cat ls.list`

 do

/bin/tar -zxvf $i

 done

rm -rf ls.log


6、查看确认磁盘空间未满

df -h

  * 若/分区已满,可以移动安装包到其他分区或删除其他无用文件



如何确定报错:

1)安装过程停止

2)停止后,一页界面中出现error或者warning


如何确定安装成功:

进入安装目录,确认安装程序出现,就是成功


二、编译安装


 * 每个源码包配置编译安装完成后,确认安装目录下是否生成安装文件

make  clean

 # 安装libxml2

Libxml2 是一个xml c语言版的解析器,本来是为Gnome项目开发的工具,是一个基于MIT License的免费开源软件。它除了支持c语言版以外,还支持c++、PHP、Pascal、Ruby、Tcl等语言的绑定,能在Windows、Linux、Solaris、MacOsX等平台上运行。功能还是相当强大的,相信满足一般用户需求没有任何问题。

libxml是一个用来解析XML文档的函数库。它用C语言写成, 并且能为多种语言所调用,例如C语言C++XSHC#PythonKylix/DelphiRuby,和PHP等。Perl中也可以使用XML::LibXML模块。它最初是为GNOME开发的项目,但现在可以用在各种各样的方面。libXML 代码可移植性非常好,因为它基于标准的ANSI C库, 并采用MIT许可证。


#yum  install  -y  libxml2-devel 如果报错,安装此包后再尝试安装


yum -y install python-devel 必须有


 cd /lamp/libxml2-2.9.1

 ./configure --prefix=/usr/local/libxml2/

 make 

 make install


 # 安装libmcrypt

libmcrypt是加密算法扩展库。支持DES, 3DES, RIJNDAEL, Twofish, IDEA, GOST, CAST-256, ARCFOUR, SERPENT, SAFER+等算法。

 cd /lamp/libmcrypt-2.5.8

 ./configure --prefix=/usr/local/libmcrypt/

 make 

 make install

 * 需调用gcc-c++编译器,未安装会报错


# 安装libltdl,也在libmcrypt源码目录中,非新软件

 cd /lamp/libmcrypt-2.5.8/libltdl

 ./configure --enable-ltdl-install

 make

 make install



# 安装mhash

Mhash是基于离散数学原理的不可逆向的php加密方式扩展库,其在默认情况下不开启。mhash的可以用于创建校验数值,消息摘要,消息认证码,以及无需原文的关键信息保存(如密码)等。

cd /lamp/mhash-0.9.9.9

./configure 

make

make install




# 安装mcrypt

mcrypt 是 php 里面重要的加密支持扩展库。Mcrypt库支持20多种加密算法和8种加密模式

cd /lamp/mcrypt-2.6.8

LD_LIBRARY_PATH=/usr/local/libmcrypt/lib:/usr/local/lib  ./configure --with-libmcrypt-prefix=/usr/local/libmcrypt

#以上为一条命令。LD_LIBRARY_PATH用于指定libmcrypt和mhash的库的位置。

--with-libmcrypt-prefix用于指定libmcrypt软件位置

make

make install

#mcrypt没有安装完成,这是php的模块,需要等php安装完成之后,再继续安装


 # 安装zlib

zlib是提供数据压缩用的函式库,由Jean-loup Gailly与Mark Adler所开发,初版0.9版在1995年5月1日发表。zlib使用DEFLATE算法,最初是为libpng函式库所写的,后来普遍为许多软件所使用。此函式库为自由软件,使用zlib授权

 cd /lamp/zlib-1.2.3

./configure

 make

 make install  >>  /root/zlib.log

 * zlib指定安装目录可能造成libpng安装失败,故不指定,为卸载方便,建议make install执行结果输出到安装日志文件,便于日后卸载


# 安装libpng

libpng 软件包包含 libpng 库.这些库被其他程式用于解码png图片

 cd /lamp/libpng-1.2.31

 ./configure --prefix=/usr/local/libpng

 make

 make install


 # 安装jpeg6

用于解码.jpg和.jpeg图片

mkdir /usr/local/jpeg6

 mkdir /usr/local/jpeg6/bin

 mkdir /usr/local/jpeg6/lib

 mkdir /usr/local/jpeg6/include

 mkdir -p /usr/local/jpeg6/man/man1

#目录必须手工建立

 cd /lamp/jpeg-6b

 ./configure --prefix=/usr/local/jpeg6/ --enable-shared --enable-static

 make

 make install

 * --enable-shared与--enable-static参数分别为建立共享库和静态库使用的libtool


 # 安装freetype

FreeType库是一个完全免费(开源)的、高质量的且可移植的字体引擎,它提供统一的接口来访问多种字体格式文件,包括TrueType, OpenType, Type1, CID, CFF, Windows FON/FNT, X11 PCF等。支持单色位图反走样位图的渲染。FreeType库是高度模块化的程序库,虽然它是使用ANSI C开发,但是采用面向对象的思想,因此,FreeType的用户可以灵活地对它进行裁剪。

 cd /lamp/freetype-2.3.5

./configure --prefix=/usr/local/freetype/

 make

 make install



# 安装GD库

GD库,是php处理图形的扩展库,GD库提供了一系列用来处理图片的API,使用GD库可以处理图片,或者生成图片。 在网站上GD库通常用来生成缩略图,或者用来对图片加水印,或者用来生成汉字验证码,或者对网站数据生成报表等。

mkdir /usr/local/gd2

 cd /lamp/gd-2.0.35

* png错误,修改方法:

vi gd_png.c

把 #include “png.h” 替换为 #include "/usr/local/libpng/include/png.h"

 ./configure --prefix=/usr/local/gd2/ --with-jpeg=/usr/local/jpeg6/ --with-freetype=/usr/local/freetype/ --with-png=/usr/local/libpng/

 make 

 make install

 * 若前面配置zlib时没有指定安装目录,gd配置时不要添加--with-zlib=/usr/local/zlib/参数


# 安装Apache

configure: error: Bundled APR requested but not found at ./srclib/. Download and unpack the corresponding apr and apr-util packages to ./srclib/.

#如果报错,则:

tar  zxvf  apr-1.4.6.tar.gz

tar  zxvf  apr-util-1.4.1.tar.gz

cp  -r  /test/apr-1.4.6  /test/httpd-2.4.7/srclib/apr

cp  -r  /test/apr-util-1.4.1  /test/httpd-2.4.7/srclib/apr-util

#解压apr和apr-util,复制并取消版本号


configure: error: pcre-config for libpcre not found. PCRE is required and available from

#如果报错,则:

tar zxvf pcre-8.34.tar.gz

cd pcre-8.34  

./configure && make && make install


checking whether to enable mod_ssl... configure: error: mod_ssl has been requested but can not be built due to prerequisite failures

#如果报错,则:

yum install openssl-devel


安装apache

 cd /test/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

 make

 make install

  * 若前面配置zlib时没有指定安装目录,Apache配置时不要添加--with-z=/usr/local/zlib/参数


 启动Apache测试:

/usr/local/apache2/bin/apachectl start

ps –aux | grep httpd

netstat –tlun | grep :80

* 若启动时提示/usr/local/apache2/modules/mod_deflate.so无权限,可关闭SELinux或者执行命令chcon -t texrel_shlib_t /usr/local/apache2/modules/mod_deflate.so ,类似此类.so文件不能载入或没有权限的问题,都是SELinux问题,使用命令:“chcon -t texrel_shlib_t 文件名”即可解决,MySQL和Apache也可能有类似问题。

通过浏览器输入地址访问:http://Apache服务器地址,若显示“It works”即表明Apache正常工作


设置Apache系统引导时启动:

echo "/usr/local/apache2/bin/apachectl start" >> /etc/rc.d/rc.local


# 安装ncurses

Ncurses 提供字符终端处理库,包括面板和菜单。它提供了一套控制光标,建立窗口,改变前景背景颜色以及处理鼠标操作的函数。使用户在字符终端下编写应用程序时绕过了那些恼人的底层机制。简而言之,他是一个可以使应用程序直接控制终端屏幕显示的函数库。

1、方法一:

yum -y install ncurses-devel

注:如果报错,包找不到,是*通配符没有识别,给文件名加双引号  “ncurses*”

2、方法二:

源代码编译:

cd /lamp/ncurses-5.9

./configure --with-shared --without-debug --without-ada --enable-overwrite

make 

make install

* 若不安装ncurses编译MySQL时会报错

* --without-ada参数为设定不编译为ada绑定,因进入chroot环境不能使用ada ;--enable-overwrite参数为定义把头文件安装到/tools/include下而不是/tools/include/ncurses目录

* --with-shared 生成共享库


# 安装cmake和bison

mysql在5.5以后,不再使用./configure工具,进行编译安装。而使用cmake工具替代了./configure工具。cmake的具体用法参考文档cmake说明。

bison是一个自由软件,用于自动生成语法分析器程序,可用于所有常见的操作系统

yum -y install cmake

yum -y install bison


 # 安装MySQL

 groupadd mysql

 useradd -g mysql mysql

* 添加用户组mysql ,将mysql用户默认组设置为mysql用户组


cd /test/mysql-5.5.23

cmake  -DCMAKE_INSTALL_PREFIX=/usr/local/mysql    -DMYSQL_UNIX_ADDR=/tmp/mysql.sock  -DEXTRA_CHARSETS=all   -DDEFAULT_CHARSET=utf8    -DDEFAULT_COLLATION=utf8_general_ci    -DWITH_MYISAM_STORAGE_ENGINE=1   -DWITH_INNOBASE_STORAGE_ENGINE=1    -DWITH_MEMORY_STORAGE_ENGINE=1  -DWITH_READLINE=1    -DENABLED_LOCAL_INFILE=1   -DMYSQL_USER=mysql  -DMYSQL_TCP_PORT=3306


-DCMAKE_INSTALL_PREFIX=/usr/local/mysql 安装位置

-DMYSQL_UNIX_ADDR=/tmp/mysql.sock 指定socket(套接字)文件位置

-DEXTRA_CHARSETS=all 扩展字符支持

-DDEFAULT_CHARSET=utf8    默认字符集

-DDEFAULT_COLLATION=utf8_general_ci    默认字符校对

-DWITH_MYISAM_STORAGE_ENGINE=1   安装myisam存储引擎

-DWITH_INNOBASE_STORAGE_ENGINE=1    安装innodb存储引擎

-DWITH_MEMORY_STORAGE_ENGINE=1  安装memory存储引擎

-DWITH_READLINE=1    支持readline库

-DENABLED_LOCAL_INFILE=1   启用加载本地数据

-DMYSQL_USER=mysql  指定mysql运行用户

-DMYSQL_TCP_PORT=3306 指定mysql端口



 make

 make install


make clean 

rm CMakeCache.txt

#如果报错,清除缓存,请使用以上命令


cd /usr/local/mysql/

chown -R mysql .

chgrp -R mysql .

#修改mysql目录权限

/usr/local/mysql/scripts/mysql_install_db --user=mysql

#创建数据库授权表,初始化数据库

chown -R root .

chown -R mysql data

#修改mysql目录权限


cp support-files/my-medium.cnf /etc/my.cnf

#复制mysql配置文件


启动MySQL服务:

1.用原本源代码的方式去使用和启动mysql

/usr/local/mysql/bin/mysqld_safe --user=mysql &

2.重启以后还要生效:

vi /etc/rc.local

/usr/local/mysql/bin/mysqld_safe --user=mysql &

3.设定mysql密码

/usr/local/mysql/bin/mysqladmin -u root password 123

清空历史命令 history  -c

* 给mysql用户root加密码123

* 注意密码不能写成 “123”

 /usr/local/mysql/bin/mysql -u root -p 

mysql>show databases;

mysql>use test;

mysql>show tables;

mysql>\s #查看字 符集是否改为utf8

* 进入mysql以后用set来改密码

 mysql> exit

 * 登录MySQL客户端控制台设置指定root密码

 

 # 安装PHP

编译前确保系统已经安装了libtool和libtool-ltdl软件包,安装:

yum -y install “libtool*”

yum -y install “libtool-ltdl*”


vi /usr/local/gd2/include/gd_io.h

typedef struct gdIOCtx

{

……

void (*data);

#加入此句

}

#php 5.4 的bug,检测gd库有问题,需要手工修改


cd /test/php-5.4.25

./configure --prefix=/usr/local/php/ --with-config-file-path=/usr/local/php/etc/ --with-apxs2=/usr/local/apache2/bin/apxs --with-mysql=/usr/local/mysql/ --with-libxml-dir=/usr/local/libxml2/ --with-jpeg-dir=/usr/local/jpeg6/ --with-png-dir=/usr/local/libpng/ --with-freetype-dir=/usr/local/freetype/ --with-gd=/usr/local/gd2/ --with-mcrypt=/usr/local/libmcrypt/ --with-mysqli=/usr/local/mysql/bin/mysql_config --enable-soap --enable-mbstring=all --enable-sockets  --with-pdo-mysql=/usr/local/mysql --without-pear

若前面配置zlib时没有指定安装目录,PHP配置时不要添加--with-zlib-dir=/usr/local/zlib/参数

选项:

--with-config-file-path=/usr/local/php/etc/ 指定配置文件目录

--with-apxs2=/usr/local/apache2/bin/apxs 指定apache动态模块位置

--with-mysql=/usr/local/mysql/ 指定mysql位置

--with-libxml-dir=/usr/local/libxml2/ 指定libxml位置

--with-jpeg-dir=/usr/local/jpeg6/ 指定jpeg位置

--with-png-dir=/usr/local/libpng/ 指定libpng位置

--with-freetype-dir=/usr/local/freetype/ 指定freetype位置

--with-gd=/usr/local/gd2/ 指定gd位置

--with-mcrypt=/usr/local/libmcrypt/ 指定libmcrypt位置

--with-mysqli=/usr/local/mysql/bin/mysql_config 指定mysqli位置

--enable-soap 支持soap服务

--enable-mbstring=all 支持多字节,字符串

--enable-sockets 支持套接字

--with-pdo-mysql=/usr/local/mysql 启用mysql的pdo模块支持

--without-pear 不安装pear(安装pear需要连接互联网。 PEAR是PHP扩展与应用库)

make

 make install


生成php.ini

cp /test/php-5.4.25/php.ini-production /usr/local/php/etc/php.ini


测试Apache与PHP的连通性,看Apache是否能解析php文件

vi /usr/local/apache2/etc/httpd.conf

 AddType application/x-httpd-php .php .phtml .phps 

(注意大小写)

 * .phtml为将.phps做为PHP源文件进行语法高亮显示

 重启Apache服务:/usr/local/apache2/bin/apachectl stop

  /usr/local/apache2/bin/apachectl start


* Apache无法启动,提示cannot restore segment prot after reloc: Permission denied错误,为SELinux问题,可关闭SELinux或者执行命令chcon -t texrel_shlib_t /usr/local/apache2/modules/libphp5.so   

测试:vi /usr/local/apache2/htdocs/test.php    

  <?php

phpinfo();

 ?>

通过浏览器输入地址访问:http://Apache服务器地址/test.php 

Rpm包安装的网页默认目录 /var/www/html/

* 有时第一次浏览器测试会失败,关闭浏览器重启再尝试即可,非编译错误


# 编译安装memcache

Memcache是一个高性能的分布式的内存对象缓存系统,通过在内存里维护一个统一的巨大的hash表,它能够用来存储各种格式的数据,包括图像视频文件以及数据库检索的结果等。简单的说就是将数据调用到内存中,然后从内存中读取,从而大大提高读取速度。


yum -y install zlib-devel

cd memcache-3.0.8 

/usr/local/php/bin/phpize

./configure --with-php-config=/usr/local/php/bin/php-config

make && make install



# 编译安装mcrypt

cd /test/php-5.4.25/ext/mcrypt/

/usr/local/php/bin/phpize

./configure --with-php-config=/usr/local/php/bin/php-config --with-mcrypt=/usr/local/libmcrypt/


make

make install

#php安装完成后,通过这些命令安装mcrypt模块




修改/usr/local/php/etc/php.ini

extension_dir = "/usr/local/php/lib/php/extensions/no-debug-zts-20100525/"

#打开注释,并修改

extension="memcache.so";

extension="mcrypt.so";

#添加

#重启apache,在phpinfo中可以找到这两个模块



# 安装memcache源代码

首先安装依赖包libevent

yum -y install “libevent*”

#在CentOS 6.3第二张光盘中,请换盘


cd /test/memcached-1.4.17

./configure --prefix=/usr/local/memcache

make && make install


useradd memcache

#添加memcache用户,此用户不用登录,不设置密码

/usr/local/memcache/bin/memcached -umemcache &    

netstat an | grep :11211

telnet 192.168.10.1 11211

stats

写入自启动:

vi /etc/rc.d/rc.local

/usr/local/memcache/bin/memcached -umemcache &


# 安装phpMyAdmin

cp -r phpMyAdmin-4.1.4-all-languages /usr/local/apache2/htdocs/phpmyadmin

cd /usr/local/apache2/htdocs/phpmyadmin

cp config.sample.inc.php config.inc.php

vi config.inc.php

$cfg['Servers'][$i]['auth_type'] = 'cookie';

$cfg['Servers'][$i]['auth_type'] = 'http';

* 设置auth_type为http ,即设置为HTTP身份认证模式

通过浏览器输入地址访问:http://Apache服务器地址/phpmyadmin/index.php

用户名为root ,密码为MySQL设置时指定的root密码(lampbrother)



安装过程中大多错误其实为输入错误,可以通过history命令查看历史记录检查。


GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY '123' WITH GRANT OPTION;

sql语句,不是linux命令





第七天  Aphache服务器


简介


1 www:world  wide  web 万维网


http 协议: 超文本传输协议


HTML语言: 超文本标识语言


2 URL:统一资源定位 协议+域名:端口+网页文件名

http://www.sina.com.cn:80/11/index.html

www.sina.com.cn


3 搭建www的服务器的方法

windows  IIS + asp + SQLserver

Internet  Information  server

Linux apache + mysql + php 同步   并发量开到2048为合适. 

再大就需要观察调试,. 

nginx + mysql + php 异步 并发量可以开到5W. 

并发连接数量:可以简单的看成是同时访问网站的数量.


安装

1、lamp源码安装 Lamp因为是给客户端用的服务器环境. 所以一定要用源码包. 

2、rpm包安装 现实中根本不用rpm包. 

httpd

mysql

mysql-server

php

php-devel

php-mysql


相关文件


apache配置文件

源码包安装: /usr/lcoal/apache2/etc/httpd.conf 主配置文件. 

  /usr/local/apache/etc/extra/*.conf 扩展配置文件. 

源码包有主配置文件和扩展配置文件. 

  

rpm包安装: /etc/httpd/conf/httpd.conf


默认网页保存位置:

源码包: /usr/local/apache2/htdocs/

rpm包安装: /var/www/html/


日志保存位置

源码包: /usr/local/apache2/logs/

rpm包: /var/log/httpd/


配置文件

输入 vi /usr/lcoal/apache2/etc/httpd.conf 进入主配置文件. 

很多注释. (行首带#). 下面这些绿色的文字是不带注释的. 都是起作用的语句. 

注意:apache配置文件严格区分大小写


1 针对主机环境的基本配置


ServerRoot apache主目录

ServerRoot "/usr/local/apache2/"

服务器的主目录. 其他扩展配置文件的路径都 是相对于这个路径的. 

不要改这个路径, 因为改的话, 还需要改很多的路径. 


Listen 监听端口

Listen 80

默认开的就是这个80端口. 

最好不要改这个端口, 如果改了, 输入网站的时候, 在IP后面还要加 上:端口号. 做网站的目的就失去了意义.


LoadModule 加载的相关模块

LoadModule authn_file_module modules/mod_authn_file.so

php安装完之后, 就相当于模块. 


User 伪用户

Group 用户和组

User daemon

Group daemon

如果对目录的权限不足, 就需要给目录加写目录, 不能用chmod 777, 

要用这个, 把拥有者换成 daemon . 例如有个目录 cc. 要给这个cc目 录写权限. 用这个命令. chmown daemon cc

所有通过浏览器可以访问的目录, 都要设置daemon权限. 


ServerAdmin 管理员邮箱

ServerAdmin  you@example.com

Apache出现任何问题. 都会发到这个邮箱里, 问题是, 都是英文. 


ServerName 服务器名(没有域名解析时,使用临时解析。不开启)


ErrorLog "logs/error_log 错误日志

ErrorLog "logs/error_log"


LogLevel warn 日志等级

日志等级分为:

debug, info, notice, warn, error, crit,alert, emerg.

Debug最低, emerg 最高. 等级越低越详细. 默认是 warn. 


CustomLog "logs/access_log" common 正确访问日志


DirectoryIndex index.html index.php 默认网页文件名,优先级顺序

<IfModule dir_module>    

 DirectoryIndex index.html

</IfModule>

默认的网页文件. 如果有多个, 如:还有一个 index.php 也想加进去. 可以放到后面, 用空格分开. 但是是有优先级的. 前面的优先级高


Include  etc/extra/httpd-vhosts.conf 子配置文件中内容也会加载生效


2 主页目录及权限


DocumentRoot "/usr/local/apache2//htdocs"

主页目录

放网页文件的目录. 可以改, 但是要和下面的一起改. 

<Directory "/usr/local/apache2//htdocs">

#Directory关键字定义目录权限


Options Indexes FollowSymLinks

#options 

None:没有任何额外权限

All:所有权限

Indexes:浏览权限(当此目录下没有默认网页文件时,显示目录内容)

FollowSymLinks:准许软连接到其他目录

AllowOverride None

#定义是否允许目录下.htaccess文件中的权限生效

是隐藏文件, 要放在主页目录中, 即DocumentRoot目录中.

None:.htaccess中权限不生效

All:文件中所有权限都生效

AuthConfig:文件中,只有网页认证的权限生效。


Require all granted 访问控制列表

可以理解为简单的防火墙. 防火墙的功能是数据包过滤. 

例子4 和 例子5 是拒绝和允许所有IP, 不需要封装, 

但是, 如果拒绝或者允许某个IP, 需要封装. (标签对).

现实中, 一般不用它. 是用防火墙. 

这个可以封IP, 在没有防火墙的情况下, 可以用这个. 


    </Directory>


#定义此目录的允许访问权限

例1: 仅允许IP为192.168.1.1的主机访问

<RequireAll> 

      Require all  granted 

      Require ip 192.168.1.1 

</RequireAll> 


例子2.仅允许192.168.0.0/24网络的主机访问

<RequireAll>  

      Require all  granted  

      Require ip 192.168.1.0/24 

代表一个网段. 24的意思是:11111111,11111111,11111111,00000000

也就是255.255.255.0     

192.168.1.0/24的意思就是: 192.168.1.0 到 255.255.255.0之前的IP. 

</RequireAll>  


例子3.禁止192.168.1.2的主机访问,其他的都允许访问,

<RequireAll> 

      Require all  granted 

      Require not ip 192.168.1.2 

</RequireAll> 


例子4.允许所有访问,

Require all  granted

#可以不写在<RequireAll>。。。</RequireAll>中


例子5.拒绝所有访问,

Require all  denied

#可以不写在<RequireAll>。。。</RequireAll>中



3 目录别名


子配置文件名 etc/extra/httpd-autoindex.conf

需要在主配置文件中找到 #Include etc//extra/httpd-autoindex.conf

把前面的#去掉,就是去掉注释, 就起作用了

目录别名的作用: 让网页文件不用必须放到网页目录下, 而是可以放到任意的 目录当中. 


所有通过浏览器可以访问的目录, 都要daemon权限.


Alias /icons/ "/usr/local/apache2//icons/"

    apache以为在这里 实际目录位置

定义别名  /icons/----

http://192.168.1.253/icons/


<Directory "/usr/local/apache2//icons">

    Options Indexes MultiViews MultiViews多编码支持

    AllowOverride None

    Require all granted 

</Directory>


4 用户认证

限制特定目录,只有指定用户可以访问。

需要的用户都是由root通过linux命令加进去的. 而且不能注册, 适合公司内部用. 


1) 建立需要保护的目录


①在/usr/local/apache2/htdocs/11下建立目录,然后保护


②使用别名,在系统位置建立目录,然后保护


mkdir  -p  /share/soft


2)修改配置文件,允许权限文件生效

vi  /usr/local/apache2/etc/httpd.conf

Alias /soft/ "/share/soft/"


<Directory "/share/soft">

    Options Indexes 

    AllowOverride All #开启权限认证文件.htaccess

    Require all granted 

</Directory>


重启apache


3)在指定目录建立权限文件 默认是不存在的, 需要手工建立. 

cd  /share/soft


vi  .htaccess #不区分大小写

AuthName "50 docs"

#提示信息 在输入账号和密码的时候会出现提示信息. 

AuthType basic

#加密类型   能用的加密方式就这一种: basic

AuthUserFile /share/apache.passwd

#密码文件,文件名自定义。

require valid-user

#允许密码文件中所有用户访问


4)建立密码文件,加入允许访问的用户。用户和系统用户无关

/usr/local/apache2/bin/htpasswd  -c  /share/apache.passwd  test1

-c  建立密码文件,只有添加第一个用户时,才能-c

回车后要求输入密码

/usr/local/apache2/bin/htpasswd  -m  /share/apache.passwd  test2

-m  再添加更多用户时,


5 虚拟主机


xeon  *2


开启了虚拟主机, 默认的网页目录就不能访问了. 因为虚拟主机的优先级更高. 

是给虚拟主机分了目录, 和网页目录是平级的. 

1)分类

基于IP的虚拟主机: 一台服务器,多个IP,搭建多个网站

基于端口的虚拟主机 一台服务器,一个ip,搭建多个网站,每个网络使用不同端 口访问

基于名字的虚拟主机 一台服务器,一个ip,搭建多个网站,每个网站使用不同域 名访问


2)步骤:

解析试验域名

www.sina.com

www.sohu.com

C:\WINDOWS\system32\drivers\etc\hosts windows

/etc/hosts Linux



规划网站主目录

/share/sina--------------www.sina.com

/share/sohu ------------ www.sohu.com


修改配置文件

vi  /usr/local/apache2/etc/httpd.conf

进入主配置文件, 找到下面这句话.

Include etc//extra/httpd-vhosts.conf

#打开虚拟主机配置文件

把前面的#去掉, 就是取消注释. 默认是带#.

vi /usr/local/apache2/etc/extra/httpd-vhosts.conf

进入扩展配置文件. 

 


<Directory "/usr/local/apache2/htdocs/sina"> 给目录设置权限. 

    Options Indexes

    AllowOverride None

Require all granted 

</Directory>


<Directory "/usr/local/apache2/htdocs/sohu"> 给目录设置权限. 

    Options Indexes

    AllowOverride None

    Require all granted 

</Directory>


<VirtualHost 192.168.150.253>

#注意,只能写ip

    ServerAdmin webmaster@sina.com

#管理员邮箱

    DocumentRoot "/usr/local/apache2/htdocs/sina"

#网站主目录

    ServerName www.sina.com

#完整域名

    ErrorLog "logs/sina-error_log"

#错误日志

    CustomLog "logs/sina-access_log" common

#访问日志

</VirtualHost>


<VirtualHost 192.168.150.253>

    ServerAdmin webmaster@sohu.com

    DocumentRoot "/usr/local/apache2/htdocs/sohu"

    ServerName www.sohu.com

    ErrorLog "logs/sohu.com-error_log"

    CustomLog "logs/sohu.com-access_log" common

</VirtualHost>


6 rewrite 重写功能


在URL中输入一个地址,会自动跳转为另一个


1)域名跳转 www.sina.com  ------>  www.sohu.com


开启虚拟主机,并正常访问 


vi /usr/local/apache2/etc/httpd.conf

进入主配置文件. 找到下面这句话. 

LoadModule rewrite_module modules/mod_rewrite.so

#打开重写模块,记得重启apache

默认前面是有#, 是注释, 把#删掉. 


修改配置文件,使sina目录的。htaccess文件生效


[root@localhost etc]# vi extra/httpd-vhosts.conf


<Directory "/usr/local/apache2/htdocs/sina">

    Options Indexes FollowSymLinks 代表新浪同意跳转. 

    AllowOverride All

Require all granted 

</Directory>


vi  /usr/local/apache2/htdocs/sina/.htaccess

RewriteEngine on

#开启rewrite功能

RewriteCond %{HTTP_HOST} www.sina.com

把以www.sina.com 开头的内容赋值给HTTP_HOST变量

只有开启域名跳转的时候需要这句话, 文件跳转不需要. 

RewriteRule  .*   http://www.sohu.com

.*  输入任何地址,都跳转到http://www.sohu.com



静态网页向动态网页跳转

文件跳转, 在URL中是看不到变化的. 

修改配置文件

<Directory "/usr/local/apache2/htdocs/sohu">

    Options Indexes FollowSymLinks

    AllowOverride All

    Require all granted 

</Directory>



vi  /usr/local/apache2/htdocs/sohu/.htaccess

RewriteEngine on


RewriteRule index(\d+).html index.php?id=$1

# 输入index(数值).html时,跳转到index.php文件,同时把数值当成变量传入index.php




7 常用子配置文件

所有的扩展配置文件都需要在主配置文件中开启. 默认都是不关闭的. 


httpd-autoindex.conf apache系统别名


httpd-default.conf 线程控制 *

Timeout 60 超时时间. 

KeepAlive On 意思是: 一个用户在打开网页是, 右打开了一个新的连接, 

就会占用2个进程. 开启这个, 就会只占用一个进程. 另一个用子进程打开, 就是线程打开


httpd-info.conf 状态统计网页


httpd-languages.conf 语言编码 *

打开这个配置文件, 就是多语言支持. 但是还需要装字典. 编码等. 


httpd-manual.conf apache帮助文档


httpd-mpm.conf 最大连接数 *

MaxRequestWorkers      250 (默认worker MPM模块生效)

就是最大的并发数量. 


httpd-multilang-errordoc.conf 错页面 *

这个有BUG. 不能用. 


httpd-ssl.conf ssl安全套接字访问


httpd-userdir.conf 用户主目录配置


httpd-vhosts.conf 虚拟主机


浏览器报错: 403是权限拒绝

404是文件不存在





常用文件名和配置文件目录



系统运行级别文件 /etc/inittab (init的配置文件)

环境变量配置文件 ~/.bashrc

开机自启动配置文件 /etc/rc.local(软连接---/etc/rc.d/rc.local)

vim配置文件 ~/.vimrc (需要手动创建)

用户信息文件 /etc/passwd

影子文件 /etc/shadow

组信息文件 /etc/group

通过RPM包安装的服务所在目录 一般在/etc/rc.d/init.d

通过源码包安装的apache服务 /usr/local/apache2/bin/apachectl

系统启动日志文件 /var/log/dmesg  

网卡信息文件 /etc/sysconfig/network-scripts/ifcfg-eth0

主机名配置文件 /etc/sysconfig/network

DNS配置文件 /etc/resolv.conf

ftp普通用户上传位置 /home/用户名

ftp匿名用户上传位置 /var/ftp/

ftp配置文件 /etc/vsftpd/vsftpd.conf

用户访问控制文件(访问黑名单) /etc/vsftpd/ftpusers

可以跳出家目录文件(目录文件白名单) /etc/vsftpd/chroot_list

SSH配置文件 /etc/ssh/sshd_config

服务的绝对路径 /etc/rc.d/init.d/

所有系统常见端口 /etc/services/

完整防护配置文件(限制root权限) /etc/selinux/config

rpm网页位置 /var/www/html

源码包的网页位置 /usr/local/apache2/htdocs

系统日志位置 /var/log

系统默认邮箱位置 /var/spool/mail/

默认安装的mysql的库文件目录 /var/lib/mysql/





查询命令:

w

[root@localhost yum]# w

 06:04:48 up  2:19,  1 user,  load average: 0.00, 0.00, 0.00

USER   TTY      FROM        LOGIN@  IDLE    JCPU   PCPU WHAT

root    pts/0    192.168.106.26   03:46    0.00s  0.17s  0.01s w


who

[root@localhost yum]# who

root     pts/0        2015-05-28 03:46 (192.168.106.26)


whoami

[root@localhost yum]# whoami

root


runlevel 查询系统运行级别

[root@localhost ~]# runlevel

N 3


/etc/services linux的所有端口文件. 可以用cat  vi  more  等查看. 






关机命令:

shutdown -h now

init 0


重启命令:

reboot

init 6



service, chkconfig , ntsysv  都只能管理rpm包安装的服务. 

而不能管理源码包安装的服务. 

Service, setup , ntsysv 是 redhat 专有的命令. 

©️2020 CSDN 皮肤主题: 大白 设计师: CSDN官方博客 返回首页
实付0元
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值