目录
第一天 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地址配置:
1、setup 进入配置选项
2、vi /etc/sysconfig/network-scripts/ifcfg-eth0 设置网卡启动
ONBOOT=no 改为 ONBOOT=yes
3、service network restart 重启网络服务
4、修改虚拟机为桥接(以下步骤,只对虚拟机生效)
5、虚拟机桥接到有线网卡
编辑----虚拟网络编辑器----桥接到有线网卡(没有wireless的网卡)
6、修改UUID冲突(此步骤,只针对复制镜像生效)
1)vi /etc/sysconfig/network-scripts/ifcfg-eth0
删除MAC地址行
2)rm -rf /etc/udev/rules.d/70-persistent-net.rules
删除网卡和MAC地址绑定文件
3)重启动系统
7、service 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
源码包:
安装之前的一些事情
源码包哪里来? ---官方网站下载的
在同一个系统中,是否可以安装RPM包apache,再装源码包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.
rpm包apache 如何启动
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 [email protected]:/root/abc /root
scp -r [email protected]:/root/11 /root 下载目录
2 上传
scp 本地文件或目录 用户名@ip:路径
scp -r /root/11 [email protected]:/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++,XSH。C#, Python,Kylix/Delphi,Ruby,和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
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 [email protected]
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 默认网页文件名,优先级顺序
DirectoryIndex index.html
默认的网页文件. 如果有多个, 如:还有一个 index.php 也想加进去. 可以放到后面, 用空格分开. 但是是有优先级的. 前面的优先级高
Include etc/extra/httpd-vhosts.conf 子配置文件中内容也会加载生效
2 主页目录及权限
DocumentRoot "/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, 在没有防火墙的情况下, 可以用这个.
#定义此目录的允许访问权限
例1: 仅允许IP为192.168.1.1的主机访问
Require all granted
Require ip 192.168.1.1
例子2.仅允许192.168.0.0/24网络的主机访问
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.
例子3.禁止192.168.1.2的主机访问,其他的都允许访问,
Require all granted
Require not ip 192.168.1.2
例子4.允许所有访问,
Require all granted
#可以不写在
例子5.拒绝所有访问,
Require all denied
#可以不写在
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/
Options Indexes MultiViews MultiViews多编码支持
AllowOverride None
Require all granted
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/"
Options Indexes
AllowOverride All #开启权限认证文件.htaccess
Require all granted
重启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
进入扩展配置文件.
Options Indexes
AllowOverride None
Require all granted
Options Indexes
AllowOverride None
Require all granted
#注意,只能写ip
ServerAdmin [email protected]
#管理员邮箱
DocumentRoot "/usr/local/apache2/htdocs/sina"
#网站主目录
ServerName www.sina.com
#完整域名
ErrorLog "logs/sina-error_log"
#错误日志
CustomLog "logs/sina-access_log" common
#访问日志
ServerAdmin [email protected]
DocumentRoot "/usr/local/apache2/htdocs/sohu"
ServerName www.sohu.com
ErrorLog "logs/sohu.com-error_log"
CustomLog "logs/sohu.com-access_log" common
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
Options Indexes FollowSymLinks 代表新浪同意跳转.
AllowOverride All
Require all granted
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中是看不到变化的.
修改配置文件
Options Indexes FollowSymLinks
AllowOverride All
Require all granted
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 专有的命令.