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 专有的命令. 

  • 1
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值