尚观电子商务学习笔记汇总

时间:2024.4.30

课程大纲:

1、虚拟机软件及操作系统安装

2、桌面环境介绍

3、相关工具安装

关机重启命令:必须是管理员才能执行(root)#

shutdown -h now ——马上关机

shutdown -h 60 ——1小时之后关机

halt 马上关机

poweroff 马上关机 比较暴力

init 0 ——马上关机

reboot ——马上重启

shutdown -r now

shutdown -r 60 ——1小时后重启

init 6 马上重启

操作系统运行级别:

# runlevel

N 5

/etc/inittab ——定义了系统的运行级别

Default runlevel. The runlevels used are:

# 0 - halt (Do NOT set initdefault to this) 关机

# 1 - Single user mode 单用户模式

# 2 - Multiuser, without NFS (The same as 3, if you do not have networking) 多用户,无网络

# 3 - Full multiuser mode 命令行模式,字符界面 ,多用户

# 4 - unused 保留

# 5 - X11 图形化界面

# 6 - reboot (Do NOT set initdefault to this) ——重启

id:5:initdefault: 定义系统开机直接启动到图形化界面

问题:

图形界面切换字符界面:

5——3 init 3

3——5 init 5或者startx

图形化桌面:

gnome (默认) kde桌面

图形化界面的一些组件:

nautilus ——文件管理器 nautilus /home

gedit ——文件编辑器 vim/vi

firefox +网址 ——网页浏览器

gnome-calculator ——计算器

切换用户

#su - mor 切换到普通用户(root——mor)

$su - root

$ su - redhat

Password:

给用户设置密码

# passwd +用户名 修改用户密码

$ passwd ——密码必须符合安全规范才能设置成功

单用户模式下修改root密码

重启系统——出现进度条——按“ESC”——菜单,按“E”——3个菜单,上下箭头移动到kerner——按“E”——按空格 输入1或者s或者single——回车——按“b” 重启引导系统 #passwd 修改密码

#reboot 重启系统

vmware tools 安装工具

#cd /media/VMware\ Tools/

# cp VMwareTools-8.8.2-590212.tar.gz /home/

#tar -xzvf VMwareTools-8.8.2-590212.tar.gz

# cd vmware-tools-distrib/

# ./vmware-install.pl 执行安装脚本

一路回车

#

# mount -t vmhgfs :host:/ /mnt/hgfs 万不得已

挂载物理机下面的iso镜像文件

# mkdir /u01 创建挂载点

#mount /mnt/hgfs/soft/rhel-server-6.5-x86_64-dvd.iso /u01 -o loop 挂载iso镜像文件到虚拟机

# df -h

[root@mor ~]# df -h

Filesystem Size Used

.host:/ 326G 158G 168G 49% /mnt/hgfs /dev/sr0 61M 61M 0 100% /media/VMware Tools

/mnt/hgfs/soft/rhel-server-6.5-x86_64-dvd.iso 3.6G 3.6G 0 100% /u01

#cd /u01/Packages

# ls ibus*

#rpm -ivh ibus-* 安装中文输入法

day02

课程大纲

1、bash shell及linux文件系统

2、基本命令使用

linux由什么组成:

内核、shell、文件系统、应用程序

内核:

驱动硬件的,它是一个操作系统最底层的东西。介于硬件与操作系统之间的桥梁。

shell:

一个程序,一个命令解释器。介于内核与用户之间的桥梁。

应用程序:

实际上是存储在电脑上的一个文件,用户使用电脑来完成某个任务,实际上是运行某个程序。 进程:

运行中的程序。

文件系统:

文件存放在磁盘上的一种组织方法。 redhat 6 ext4

linux的目录组织结构

/(根) 老大哥

|

————————————————————————————————————————————

| | |

/bin /sbin /usr /etc /boot /home /root

/tmp /dev /media /mnt /lib /proc /var

/ ——根,逻辑上系统中所有的一切都属于它

/bin ——存放系统自带的普通用户能够执行的二进制命令

/sbin ——存放系统自带的管理员才能够执行二进制命令

/usr ——存放第三方软件及公共配置

/etc ——存放系统及服务的配置文件

/boot ——存放系统引导的一些文件

/home ——普通用户的家目录

/root ——管理员的家目录

/tmp ——临时目录,系统产生的临时文件

/dev ——存放设备文件

/media /mnt ——外接设备的挂载点

/lib ——库文件

/proc ——存放进程相关的信息

/var ——存放变化的数据,日志文件 /var/log/messages(操作系统的日志文件)

补充一些重要的目录:

/etc/init.d ——存放的是系统或服务的启动脚本

/etc/X11 ——存放跟图形界面有关的

/usr/local ——存放用户自编译安装软件的目录

/usr/share ——存放系统公用的东西

/usr/src ——这个是内核存放的地方

/var/log ——存放系统、服务日志相关的

/var/spool ——存放打印机、邮件、代理服务

路径的表示方法:

绝对路径:一定是以“/”根(开头),唯一一个绝对能够描述对象所在的路径。

相对路径:路径是相对的,对象是以当前工作路径而言的。

.或者./ 代表当前目录

.. 代表当前目录的上一级目录

~ 当前用户的家目录

pwd 查看当前工作路径

思考:以下命令列出的是哪个目录的内容?这种路径表示方式是?

ls /usr/local/bin/../../share/man

基本命令

内部命令:shell程序本身集成了的命令,即bash软件自带的。

# type echo

echo is a shell builtin

外部命令:shell程序本身没有,需要执行其他程序才能实现,这些被执行的程序就是外部命令。 # type shutdown

shutdown is /sbin/shutdown

type +命令 区别命令是内部的还是外部

file + 文件 判断文件是什么类型的

# file /dev/sda1

/dev/sda1: block special 块设备

# whatis +命令 查看命令的解释

# whatis ls

ls (1) - list directory contents

ls (1p) - list directory contents

pwd 查看当前工作路径

cd ——更改工作路径

cd . ——回到当前目录

cd .. ——回到上一级目录

cd ~ ——回到当前用户的家目录

cd +回车 ——回到当前用户家目录

cd - ——回到上一次所在的目录

ls 列出文件或目录下面的内容

-a 列出文件或目录下面的所有内容(隐藏文件)

-l 长列出 ls -l =ll

-rw-------. 1 root root 2335 Aug 5 09:00 anaconda-ks.cfg

drwxr-xr-x. 2 root root 4096 Aug 6 01:03 Desktop

drwxr-xr-x. 2 root root 4096 Aug 5 01:06 Documents

drwxr-xr-x. 2 root root 4096 Aug 5 01:06 Downloads

文件分类

- 代表普通文件

d 代表目录

b 代表块设备文件

p 管道文件

s socket套接字文件

l 字符链接文件

c 字符设备

-h 显示文件大小

-t 以时间排序(默认以降序排列)

-tr 以升序时间排序

-m 以逗号形式分割开

touch 创建文件,更改文件时间戳

目标文件不存在:

touch +filename 创建一个新的空文件

touch file{1..10} 批量创建10个空文件

touch "a\b\c" 引号:创建有特殊字符的文件名

目标文件存在:

touch +file(已经存在)修改文件的时间戳

# touch -a filename -t 202012121111 修改filename的访问时间

# touch -m filename -t 202012121111 修改文件的更改时间

# touch -d 20120808 filename 修改文件日期

# touch -d 1111 filename 修改文件的时间

# stat filename 查看文件的时间戳

练习:

1、在你的home目录下面创建5个以file开头,以.jpg结尾的图片文件

2、创建一个文件名叫Upl.\Mor.. 的普通文件,并且修改它的访问时间为20xx年的7月8号上午10:10分

通配符:

1、一切皆文件。

2、文件的最大长度不能超过255个字符。

3、尽量避免使用特殊字符(*、?、[])『大小写字母、数字、- 』足够我们命名

4、一定不能使用"/"

* 匹配0或者多个任意字符

? 匹配单个字符

[] 匹配一组单个字符

rm 删除文件或目录

-i 提示是否删除

-r 递归删除

-f 强制删除

rmdir 删除一个空目录

mkdir +目录名 创建一个目录

-p 创建多级目录

mkdir /home/uplook/abc/test/aoe -p

mv 移动,重命名

mv file1 /home/test 将file1文件移动到/home/test

mv file1 /home/test/test2 将file1文件移动到/home/test并且重命名成test2 mv file1 file2 将file1文件重命名成file2

cp 拷贝

-a 文件的所有属性一起拷贝过来

-r 递归拷贝(拷贝目录)

scp 远程拷贝

# scp oracle@172.16.2.232:/root/ks.cfg ./ks.cfg.bak2 以oracle用户拷贝 # scp 172.16.2.232:/root/ks.cfg ./ks.cfg.bak2 默认是以当前用户身份拷贝

alias 定义别名

临时生效:

alias aa='ls'

unalias aa 取消别名

永久生效:

vim .bashrc 环境变量

# . .bashrc 让环境变量生效

history 查看历史记录

history -w 保存历史记录到默认文件中(.bash_history)

history -c 清空历史记录

day03

1、基本命令2

2、简单的网络配置

bash的标准输入输出

标准输入(键盘) ——字符描述符(0)

标准输出(屏幕上输出的正确结果) ——字符描述符(1)

标准错误 (屏幕上输出的错误结果) ——字符表述符(2)

eg:

[root@vm1 Desktop]# ll

total 8

-rw-r--r-- 1 root root 1258 Aug 11 20:32 ks.cfg

-rw-r--r-- 1 root root 1258 Aug 11 20:35 ks.cfg.bak

[root@vm1 Desktop]# ee

bash: ee: command not found

[root@vm1 Desktop]# echo $?

127 ————非零,表示有意外发生

[root@vm1 Desktop]# ls /etc/fstab

/etc/fstab

[root@vm1 Desktop]# echo $?

0 ——表示正确的执行结果

重定向:

作用:把输出的内容重定向到某个文件中。

>、1> 表示标准正确重定向

2> 表示标准错误重定向

&> 表示标准正确、标准错误重定向

>> 表示追加

< 表示输入

> filename 2>&1 表示标准错误输出重定向到标准正确输出(将标准正确、标准错误重定向到文件filename)

demo:

# ./test.sh

Tue Aug 11 23:23:53 PDT 2015

./test.sh: line 2: uu: command not found

标准正确重定向

# ./test.sh >/tmp/file1.log

./test.sh: line 2: uu: command not found

标准错误重定向

# ./test.sh 2>/tmp/file2.log

Tue Aug 11 23:27:08 PDT 2015

标准错误、正确重定向

# ./test.sh &>/tmp/file1.log

补充:

[root@vm1 ~]# ./test.sh 1> /dev/null 2>/dev/null

[root@vm1 ~]# ./test.sh >/dev/null 2>&1

[root@vm1 ~]# ./test.sh 2>/dev/null 1>&2

练习:

1、编写一个脚本

vim test.sh

date

yy

按esc——输入:wq

chmod a+x test.sh

2、执行脚本(./test.sh),并且把正确输出结果重定向到/home下面的zs.log,把错误的结果重定向到/tmp/file.log

3、把刚刚正确的输出结果远程拷贝到192.168.1.110:/tmp/test

redhat/redhat

echo 输出

将输入的字符串送往标准输出。

-n 不输出最后的换行符

-e 解释转义字符(\n 换行 \t 插入tab键)

#echo -e "a\nb\nc"

a

b

c

# echo -e "a\tb\tc"

a b c

-E 不解释转义字符

echo xxx >filename

demo:

# echo hello >hd.file 如果目标文件不存在,那么新建文件并输入内容。如果目标文件存在,覆盖原来文件

# cat hd.file

hello

# echo uplooking >> hd.file 追加到文件里去用">>"

# cat hd.file

hello

uplooking

查看文件的一些命令

cat file 查看小文件

tac file 文件内容从最后一行到第一行列出来

more/less file 查看打文件 q退出查看

tail file 专门看文件的后10行 -f 动态查看

head file 查看文件的前10行 -n 20

ldd 查看特殊文件 一般是二进制文件

cat

< 输入

需求:

将/etc/inittab内容输入到/tmp/inittab.bak

# cat < /etc/inittab > /tmp/inittab.bak

# cat /etc/passwd>/tmp/file1

# cat hd.file1 目标文件不存在

输入文件内容

ctrl+D 结束输入

# cat ~/.bashrc >>/tmp/file1 往一个文件追加内容

# cat >hd.file2 << end 往文件里写东西,遇到end结束 > uuuuu

> ppppp

> ffffff

> end

[root@vm1 ~]#

补充:

# cat < /etc/fstab >file.test

[root@vm1 ~]# cat /etc/fstab >file.test

[root@vm1 ~]# cat >>file.test < /etc/inittab

[root@vm1 ~]# cat >> file.test << hd

练习:

1、将/etc/passwd 文件拷贝到/tmp下并重命名为passwd.bak

2、在/tmp/passwd.bak文件里追加“ ”

3、将/etc/fstab文件内容追加到/tmp/passwd.bak

4、echo 一个“hello haida” 到/tmp/passwd.bak文件末尾。

复习:

day04

1、简单的网络配置

2、其他命令

linux系统中,以太网卡“ethX”,eth0 代表第一块以太网卡。

跟网络相关的配置文件:

/etc/sysconfig/network-scripts/

全局配置文件(存放的网卡的配置信息,启动/关闭网卡的一些命令等)

/etc/sysconfig/network 定义服务器主机名和默认网关

/etc/resolv.conf DNS服务器

/etc/hosts 本地域名解析文件,优先于dns

配置静态ip:

关闭NetworkManager服务:

service NetworkManager stop 马上关闭

chkconfig NetworkManager off ——开机不自动启动

1、setup工具

2、修改配置文件

# vim /etc/sysconfig/network-scripts/ifcfg-eth0

DEVICE=eth0 ——网卡名字

BOOTPROTO=none ——dhcp自动获取,none(静态或自动获取),static(静态ip) HWADDR=00:0c:29:87:5c:6a ——mac地址

#IPV6INIT=yes

NM_CONTROLLED=no ——如果NetworkManager开启,此配置文件受其影响

ONBOOT=yes ——重启生效

TYPE=Ethernet ——网卡类型

#UUID="5c71d185-6086-41a1-9629-dc7a253e1f6e"

IPADDR=172.16.2.199 ——静态ip地址

NETMASK=255.255.255.0 ——子网掩码

GATEWAY=172.16.2.1 ——默认网关

DNS1=192.168.1.110 ——dns

USERCTL=no ——是否允许普通用户重启或关闭网卡

重启网络:

service network restart

修改主机名:

hostname 或者uname -n 查看主机名

hostanme +主机名 马上生效 需要推出终端重新登录才能看见

永久保存:

# vim /etc/sysconfig/network

NETWORKING=yes

HOSTNAME=

重启服务器生效

域名解析:

# vim /etc/hosts 本地域名解析

127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4 ::1 localhost localhost.localdomain localhost6 localhost6.localdomain6 192.168.1.109

192.168.1.110 demo.example

180.97.33.108

# vim /etc/resolv.conf dns解析

nameserver 192.168.1.110 指定一个dns服务器

补充:

临时关闭网卡

ifconfig eth0 down

开启网卡

ifconfig eth0 up 原来是什么,不变

ifup eth0 重启网卡,读取的是配置文件里的内容

ifdown eth0 关闭网卡

临时给网卡设备设置ip地址

# ifconfig eth0 10.12.1.122 netmask 255.255.255.0

给网卡配置子接口

# ifconfig eth0:0 10.12.1.110 netmask 255.255.255.0

ping 命令

# ping 192.168.1.110 以下情况是通的,tcp协议

PING 192.168.1.110 (192.168.1.110) 56(84) bytes of data.

64 bytes from 192.168.1.110: icmp_seq=1 ttl=64 time=0.047 ms

64 bytes from 192.168.1.110: icmp_seq=2 ttl=64 time=0.034 ms

ctrl+c结束

# ping

PING (192.168.1.81) 56(84) bytes of data.

64 bytes from (192.168.1.81): icmp_seq=1 ttl=64 time=0.167 ms 64 bytes from (192.168.1.81): icmp_seq=2 ttl=64 time=0.121 ms

linux下面怎么获取帮助:

帮助文档(help|man|info)

有问题找man

help 简约帮助(命令接参数)

man 详细的帮助文档 man page

info 软件的详细介绍(作者|怎么安装|历史介绍)

内部命令求助:

help +命令

# help echo

外部命令求助:

命令 --help

# shutdown --help

man man

MANUAL SECTIONS

The standard sections of the manual include:

1 User Commands 所有用户使用的命令

2 System Calls 系统调用相关

3 C Library Functions 函数库

4 Devices and Special Files 设备与特殊文件

5 File Formats and Conventions 文档格式说明

6 Games et. Al. 游戏相关

7 Miscellanea 杂项

8 System Administration tools and Deamons 系统管理员与程序用户相关的

demo:

man 1 ls

man 8 shutdown

# man -k passwd 以关键字打印出来man page

# man -f passwd 查找该命令所在的man page

doc 软件文档说明(/usr/share/doc|/usr/share/man)

# info /usr/share/doc/yum-3.2.29/INSTALL

总结:

遇到一个陌生命令怎么办?file——type——whatis——man——help——info——度娘/谷歌

时间与日期:

date 调用系统时间

date --help 寻求帮助

[root@hd ~]# date +%a

Thu

[root@hd ~]# date +%A

Thursday

[root@hd ~]# date +%F

2015-08-13

[root@hd ~]# date '+%Y-%m-%d'

2015-08-13

[root@hd ~]# date +%D

08/13/15

[root@hd ~]# date +%T

00:23:03

[root@hd ~]#

[root@hd ~]# date '+%Y%m%d %T'

20150813 00:23:57

[root@hd ~]# date '+%Y-%m-%d %T'

2015-08-13 00:24:09

[root@hd ~]# date '+%F %T'

2015-08-13 00:24:29

[root@hd ~]# date '+%D %T'

08/13/15 00:24:41

[root@hd ~]# date +%X

12:24:58 AM

时区:

GMT、UTC、PDT、CST

GMT:格林威治标准时间

UTC:世界标准时间

PDT:太平洋夏令时间,比UTC晚7个小时

CST:国家标准时间,同时可以表示美国、澳大利亚、中国、古巴四个国家的标准时间。 GMT+8=UTC+8=CST

修改操作系统时区:

#cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime

#date

Thu Aug 13 15:39:37 CST 2015

修改系统时间:

date -s 20110808

date -s 12:12

date -s '20110808 10:10'

date -s '2012-12-12 11:11'

date -s '12/12/12 10:10'

date -s '11:11 2012-11-11'

hwclock 查看硬件时钟

clock -w 将系统时间写入cmos

# ntpdate -u 192.168.1.110(时间同步服务器)

同步教师机时间:

# ntpdate -u 192.168.1.110 (6.4版本)

# ntpdate -u 192.168.1.109 (6.5版本)

cal 查看日历

cal 2015 查看20xx年日历

cal 10 2015 查看20xx年10月份的日历

cal 11 10 2015 查看20xx年10月11号的日历

思考:

创建一个带有系统日期的目录,如:201508

# mkdir $(date +%Y%m)

# touch $(date ++%Y%m%d --date =‘30 day ago’) 创建一个日期时间为30天以前的文件

文件查找命令

1、locate +filename 快速查找,速度块,但是不精确

updatedb 更新locate数据库

2、find 精确查找,从"/"一级一级查找,速度慢

命令格式:

find 路径 -选项 [-print] [-exec -ok command] {} \;

功能:

用于在文件树中查找文件,并做相应的处理。

相应的参数:

-print ——find命令将匹配到文件输出到标准输出

-exec ——find命令将匹配到文件执行该参数所给出的命令

-ok ——更安全的去执行命令,提示

{} \; ——执行命令后面必须的,{}和\之间必须有空格。

命令选项参数:

-name ——按找名字来查找

-perm ——按照权限来查找

-size ——按照文件大小来查找

-type ——按照文件类型来查找

-mtime -n +n ——按照文件的更改时间来查找,-n指的n天以内,+n指n天以前

-atime -n +n ——按照文件的访问时间来ll查找

-ctime -n +n ——按照文件的创建时间来查找

# find /etc/ -name *.conf -print 找出/etc下面 以.conf结尾的所有文件

# find / -perm 777 找出根下权限为777的所有文件

# find . -size +1M 找出大于1M的文件

# find . -size -1M 找出小于1M的文件

# find . -size 1M 找出等于1M的文件

# find ./ -type d 找出当前目录下的所有目录

# find ./ -type f 找出当前目录下的所有文件

# find ./ -name 'hd*' -exec rm {} \;

# find ./ -name 'hd*' -ok rm {} \;

< rm ... ./hd3.bak > ? y

< rm ... ./hd2.bak > ? y

< rm ... ./hd4.bak > ? y

< rm ... ./hd1.bak > ? y

< rm ... ./hd5.bak > ? y

练习:

1、找出根下的所有的块设备文件,并且重定向到/tmp/find.test文件中。

2、找出/root 目录下面大于2M的文件,并且把它追加到/tmp/find.test文件中。

day05

打包压缩工具:

压缩工具:zip、gzip、bzip2

打包工具:tar

zip:兼容unix/linux和windows

递归压缩 压缩后的名字及路径 要压缩的文件目录

# zip -r /home/etcbak.zip /etcbackup

解压缩:

# unzip etcbak.zip 解压到当前目录下

# unzip etcbak.zip -d /tmp/test 指定解压的目录 -d参数

gzip|bzip2 只能压缩一个文件

gzip 快速压缩,占用空间较大,cpu开销不大

# gzip /home/etcbak.zip ——etcbak.zip.gz

解压缩:

# gunzip /home/etcbak.zip.gz

或者

# gzip -d etcbak.zip.gz

bzip2 压缩率较高,压缩速度慢,cpu开销大

# bzip2 /home/etcbak.zip

解压缩:

# bunzip2 /home/etcbak.zip.bz2

或者

# bzip2 -d /home/etcbak.zip.bz2

tar 打包(压缩)多个文件,不会改变文件的属性及权限

tar.gz 以gzip工具压缩

tar.bz2 以bzip2工具压缩的

参数:

c 打包

z 调用gzip工具压缩

j 调用bzip2工具压缩

v 显示详细信息

f 指定包名

x 解压

t 查看包里内容

demo:

# mkdir /home/backup

# find /etc/ -type f -exec cp {} /home/backup \;

# tar czfv /tmp/etc.bakup.tar.gz /home/backup/ 压缩打包

解压缩包:

# tar xzvf /tmp/etc.bakup.tar.gz 解压到当前目录

# tar xzf etc.bakup.tar.gz -C /tmp/test 指定解压缩路径 -C

查看tar包里的内容

# tar tf /tmp/etc.bakup.tar.gz

思考:遗漏了某个文件,再想加到已经打好的tar包里?

# tar r file.test -f etc.bakup.tar 追加file.test文件到 etc.bakup.tar包 练习:

1、找出/etc/下面所有的目录并将其复制到/home/backup中。

# mkdir /home/backup

# find /etc -type d -exec cp -r {} /home/backup \;

2、将/home/backup中的所有文件打包压缩到/tmp下,命名为etcbak.tar.gz cd /home

tar czf /tmp/etcbak.tar.gz backup/*

3、将/root/install.log文件追加到etcback.tar.gz包中。

tar xf /tmp/etcbak.tar.gz -C /home

方法一:

cd /home

tar czvf /tmp/etcback.tar.gz backup/* /root/install.log

提示:“/”不能移动 需要加 P参数

方法二:

tar cvf /tmp/etcback.tar backup/* 先打包

tar r /root/install.log -f etcback.tar 追加

gzip /tmp/etcback.tar.gz

文本编辑器:

vim/vi

# rpm -qf `which vi`

vim-minimal-7.2.411-1.8.el6.x86_64

# rpm -qf `which vim`

vim-enhanced-7.2.411-1.8.el6.x86_64

vim 是vi的升级版

vim 三种模式:命令行模式、末行模式(底行模式)、插入模式(编辑模式)

命令行模式:

yy 复制一行 1yy

nyy 复制n行

p/P 粘贴到光标所在的下一行/粘贴到光标所在的上一行

u 撤销

dd 删除1行

3dd 删除3行

G(shift+g) 快速跳到文本的最后一行

gg 快速跳到文本首行

5gg 快速跳到文本的第5行

home/shift+6/^ 快速跳到行首

end/shift+4/$ 快速跳到行尾

x 删除一个字符,往后删除

X 删除一个字符,往前删除

h 左移

j 下移

k 上移

l 右移

yw ?

末行模式:

:从命令行模式进入底行模式

:w 保存文件

:q /:q! 退出/强制退出

:wq/:wq! 保存退出/强制保存推出

:set nu或者:set number 临时设置行号

# echo set number >> /etc/vimrc 只要是用vim工具打开的文件,都显示行号

:e! 撤销到刚打开文件的那一刻

:w /tmp/hello.txt 将当前修改的文件另存为另外一个文件

:1,5w /tmp/15.txt 将当前修改的文件的前5行保存到另外一个文件

:r /etc/fstab 读取另外一个文件的内容到当前文件里

:10r /etc/fstab 在当前文件的第10行后面插入读取的文件内容

问题:怎样读取另外一个文件的几行到当前文件?

:%s/ftp/hello 搜索每一行首次匹配到的ftp替换成hello

:%s/ftp/hello/g 全局替换

:%s/ftp/hello/gc 询问是否替换

:%s#/sbin/nologin#/bin/bash#gc 如果搜索的内容有特殊字符,需要自己定义一个分割符

插入模式:

i/I 在当前光标所在处插入东西

o 在光标所在行的下一行插入东西

O 在光标所在行的上一行插入东西

a 在光标所在的位置的后一个位插入东西

A 在光标所在行的行末插入东西

r 替换光标所在的字符

R 从光标处向后一直替换

总结:

打开文件——>命令行模式——>(o/O,i/I,a/A)进入到编辑模式——>按”ESC“(推出到命令行模式)——>(:wq)进入底行模式保存退出

用户组管理

用户分类:

root(管理员):最高权限,上帝。uid=0,必须是0.

系统用户(程序用户):1<= uid <=499,提供服务运行时的身份。默认是不能登录操作系统的。 普通用户: 500<=uid <60000,一般都是管理员用命令创建的用户,这些用户默认是登录操作系统的。

用户管理:

1、用图形化工具创建用户

# system-config-users

2、用命令创建

useradd username 创建一个默认用户

useradd相关参数:

-u 指定用户的uid

-g 指定用户的主组id

-G 指定用户的附加组

-d 指定用户的家目录

-c 对用户描述或说明

-s 指定用户的shell(交互或者非交互)

创建一个自定义的用户

# useradd -u 1000 -d /home/aaa -c "zidingyi" test

# id username 查看用户组信息

修改用户信息:

usermod

# usermod -u 666 -d /home/bbb -s /sbin/nologin test

注意:

当修改了家目录后,出现用户家不完整现象,需要拷贝/etc/skel/. 到指定新的家目录中。

删除一个用户:

# userdel username 默认只删除用户

# userdel -r uplook 删除用户及其家目录(系统默认分配的)

练习:

1、添加3个用户,harry、natasha、sarah,要求harry、natasha用户的附加组为admin,sarsh用户的登录shell为非交互式shell。三个用户密码为redhat。

groupadd admin

2、修改harry用户的家目录为/home/uplooking/redhat/harry.

3、修改natasha,sarsh用户的主组为uplooking,并且可以登录系统。

用户信息相关的配置文件

/etc/group 组信息

group_name:passwd:GID:user_list

组名:密码:组id:组里包含哪些用户

/etc/passwd 用户信息

account:password:UID:GID:GECOS:directory:shell

用户名:用户密码:uid:gid:描述信息:用户家目录:登录shell

/etc/shadow 用户的密码信息

login name:用户名

encrypted password:用户密码信息,!!代表没密码

date of last password change:最后一次修改密码的时间。(19xx年的1月1号)

minimum password age:密码最小存活期。0,代表马上可以修改密码;3,代表3天后才能修改密码。

maximum password age:密码的最大存活期。30,每隔30天修改密码。

password warning period:密码过期前告警。7,代表密码过期前一个礼拜发出告警。

password inactivity period:允许密码过期的天数,如果3,允许密码过期3天,3天内可以登录操作系统,但是会提示你更改密码。如果未更改,那么帐号就被封锁。

account expiration date:账户过期时间。

reserved field:保留

chage --help

chage -l username 查看用户的密码信息

-d 修改用户最后一次更改密码的时间

-m 修改密码的最小存活期(几天后才能修改密码)

-M 修改密码的最大存活期(每隔多少天修改一次密码)

-W 修改密码过期前告警时间

-I 修改允许密码过期几天

-E 修改帐号的过期时间(linux 1970-01-01,单位:天)

组管理:

groupadd groupname 创建组

-g 指定gid

groupdel 删除组

groupmod 修改组信息

gpasswd

注意:

用户的uid是唯一的;组的gid是否可以不唯一?

练习一:

1、创建一个用户组,名字为admin,组id为900.

2、创建一个用户tom,并且admin组要作为tom的一个附加组(要求在创建用户的时候完成),密码为123.

3、创建一个用户jack,要求组创立用户之后使用gpasswd把jack加入到admin中,密码为123.

4、给admin组设定一个默认密码为123.

5、把tom用户设定为admin组的组管理员。

练习二:

1、新建一个名为uplooking的公司,3个部门cw、rs、sc;每个部门创建2个用户,如:cw01,cw02,以此类推;老板boss01管理公司所有部门;设置所有用户的密码为“123456”.

2、设置用户帐号的有效期为3个月(90天),第一次登录系统强制修改密码,每隔15天更新一次密码。

权限管理:

linux下一切皆文件,目录也是文件。目录是一个特殊的文件。

第1列:文件的类型和权限

第2列:文件——代表文件的硬链接数;目录——代表此目录下的子目录个数。

补充:

硬链接:通过索引节点来进行的链接。idode号。

互为硬链接的文件的idode号是一致,一个硬链接文件更改,其他硬链接文件同时跟着更改 软链接:类似于windows下的快捷方式。idode号不一样。

ln file1(源文件) file2(链接文件) 给file1文件创建一个硬链接文件file2 ln -s file1(源文件) file2(链接文件) 给file1文件创建一个软链接文件file2

第3列:文件的拥有者,创建人,属主。

第4列:文件的属组。

第5列:文件的大小。

第6、7、8列:文件的创建时间。

第9列:文件名。

r——4

文件:是否允许查看文件内容。

目录:是否允许查看目录的文件列表

w——2

文件:能够修改文件的内容。

目录:是否允许删除目录下的文件,重命名文件,修改属性等。

x——1

文件:是否能够执行该文件。一般是可执行文件(程序、命令、脚本等)

目录:是否可以进入到该目录。

注意:对于目录而言,想要查看目录内容,需要有rx权限。

1 2 3

-rwx rwx r-x test root test.sh 文件

-rwx rwx r-x admin root test1.sh

u g o

用户 A 对test.sh有什么权限

想让A 用户对test.sh文件有可写权限?

1、others 加 W 不安全

2、让A用户变成拥有者 不可取

3、A用户加入到root组,再给属组加w权限。

总结:判断一个用户是否可以修改一个文件,看该用户和该文件的创建人和属组的关系。 修改文件的权限:

-R 递归修改

# chmod o=rwx filebak1 给filebak1文件设置其他人的权限为rwx。

o+wx

# chmod g+x filebak1 给filebak1文件设置属组的权限加x。

# chmod u+x filebak1 给filebak1文件设置属主的权限加x。

# chmod a-x filebak1

# chmod u-x,g-x,o-x filebak1

# chmod 755 /home/bbb/filebak1

修改文件的属组和属主

chown mor filebak1

# ll filebak1

-rwxr-xr-x 2 mor root 4 Aug 18 10:16 filebak1

# chown .admin filebak1 或者chown :admin filebak1

# ll filebak1

-rwxr-xr-x 2 mor admin 4 Aug 18 10:16 filebak1

# chown yyy.redhat filebak1

# ll filebak1

-rwxr-xr-x 2 yyy redhat 4 Aug 18 10:16 filebak1

# chown root:admin filebak1

# ll filebak1

-rwxr-xr-x 2 root admin 4 Aug 18 10:16 filebak1

默认权限(遮罩权限):

linux中,文件的最大权限:666;目录最大权限:777。

# umask 查看当前用户的默认权限 (root用户)

0022

该用户创建文件的默认权限是:0666-0022=0644(-rx-r--r--)

该用户创建目录的默认权限是:0777-0022=0755(drwxr-xr-x)

临时修改默认权限:

# umask 0002 (普通用户的默认权限) 临时修改,当前终端有效

该用户创建文件的默认权限是:0666-0002=0664(-rw-rw-r--)

该用户创建目录的默认权限是:0777-0002=0775 (drwxrwxr-x)

默认权限永久生效:

只针对某个用户生效:vim ~/.bashrc(局部)

...

umask 0006

保存后,需要让其生效,. ~/.bashrc或者source ~/.bashrc

针对所有用户生效:vim /etc/bashrc

特殊权限:

冒险位(setuid)——4:临时拥有文件的拥有者的权限,作用在可执行文件上(命令)。 chmod u+s /usr/bin/vim

强制位(setgid)——2:作用在目录上,任何人在这个目录下面创建的文件或者目录都继承了父目录的属组的权限。

chmod g+s /home/bbb

粘滞位 ——1:作用在公共目录上面。这个目录下面的文件,只有root和创建人可以删除。只能自己管自己

chmod o+t /share

练习:

1、以普通用户user01身份登录,用vim文本编辑器去修改/etc/group文件,增加一个组sysadmin。

# which vim

# chmod u+s /usr/bin/vim

2、新建文件夹/shared/sysadmin,属于sysadmin组,要求如下:

1)要求组成员有可读可写可访问的权限,其他成员没有任何权限。

# chmod o=--- /shared/sysadmin/

2)要求组成员不可以删除其他成员的文件。

# chmod o+t /shared/sysadmin/

3)要求在/shared/sysadmin下面创建的文件全部属于sysadmin组。

# chmod g+s /shared/sysadmin/

4)要求harry可写,natasha不能读写。

# gpasswd -a harry sysadmin

访问控制列表 ACL

setfacl

-m 修改文件访问控制权限

-x 去掉某个用户的权限

-b 删除所有的acl策略

-d 递归

# setfacl -m u:user01:rw file1 针对于单个用户给可读可写权限

# setfacl -m g:sysadmin:rw file1 针对于单个组给可读可写权限

思考:

一个公司,有2个部门rs和cw,各有rs01,rs02和cw01,cw02员工。针对于每个员工的工资表只允许rs部门查看,cw部门修改。boss也只有查看权限,其他部门的人没有任何权限? 说明:工资表为gz_file,权限为400.

groupadd rs

groupadd cw

useradd rs01

useradd rs02

useradd cw01

useradd cw02

gpasswd -M rs01,rs02 rs

gpasswd -M cw01,cw02 cw

touch gz_file

chmod 400 gz_file

# setfacl -m g:rs:r gz_file

# setfacl -m g:cw:rw gz_file

# setfacl -m u:boss:r gz_file

hd08

软件包的安装

yum源搭建

红帽官方的软件包一般都是.rpm格式。

rpm包:

xlockmore-5.31-2.el6.x86_64.rpm

软件名-主版本号-次版本号-发布版本号.系统版本.cpu架构.rpm

32位:i386,i586,i686

64位操作系统优先安装64位的软件,实在找不到可以安装32位的;

32位的操作系统必须安装32位的软件。

建议:

不要跨大版本安装软件包,尽量使用当前操作系统自带的软件包(iso/光盘自带) rpm包的获取:

1、操作系统自带的光盘或镜像文件里。

2、网络上查找:

http://ceph.com/rpm

安装rpm包:

rpm -ivh 包名 安装软件包

rpm -e 包名 卸载软件包

rpm -Uvh 包名 升级软件包(已经安装了一个旧的版本)

rpm -ivh --force 强制安装(覆盖已经安装的软件包)

rpm -ivh --nodeps 忽略依赖关系安装

查看已安装的包:

rpm -ql 查看一个已经安装了的软件的文件列表

rpm -qlp 查看某个软件包文件里的文件列表

rpm -aq 查看当前操作系统已经安装了的所有rpm包(rpm -aq | grep xclock) rpm -qd 查看一个已经安装了的软件的文档列表

rpm -qc 查看软件包所带来的配置文件

rpm -qi 查看软件包的详细信息

rpm -qf 查看文件来自哪个软件包

实例:

红帽软件包的特征:

samba-3.6.9-164.el6.x86_64.rpm 服务端

samba-client-3.6.9-164.el6.x86_64.rpm 客户端

samba-common-3.6.9-164.el6.x86_64.rpm 工具|库文件(64位)

samba-common-3.6.9-164.el6.i686.rpm 工具|库文件(32位)

[root@vm1 Packages]# rpm -ivh samba-3.6.9-164.el6.x86_64.rpm

warning: samba-3.6.9-164.el6.x86_64.rpm: Header V3 RSA/SHA256 Signature, key ID fd431d51: NOKEY

Preparing... ########################################### [100%] 1:samba ########################################### [100%]

[root@vm1 Packages]# rpm -ivh samba-client-3.6.9-164.el6.x86_64.rpm

warning: samba-client-3.6.9-164.el6.x86_64.rpm: Header V3 RSA/SHA256 Signature, key ID fd431d51: NOKEY

Preparing... ########################################### [100%] 1:samba-client ########################################### [100%]

[root@vm1 Packages]# rpm -ivh samba-common-3.6.9-164.el6.x86_64.rpm

warning: samba-common-3.6.9-164.el6.x86_64.rpm: Header V3 RSA/SHA256 Signature, key ID fd431d51: NOKEY

Preparing... ########################################### [100%] package samba-common-0:3.6.9-164.el6.x86_64 is already installed

[root@vm1 Packages]# rpm -ivh samba-common-3.6.9-164.el6.x86_64.rpm --force

warning: samba-common-3.6.9-164.el6.x86_64.rpm: Header V3 RSA/SHA256 Signature, key ID fd431d51: NOKEY

Preparing... ########################################### [100%] 1:samba-common ########################################### [100%]

升级:

-Uvh 升级一个软件,如果软件不存在就等于安装。

-Fvh 升级一个软件,如果软件不存在就停止安装。

[root@vm1 Packages]# rpm -Fvh vsftpd-2.2.2-11.el6_4.1.x86_64.rpm

warning: vsftpd-2.2.2-11.el6_4.1.x86_64.rpm: Header V3 RSA/SHA256 Signature, key ID fd431d51: NOKEY 升级失败,停止安装

[root@vm1 Packages]# rpm -Uvh vsftpd-2.2.2-11.el6_4.1.x86_64.rpm

warning: vsftpd-2.2.2-11.el6_4.1.x86_64.rpm: Header V3 RSA/SHA256 Signature, key ID fd431d51: NOKEY

Preparing... ########################################### [100%] 1:vsftpd ########################################### [100%] 升级成功

[root@vm1 Packages]# rpm -aq |grep vsftpd

vsftpd-2.2.2-11.el6_4.1.x86_64

卸载:

# rpm -aq |grep samba

samba-winbind-3.6.9-164.el6.x86_64

samba-3.6.9-164.el6.x86_64

samba-winbind-clients-3.6.9-164.el6.x86_64

samba-common-3.6.9-164.el6.x86_64

samba-client-3.6.9-164.el6.x86_64

#rpm -e samba-client-3.6.9-164.el6.x86_64

#rpm -e samba-common-3.6.9-164.el6.x86_64

#rpm -e samba-3.6.9-164.el6.x86_64 --nodeps 忽略依赖关系卸载

练习:

1、wget ftp://192.168.1.110/pub/rhel6/Packages/vsftpd-2.2.2-11.el6_4.1.x86_64.rpm

2、wget ftp://192.168.1.110/pub/rhel6/Packages/samba-3.6.9-164.el6.x86_64.rpm

yum工具的使用:

yum作用:软件包管理器,类似于360软件管家。

搭建yum仓库的目的:为了更便捷的安装软件包。

权威红帽软件管家:红帽源 收费

centos的软件管家:centos源 免费

国内权威:阿里云源、163源、sohu源

国外权威:RpmForge 提供的第三方rpm仓库、epel源(红帽公司)扩展包

内网源:ftp://192.168.1.110/pub/rhel6(rhel6-32)/

搭建本地yum源:

1、有iso镜像文件或者光盘。

2、临时挂载使用

# mount /mnt/hgfs/soft/iso/rhel-server-6.5-x86_64-dvd.iso /iso -o loop

df -h

cd /iso ——iso里的内容,就是光盘里面的内容

3、永久挂载

vim /etc/fstab

挂载的设备 挂载点(挂载到操作系统的某个位置) 文件类型 以什么方式挂载 默认

/mnt/hgfs/soft/iso/rhel-server-6.5-x86_64-dvd.iso /iso iso9660 defaults,ro,loop 0 0

4、配置yum仓库路径

cd /etc/yum.repos.d

rm -rf *

vim demo.repo 注意:必须是以.repo结尾的文件

[local-yum]

name=redhat linux 6.5

baseurl=file:///iso

enable=1

gpgcheck=1

gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-redhat-release

或者

[local-yum]

name=redhat linux 6.5

baseurl=file:///iso

enable=1

gpgcheck=0

yum clean all

yum makecacke

相关命令:

yum -y install 软件包名 安装

yum localinstall ./xxxx.rpm

yum remove 软件包 卸载

yum update 软包 安装仓库里所有比本机已安装的软件要高的软件

yum search mysql 搜索出所有软件名字或者描述包含“mysql”关键字的软件

实例:

安装xlockmore-5.31-2.el6.x86_64.rpm包

# rpm -ivh xlockmore-5.31-2.el6.x86_64.rpm

warning: xlockmore-5.31-2.el6.x86_64.rpm: Header V3 RSA/SHA256 Signature, key ID 0608b895: NOKEY

error: Failed dependencies:

libaudiofile.so.0()(64bit) is needed by xlockmore-5.31-2.el6.x86_64 libesd.so.0()(64bit) is needed by xlockmore-5.31-2.el6.x86_64

首先在本地光盘里搜索:

cd /iso/Packages/

ls libaudio*

ls audio*

# yum -y install audiofile* 解决了第一个依赖关系

ls libesd*

ls esd* 本地木有找到相关的软件包,去网上找:

找到后下载安装:

#rpm -ivh esound-libs-0.2.41-3.1.el6.x86_64.rpm

#rpm -ivh xlockmore-5.31-2.el6.x86_64.rpm

#which xlcok

#xlcok 锁屏

源码编译安装:

1、安装编译工具

yum -y install gcc

开发包工具

2、解压源码包

# tar -xf axel-1.0a.tar.gz -C /usr/local/src

# cd axel-1.0a/ 进入到该目录进行编译安装

3、编译安装

# ./configure --help

# ./configure 配置

# make 编译,编译必须通过之后才能安装

# make install 安装

卸载:

# make uninstall

练习:

1、下载安装ntfs-3g-2010.10.2.tgz包。

2、下载安装MPlayer-1.1.1.tar.xz包。

小工具的使用:

管道(|):连接多个命令的工具

命令1 | 命令2 |命令3

命令1的输出结果——作为命令2的输入——命令2的输出结果——作为命令3的输入

grep工具:行过滤

选项和参数:

-a:将二进制文件以text文件的方式搜索

-c:计算找到的“搜索到的字符串”的次数

-i:忽略大小写过滤

-n:顺便输出行号

-v:反向选择

--color=auto:将找到的关键字加上颜色显示

demo:

grep ^root file 以root开头

grep '/bin/bash$' file 以/bin/bash结尾

grep 'roo*' file 只要含roo字符串,全部显示出来

grep 'ro..' file 包含ro字符串,并且后面还有2位一起显示出来

grep '^#' -v file 显示出不以#开头的

练习:

1、找出/etc/passwd文件里包含ftp的行。

2、找出/etc/passwd中以nobody开头的行。

3、找出/etc/fstab中不以#号开头的行。

cut工具:列过滤,截取某个字符

选项参数:

-b:以字节为单位进行分割

-c:以字符为单位进行分割

-d:自定义分割符,默认是制表符

-f:与-d一起使用,指显示区域

demo:

# cut -d ':' -f1 /etc/passwd 截取文件以:分割的第一列,即用户名列。

# cut -c3-10 /etc/passwd 按照字符截取,截取每行的3-10个字符。

练习:

用cut工具截取/etc/inittab文件中的系统运行级别。

sort工具:排序,将文件的每一行作为一个单位,从首字符向后,依次按照ASCII码值进行比较,按照升序排列。默认按照升序排列。

参数:

-u:去除重复行

-r:降序排列

-o:将排序的结果输出到某个文件

-n:以数字排序,默认是按照字符排序

-t:定义分割符

-k:第几列

demo:

# sort -n -u 123.txt

# sort -n 123.txt |uniq

注意:|uniq = -u 去除重复值

# head /etc/passwd > 10passwd

# sort -n -t : -k3 10passwd 按照uid列进行数字排序

# cat /etc/passwd|cut -d: -f7|sort -u

# cat /etc/passwd|cut -d: -f7|uniq

/bin/bash

/bin/sync

/sbin/halt

/sbin/nologin

/sbin/shutdown

wc工具:统计工具,行、字符、单词

-l 统计行

-c 统计字符

-w 统计单词数

du工具:统计目录大小

# du -h /home 统计该目录下子目录的大小

# du -sh /home/ 显示目录总大小

592M /home/

# du -csh /home/ 显示总用量

592M /home/

592M total

练习:

1、截取你自己的ip地址并且重定向到一个文件,文件名是你的名字全拼.txt

ifconfig | grep 'inet addr'>>laijiaren.txt

2、截取netmask,并且追加到你上一题的文件中。

3、截取广播地址(Bcast:192.168.1.255),且追加到你上一题的文件中。

4、截取mac地址(HWaddr 00:0C:29:87:5C:6A),且追加到你上一题的文件中。 ifconfig | grep 'HWaddr'>>laijiaren.txt

5、将你的文件远程拷贝到我的服务器:192.168.1.109上的/tmp/0820中,redhat/redhat

磁盘管理:

磁盘的接口总线类型:

ide ——>并行硬盘

sata——>串口硬盘

scsi——>服务器标配

sas——>服务器使用,速度比较块

ssd——>固态硬盘,速度更快

rhel5:

ide——>hda,hdb

sata——>sda,sdb

scsi,sas,ssd——>sda,sdb;sda1,sdb1

rhel6,rhel7:

所有——>sda,sdb;sda1,sdb1

MBR(主引导程序):

『512字节MBR』|磁盘的剩余空间

512字节=446字节+64字节+2字节

linux安装:最多能分4个区

3个主分区1个扩展分区,扩展分区后面继续分逻辑分区;

4主分区;

查看本机的块设备挂载情况

lsblk

fdisk -l /dev/sda

df -h

实验在虚拟机下完成:

1、添加一块新的硬盘(重启操作系统)20G;

2、将新硬盘分8个区。

fdisk /dev/sdb

3、更改分区类型

Command (m for help): t

Partition number (1-6): 5

Hex code (type L to list codes): 8e

Changed system type of partition 5 to 8e (Linux LVM)

Command (m for help): p

Disk /dev/sdb: 32.2 GB, 32212254720 bytes

255 heads, 63 sectors/track, 3916 cylinders

Units = cylinders of 16065 * 512 = 8225280 bytes

Sector size (logical/physical): 512 bytes / 512 bytes

I/O size (minimum/optimal): 512 bytes / 512 bytes

Disk identifier: 0xb3f1a49b

Device Boot Start End Blocks Id System

/dev/sdb1 1 654 5253223+ 83 Linux

/dev/sdb2 655 1308 5253255 83 Linux

/dev/sdb3 1309 1962 5253255 86 NTFS volume set /dev/sdb4 1963 3916 15695505 5 Extended /dev/sdb5 1963 2616 5253223+ 8e Linux LVM

4、格式化成某种文件系统

# mkfs.ext4 /dev/sdb1

# mkfs -t vfat /dev/sdb2

5、挂载使用

# mkdir /u01 创建一个挂载点

# mkdir /u02

# mount /dev/sdb1 /u01 临时手工mount

# mount /dev/sdb2 /u02

开机自动mount

vim /etc/fstab

...

/dev/sdb1 /u01 ext4 defaults 0 0

UUID=BF7D-F51A /u02 vfat defaults 0 0

取消挂载:

umount /dev/sdb2 或者/u02

day10

逻辑卷(LVM):它是建立在物理存储设备之上的一个抽象曾,优点在于灵活管理。 特点:

1、动态扩容。

2、在线扩容。

3、离线裁剪。

4、数据条带化。

5、数据镜像。

基本概念:

物理卷:物理卷是逻辑卷中底层真正存储数据的设备,它可以是整块硬盘、分区等。

卷组:卷组是建立在物理卷之上,由一个或者多个物理卷组成。即把物理卷整合起来提供容量的分配。

逻辑卷:逻辑卷是建立在卷组之上,它是从卷组中“切出”的一块空间。它是最终用户使用的逻辑设备。

实例:

1、创建一个普通的逻辑卷,大小是1.5G,挂载使用。

1)添加一块新硬盘大小30G,并且将其分为3个区,每个区大小2G;

2)将一个分区做成pv(物理卷)

# pvcreate /dev/sdb1

# pvs或者# pvdisplay 查看物理卷信息

3)创建一个vg(卷组),将pv加入到卷组里

# vgcreate vg01 /dev/sdb1

# vgs 或者 # vgdisplay 查看卷组信息

4)创建一个逻辑卷,大小为1.5G

# lvcreate -n lv01 -L 1.5G vg01

# lvs 或者 lvdisplay

注意:创建好逻辑卷后会映射到2个地方,如下:/dev/vg01/lv01 和 /dev/mapper/vg01-lv01 # ll /dev/vg01/lv01

lrwxrwxrwx 1 root root 7 Aug 21 10:20 /dev/vg01/lv01 -> ../dm-0

# ll /dev/mapper/vg01-lv01

lrwxrwxrwx 1 root root 7 Aug 21 10:20 /dev/mapper/vg01-lv01 -> ../dm-0

5)格式化文件系统

# mkfs.ext4 /dev/vg01/lv01

6)挂载使用

# mount /dev/vg01/lv01 /u01

mount -a 读取/etc/fstab

mount -o rw,sync /dev/vg01/lv01 /u01

2、在线扩容逻辑卷

不用卸载逻辑卷

情况1:卷组里剩余空间足够扩容

给逻辑卷lv01增加200M空间

# lvextend -L +200M /dev/vg01/lv01

同步文件系统

# resize2fs /dev/vg01/lv01

情况2:卷组里剩余空间不够扩容的空间

扩容卷组再扩容逻辑卷

# pvcreate /dev/sdb2 拿一个新的设备创建一个pv

# vgextend vg01 /dev/sdb2 将新创建的pv增加到vg01卷组里,扩容卷组

# lvextend -L +1G /dev/vg01/lv01 扩容逻辑卷

# resize2fs /dev/vg01/lv01 同步文件系统

3、离线裁剪逻辑卷容量

必须把逻辑卷取消挂载后,需要按照步骤来操作。

1)取消挂载

# umount /u01

或者

# umount /dev/mapper/vg01-lv01

2)检测一下逻辑卷的文件系统

# fsck -f /dev/mapper/vg01-lv01

fsck from util-linux-ng 2.17.2

e2fsck 1.41.12 (17-May-2010)

Pass 1: Checking inodes, blocks, and sizes

Pass 2: Checking directory structure

Pass 3: Checking directory connectivity

Pass 4: Checking reference counts

Pass 5: Checking group summary information

/dev/mapper/vg01-lv01: 13/180224 files (7.7% non-contiguous), 20088/706560 blocks

3)调整文件系统大小,计划缩1.7G,即大小最终为1G.

# resize2fs /dev/mapper/vg01-lv01 1G

4)再调整逻辑卷大小,调整到1G

# lvreduce -L 1G /dev/mapper/vg01-lv01

WARNING: Reducing active logical volume to 1.00 GiB

THIS MAY DESTROY YOUR DATA (filesystem etc.)

Do you really want to reduce lv01? [y/n]: y

Reducing logical volume lv01 to 1.00 GiB

Logical volume lv01 successfully resized

5)再去检测一下逻辑卷

# fsck -f /dev/mapper/vg01-lv01 -f 强制检查文件系统

6)挂载使用

# mount /dev/mapper/vg01-lv01 /u02

问题:

当逻辑卷缩减后的大小不足以存放原有数据时,是否可以缩减成功?如果可以会有什么后果? 可以缩减。只是强制缩减后原有数据会损坏。

4、卷组扩容

# vgextend vg01 /dev/sdb3 /dev/sdb4

5、卷组裁剪容量

# vgreduce vg01 /dev/sdb3 没有用的pv

6、删除逻辑卷

# umount /dev/mapper/vg01-lv01

# lvremove /dev/mapper/vg01-lv01

7、删除卷组

# vgremove vg01

8、删除物理卷

# pvremove /dev/sdb{1..3}

9、逻辑卷实现条带化

条带化:把保存到逻辑卷的数据分成n等分,分别写到不同的物理卷,可以提高数据的读写效率;

如果任何一个涉及到的物理卷出现故障,数据都会无法恢复。

创建前:

# pvs

PV VG Fmt Attr PSize PFree

/dev/sdb1 lvm2 a-- 2.01g 2.01g

/dev/sdb2 lvm2 a-- 2.01g 2.01g

# vgs

VG #PV #LV #SN Attr VSize VFree

vg01 2 0 0 wz--n- 4.01g 4.01g

创建条带化的逻辑卷:

# lvcreate -n lv01 -L 1G -i 2 vg01 /dev/sdb[12]

Using default stripesize 64.00 KiB

Logical volume "lv01" created

创建后:

# pvs

PV VG Fmt Attr PSize PFree

/dev/sdb1 vg01 lvm2 a-- 2.00g 1.50g

/dev/sdb2 vg01 lvm2 a-- 2.00g 1.50g

格式化文件系统:

# mkfs.ext4 /dev/mapper/vg01-lv01

# mount /dev/mapper/vg01-lv01 /u01

测试:

# iostat -d -m /dev/sdb[12] 2

10、逻辑卷实现镜像

镜像:对某个逻辑卷的数据做镜像,起到数据备份的作用。

创建镜像前:

# pvs

PV VG Fmt Attr PSize PFree

/dev/sdb1 vg01 lvm2 a-- 2.00g 1.50g

/dev/sdb2 vg01 lvm2 a-- 2.00g 1.50g

/dev/sdb3 vg01 lvm2 a-- 2.00g 2.00g

/dev/sdb4 vg01 lvm2 a-- 2.00g 2.00g

# vgs

VG #PV #LV #SN Attr VSize VFree

vg01 4 1 0 wz--n- 8.02g 7.02g

创建互为镜像的逻辑卷lv01:

# lvcreate -n lv02 -L 1G vg01 -m 1 --mirrorlog core /dev/sdb[34]

Logical volume "lv02" created

创建后:

# pvs

PV VG Fmt Attr PSize PFree

/dev/sdb1 vg01 lvm2 a-- 2.00g 1.50g

/dev/sdb2 vg01 lvm2 a-- 2.00g 1.50g

/dev/sdb3 vg01 lvm2 a-- 2.00g 1.00g

/dev/sdb4 vg01 lvm2 a-- 2.00g 1.00g

# vgs

VG #PV #LV #SN Attr VSize VFree

vg01 4 2 0 wz--n- 8.02g 5.02g

检查:

# lvs

LV VG Attr LSize Pool Origin Data% Move Log Cpy%Sync Convert lv01 vg01 -wi-ao---- 1.00g

lv02 vg01 mwi-a-m--- 1.00g 100.00 ---有镜像的逻辑卷 格式化后挂载使用:

# mkfs.ext4 /dev/mapper/vg01-lv02

# mount /dev/mapper/vg01-lv02 /u02

破坏验证:

# dd if=/dev/zero of=/dev/sdb3 bs=1M count=200 模拟/dev/sdb3损坏

# pvs

Couldn't find device with uuid 53pKyA-Tcrr-q7t8-E4EG-SLf9-g7lV-TpytXa. PV VG Fmt Attr PSize PFree

/dev/sdb1 vg01 lvm2 a-- 2.00g 1.50g

/dev/sdb2 vg01 lvm2 a-- 2.00g 1.50g

/dev/sdb4 vg01 lvm2 a-- 2.00g 1.00g

unknown device vg01 lvm2 a-m 2.00g 1.00g

# umount /dev/mapper/vg01-lv02

# mount /dev/mapper/vg01-lv02 /u02

mount: wrong fs type, bad option, bad superblock on /dev/mapper/vg01-lv02, missing codepage or helper program, or other error

In some cases useful info is found in syslog - try

dmesg | tail or so

说明:如果是硬件故障或者数据损坏,该逻辑卷无法挂载。

不管是否可以挂载,我们知道镜像中涉及到的/dev/sdb3已经不能保存镜像数据里。所以当前lv02这个逻辑卷的镜像同步功能已经失效里,为了保证另一块盘数据的读写正常,应该把故障的盘sdb3移除,把lv02的镜像取消。

# vgreduce --removemissing --force vg01 从vg01中移除损坏的盘

# pvs

PV VG Fmt Attr PSize PFree

/dev/sdb1 vg01 lvm2 a-- 2.00g 1.50g

/dev/sdb2 vg01 lvm2 a-- 2.00g 1.50g

/dev/sdb4 vg01 lvm2 a-- 2.00g 1.00g

# lvs

LV VG Attr LSize Pool Origin Data% Move Log Cpy%Sync Convert

lv01 vg01 -wi-ao---- 1.00g

lv02 vg01 -wi-a----- 1.00g ——已经没有同步状态,没有里m属性

再次挂载逻辑卷lv02

# mount /dev/mapper/vg01-lv02 /u02

# cd /u02

# ls

file1 file2 file3 file4 file5 里面的东西还在

练习:

1、添加一块新的20g物理磁盘到你的linux系统中,并将其分为2个分区各10g。如sdc1和sdc2.

2、将sdc1做成逻辑卷挂载到系统中/u01目录下,并在/u01目录下面创建file1~file5 5个文件。

3、假设sdc1分区有坏块,现在需要将sdc1分区上的数据快速放到sdc2盘上,怎么做? pvmove 命令

day11

前提:

1、关闭防火墙:

# service iptables stop 马上停掉

# chkconfig iptables off 开机不自动启动

2、关闭selinux(安全策略)永久关闭:

查看selinux:# getenforce

# vim /etc/selinux/config

....

SELINUX=disabled

...

保存推出

临时关闭:# setenforce 0

ftp协议:文件传输协议,跨平台,只能上传下载文件。

原理:

ftp传输模式:主动模式和被动模式,ftp默认的是被动模式。

命令端口默认:21号端口;数据传输端口20号端口(主动模式下)

三部曲:

1、安装软件包

2、修改配置文件

3、启动服务

server:vsftpd

client:lftp、ftp(命令)

ie、firefox、filezilla(图形化工具)

搭建一个简单的ftp服务器:

1、安装软件包

# yum -y install vsftpd

查看带来里哪些配置文件

# rpm -qc vsftpd

/etc/logrotate.d/vsftpd 日志轮循

/etc/pam.d/vsftpd

/etc/vsftpd/ftpusers 拒绝用户列表

/etc/vsftpd/user_list 允许/拒绝用户列表

/etc/vsftpd/vsftpd.conf ftp服务主配置文件

2、默认服务

# cat /etc/vsftpd/vsftpd.conf |grep '^#' -v

anonymous_enable=YES 开启匿名用户功能

local_enable=YES 开启本地用户

write_enable=YES 全局读写总开关

local_umask=022 本地用户默认权限

dirmessage_enable=YES 进入某个目录时,会读取那个目录下的.messages文件 xferlog_enable=YES 启用xfer日志格式

connect_from_port_20=YES 允许采用20端口来传输数据

xferlog_std_format=YES

listen=YES 开启独立服务

pam_service_name=vsftpd

userlist_enable=YES

tcp_wrappers=YES

3、启动服务

service vsftpd start|stop|restart

# yum -y install lftp 安装客户端命令工具

# lftp 192.168.1.109 登录访问ftp服务器

# get file

实例1:允许匿名上传下载文件,并且上传到ftp服务端的/data/ftp

修改配置文件:

vim /etc/vsftpd/vsftpd.conf

anon_upload_enable=YES

anon_mkdir_write_enable=YES

anon_root=/data/ftp

注意:/data/ftp 目录权限

anon_other_write_enable 可以删除/重命名文件

重启服务

测试验证

实例2:允许本地用户访问ftp服务,并且不能来回切换目录,上传文件存放在/data/local 默认开启本地用户访问功能

登录测试:

# lftp 192.168.1.109

lftp 192.168.1.109:~> user redhat

Password:

lftp redhat@192.168.1.109:~> pwd

ftp://redhat@192.168.1.109/%2Fhome/redhat

默认是登录到本地用户的家目录,并且可以来回切换目录,不安全。

vim /etc/vsftpd/vsftpd.conf

chroot_local_user=YES

local_root=/data/local

注意:/data/local权限

重启服务

练习:

1、创建一个本地用户xiha,密码是redhat,不能登录操作系统。

# useradd -s /sbin/nologin xiha

# passwd xiha

2、xiha用户可以上传文件到你ftp服务器的/data/local目录下,并且不能来回切换目录 chroot_local_user=YES 只允许本地用户在自己的家目录中活动,不能切换目录 local_root=/data/local 更改本地用户上传文件的默认目录

chmod o+w /data/local

重启服务

测试验证

实例3:开启目录消息功能

cd /data/local ——>本地用户登录ftp的默认路径(/home/xxx)

vim .message

hello world hd

实例4:用户访问控制

/etc/vsftpd/ftpusers ——>用户拒绝列表

/etc/vsftpd/user_list ——>允许/拒绝列表

当userlist_deny=NO 代表允许

当userlist_deny=YES 代表拒绝

当同一个用户即在拒绝列表(ftpusers)里又在允许列表里(user_list),ftpusers拒绝优先。

day12

nfs<network file share>

用途:用于局域网中unix与类unix之间的文件共享

原理:共享目录

rpcbind tcp/111 :负责nfs数据的传输

nfsd :负责共享目录的发布

三部曲:(查看|安装——需求相应配置|启动服务)

1、查看并安装

yum -y install rpcbind

yum -y install nfs*

# rpm -qa|grep nfs 查看

nfs-utils-lib-1.1.5-6.el6.x86_64

nfs-utils-1.2.3-39.el6.x86_64

nfs4-acl-tools-0.3.3-6.el6.x86_64

# rpm -qa|grep rpcbind

rpcbind-0.2.0-11.el6.x86_64

2、创建共享目录并附权

# mkdir -p /nfs/share

# chown nobody.nobody /nfs/share/

# chmod 1777 /nfs/share/

3、发布共享目录

vim /etc/exports

/nfs/share *(ro)

#/nfs/share 192.168.1.0/24(rw)

# exportfs -rv 重新发布共享目录

4、启动服务

# service rpcbind start

Starting rpcbind: [ OK ]

# service nfs start

Starting NFS services: [ OK ]

Starting NFS quotas: [ OK ]

Starting NFS mountd: [ OK ]

Starting NFS daemon: [ OK ]

Starting RPC idmapd: [ OK ]

加入开机自动启动:

# chkconfig rpcbind on

# chkconfig nfs on

5、测试验证

cilent:

# showmount -e 192.168.1.109

Export list for 192.168.1.109:

/nfs/share *

# mount -t nfs 192.168.1.109:/nfs/share /u01 临时挂载

vim /etc/fstab

....

192.168.1.109:/nfs/share /u01 nfs defaults,ro 0 0 永久挂载

samba:

用途:与windows局域网文件共享协议cifs,提供类unix与windows之间相互访问。 smb:

确保iptables、selinux关闭。

1、检查是否安装samba软件

samba.x86_64 ——服务端软件包

samba-client.x86_64 ——客户端工具

samba-common.i686 ——通用包

samba-common.x86_64

2、安装软件包

# yum -y install samba

# rpm -aq |grep samba

samba-winbind-clients-3.6.9-164.el6.x86_64

samba-common-3.6.9-164.el6.x86_64

samba-3.6.9-164.el6.x86_64

samba-winbind-3.6.9-164.el6.x86_64

# rpm -q samba

samba-3.6.9-164.el6.x86_64

3、找到主配置文件

/etc/samba/smb.conf 不需要做任何配置

4、启动服务

# service smb start

Starting SMB services:

5、匿名用户测试

# smbclient -L //192.168.1.109 ——列出samba服务端的共享目录

Enter root's password: ——直接回车,以匿名用户的身份登录

Anonymous login successful

实例1:共享一个/samba/share目录

vim /etc/samba/smb.conf

[global]

workgroup = MYGROUP windows中显示的工作组

netbios name = MYSERVER 在windows中显示出来的计算机名

server string = Samba Server Version %v 对samba服务版本描述

security = user 验证登录方式。share ,user 运行级别较安全

passdb backend = tdbsam 帐号密码以数据文件的形式存放

[linux]

comment = samba share

path = /samba/share

browseable = yes 是否可以浏览

guest ok = yes 匿名用户访问

writable = yes 可写

修改目录权限:

# chmod 1777 /samba/share

实例2:通过用户名密码访问samba服务器

在服务端:smbpasswd -a xiha

# smbclient -U xiha //192.168.1.109/xiha ——默认本地用户共享出来的是自己的家目录 # smbclient -U xiha //192.168.1.109/linux ——linux是配置文件里定义的标签,真正的共享目录是/samba/share

通过挂载方式访问:

# mount -t cifs -o username=xiha,password=haha //192.168.1.109/linux /u02

实例3:用户的访问控制

[linux]

comment = samba share

path = /samba/share

public = yes

writable = yes

guest ok = yes

valid users = mor,test 用户访问控制,只允许mor和test用户访问

重启服务验证

service smb restart

day13

DNS(domain name system)域名管理系统:

说明:

dns出现前,linux操作系统用/etc/hosts

ip地址 主机名1 『主机名2 主机名3』

缺点:

为什么要使用DNS?

1、方便记忆,域名——dns解析——ip地址

2、好管理

dns作用:

域名的正向解析:域名——ip地址

域名的反向解析:ip——域名

全球总共有13台dns服务器。

dns服务的整体结构:

dns服务体系是一个庞大的分布式数据库。

dns采用树形层次结构。

对域名查询是分层次的。

顶级域:(.)根域

原理:

client——本地的hosts文件——dns缓存——找最近的dns——根域(.)....分层次询问 常见的顶级域名服务器:

com 商业组织(公司、企业)

edu 教育机构

gov 政府单位

org 非盈利性组织机构

net 网络通讯机构

mil 军事单位

int 国际组织

uk 英国

fr 法国

au 澳大利亚

ca 加拿大

cn 中国

tw 中国台湾

hk 中国香港

in 印度

jp 日本

su 前苏联

搭建一个dns服务器:

—— 192.168.1.109

建议:iptables、selinux关闭

主机名:

192.168.1.88 stu88

BIND:由互联网系统协会负责开发维护

三部曲:

1、查看是否安装,如果没有进行安装

# rpm -q bind

package bind is not installed

# rpm -aq|grep bind

bind-utils-9.8.2-0.17.rc1.el6_4.6.x86_64

PackageKit-device-rebind-0.5.8-21.el6.x86_64

bind-libs-9.8.2-0.17.rc1.el6_4.6.x86_64

rpcbind-0.2.0-11.el6.x86_64

samba-winbind-clients-3.6.9-164.el6.x86_64

samba-winbind-3.6.9-164.el6.x86_64

# yum -y install bind

# rpm -aq|grep ^bind

bind-utils-9.8.2-0.17.rc1.el6_4.6.x86_64 工具包,客户端软件 bind-libs-9.8.2-0.17.rc1.el6_4.6.x86_64 公共软件

bind-9.8.2-0.17.rc1.el6_4.6.x86_64 服务端

2、查看配置文件

/etc/logrotate.d/named 日志存放路径

/etc/named.conf 主配置文件

/etc/named.rfc1912.zones 区域文件

/var/named/named.localhost 正向域模板

/var/named/named.loopback 反向域模板

/etc/rc.d/init.d/named 启动脚本

3、修改配置文件

1)vim /etc/named.conf

options {

11 listen-on port 53 { any; };

12 listen-on-v6 port 53 { ::1; };

13 directory "/var/named";

14 dump-file "/var/named/data/cache_dump.db"; 15 statistics-file "/var/named/data/named_stats.txt";

16 memstatistics-file "/var/named/data/named_mem_stats.txt"; 17 allow-query { any; };

18 recursion yes;

2)vim /etc/named.rfc1912.zones

zone "abc.com" IN {

46 type master;

47 file "abc.com.zone";

48 allow-update { none; };

49 };

3) 创建正向区域文件

# cd /var/named/

# cp -a named.localhost abc.com.zone

# vim abc.com.zone

$TTL 1D ——缓存的生存周期

@ IN SOA abc.com . (

当前域 internet 开始授权 管理员邮箱 0 ; serial 更新序列号 1D ; refresh 更新间隔 1H ; retry 失败重试

1W ; expire 区域文件的过期时间 3H ) ; minimum 最小生存周期 @ NS .

dns A 192.168.1.109

www A 192.168.1.109

4、检查配置文件

# named-checkconf /etc/named.conf

# named-checkzone abc.com.zone /var/named/abc.com.zone

zone abc.com.zone/IN: loaded serial 0

OK

5、启动服务

# service named start

6、指定dns服务器

# vim /etc/resolv.conf

nameserver 192.168.1.109

7、测试验证

# nslookup

Server: 192.168.1.109

Address: 192.168.1.109#53

Name:

Address: 192.168.1.109

定义一个反向区域文件:

vim /etc/named.rfc1912.zones

zone "1.168.192.in-addr.arpa" IN {

53 type master;

54 file "192.168.1.zone";

55 allow-update { none; };

56 };

cd /var/named

# cp -a named.loopback 192.168.1.zone

1 $TTL 1D

2 @ IN SOA abc.com rname.invalid. (

3 0 ; serial

4 1D ; refresh

5 1H ; retry

6 1W ; expire

7 3H ) ; minimum

8 @ NS .

9 109 PTR .

重启服务测试验证:

# nslookup 192.168.1.109

Server: 192.168.1.109

Address: 192.168.1.109#53

109.1.168.192.in-addr.arpa name = .

总结:

1、修改主配置文件/etc/named.conf——定义了监听在哪个网段,允许哪个网段查询;一般any。

2、修改区域文件/etc/named.rfc1912.zones;在这里定义了正向区域文件和反向区域文件

3、到/var/named目录下,创建2个区域文件,注意权限和文件名。

4、检查配置文件是否ok,named-checkconf和named-checkzone

5、重启服务

6、测试验证,nslookup

定义多个域:

——192.168.1.109

——192.168.1.110

1、修改区域文件/etc/named.rfc1912.zones

2、创建1个区域文件,/var/named目录下

3、重启服务

定义多个网段:

参考:

vim /etc/named.rfc1912.zones

zone "abc.com" IN {

46 type master;

47 file "abc.com.zone"; 48 allow-update { none; }; 49 };

50

51

52 zone "hd.com" IN {

53 type master;

54 file "hd.com.zone"; 55 allow-update { none; }; 56 };

57 zone "1.168.192.in-addr.arpa" IN { 58 type master;

59 file "192.168.1.zone"; 60 allow-update { none; }; 61 };

zone "1.12.10.in-addr.arpa" IN { 65 type master;

66 file "10.12.1.zone"; 67 allow-update { none; }; 68 };

创建区域文件:

# cat 10.12.1.zone

$TTL 1D

@ IN SOA hd.com rname.invalid. ( 0 ; serial 1D ; refresh 1H ; retry 1W ; expire

3H ) ; minimum @ NS .

109 PTR .

110 PTR .

77 PTR .

88 PTR .

# cat 192.168.1.zone

$TTL 1D

@ IN SOA abc.com rname.invalid. ( 0 ; serial 1D ; refresh 1H ; retry 1W ; expire

3H ) ; minimum @ NS .

109 PTR .

110 PTR .

# cat abc.com.zone

$TTL 1D

@ IN SOA abc.com rname.invalid. ( 0 ; serial 1D ; refresh 1H ; retry 1W ; expire

3H ) ; minimum NS .

www A 192.168.1.109 redhat A 192.168.1.110 uplook A 10.1.1.122

# cat hd.com.zone

$TTL 1D

@ IN SOA hd.com rname.invalid. ( 0 ; serial 1D ; refresh 1H ; retry 1W ; expire

3H ) ; minimum NS .

dns A 192.168.1.109 www A 192.168.1.110

uplook A 10.1.12.88

stu A 10.1.12.77

测试验证:

[root@demo html]# nslookup 10.12.1.77 Server: 192.168.1.109 Address: 192.168.1.109#53

77.1.12.10.in-addr.arpa name = .

[root@demo html]# nslookup 10.12.1.88

Server: 192.168.1.109

Address: 192.168.1.109#53

88.1.12.10.in-addr.arpa name = .

[root@demo html]# nslookup 192.168.1.109

Server: 192.168.1.109

Address: 192.168.1.109#53

109.1.168.192.in-addr.arpa name = .

[root@demo html]# nslookup 192.168.1.110

Server: 192.168.1.109

Address: 192.168.1.109#53

110.1.168.192.in-addr.arpa name = .

[root@demo html]# nslookup

Server: 192.168.1.109

Address: 192.168.1.109#53

Name:

Address: 10.1.12.77

[root@demo html]# nslookup

Server: 192.168.1.109

Address: 192.168.1.109#53

Name:

Address: 10.1.12.88

day14

web [world wide web]全球信息广播的意思

工作原理:文件共享服务,只共享文件,接收和发送请求功能,默认端口是80. 一般来说,linux系统下,这个目录默认是在/var/www/html

搭建web服务:

一、搭建一个默认网站

三部曲:查看、安装、配置

服务端软件包:httpd(apache)

1、安装

# yum -y install httpd

2、查看

/etc/httpd/conf/httpd.conf ——主配置文件

/etc/httpd ——配置文件所在的目录

/etc/httpd/conf ——主配置文件所在目录

/etc/httpd/conf.d ——相关说明信息

3、启动服务

service httpd start

4、cd /var/www/html

echo "hello world " >index.html

web浏览器访问:192.168.1.109

二、基于虚拟主机的web服务

1、基于域名

2、基于ip

3、基于端口

基于域名的虚拟主机:

—— welcome to momowu (192.168.1.109) —— welcome to april (192.168.1.109)

1)配置dns,省略

2)修改配置文件

# pwd

/etc/httpd/conf

# cp httpd.conf httpd.conf.bak

vim httpd.conf

<VirtualHost *:80>

ServerAdmin root@momowu.com

DocumentRoot /www/momowu

ServerName

ErrorLog logs/momowu.com-error_log

CustomLog logs/momowu.com-access_log common </VirtualHost>

<VirtualHost *:80>

ServerAdmin root@april.com

DocumentRoot /www/april

ServerName

ErrorLog logs/april.com-error_log

CustomLog logs/april.com-access_log common </VirtualHost>

3)创建相应目录及首页文件

# mkdir /www/momowu -p

# mkdir /www/april -p

# echo "welcome to momowu" > /www/momowu/index.html # echo "welcome to april " > /www/april/index.html

4)重启服务

service httpd restart

5)测试验证

用户需要验证登录,怎么实现?

—— welcome to momowu (192.168.1.109) 需要用户名密码验证

1、修改配置文件

vim /etc/httpd/conf/httpd.conf

<VirtualHost *:80>

ServerAdmin root@momowu.com

DocumentRoot /www/momowu

ServerName

ErrorLog logs/momowu.com-error_log

CustomLog logs/momowu.com-access_log common

<Directory /www/momowu>

Options Indexes

AllowOverride None

Order allow,deny

Allow from 192.168.1.0/24

AuthName "please input your username & key" AuthType basic

AuthUserFile "/etc/httpd/conf/.htpasswd" Require valid-user

</Directory>

</VirtualHost>

2、重启服务

service httpd restart

3、创建用户密码

# htpasswd -c /etc/httpd/conf/.htpasswd user01

New password:

Re-type new password:

Adding password for user user01

# htpasswd -b /etc/httpd/conf/.htpasswd user02 123456 Adding password for user user02

基于端口的虚拟主机:

1、修改配置文件

Listen 80

Listen 8080

<VirtualHost *:80>

ServerAdmin root@momowu.com

DocumentRoot /www/momowu

#ServerName

ErrorLog logs/momowu.com-error_log

CustomLog logs/momowu.com-access_log common

<Directory /www/momowu>

Options Indexes

AllowOverride None

Order allow,deny

Allow from 192.168.1.0/24

AuthName "please input your username & key" AuthType basic

AuthUserFile "/etc/httpd/conf/.htpasswd" Require valid-user

</Directory>

</VirtualHost>

<VirtualHost *:8080>

ServerAdmin root@april.com

DocumentRoot /www/april

#ServerName

ErrorLog logs/april.com-error_log

CustomLog logs/april.com-access_log common

</VirtualHost>

2、重启服务验证

基于ip地址的虚拟主机

1、修改配置文件

Listen 192.168.1.109:80

Listen 10.1.1.112:80

<VirtualHost 192.168.1.109:80>

ServerAdmin root@momowu.com

DocumentRoot /www/momowu

ServerName

ErrorLog logs/momowu.com-error_log

CustomLog logs/momowu.com-access_log common

<Directory /www/momowu>

Options Indexes

AllowOverride None

Order allow,deny

Allow from 192.168.1.0/24

AuthName "please input your username & key"

AuthType basic

AuthUserFile "/etc/httpd/conf/.htpasswd"

Require valid-user

</Directory>

</VirtualHost>

<VirtualHost 10.1.1.112:80>

ServerAdmin root@april.com

DocumentRoot /www/april

ServerName

ErrorLog logs/april.com-error_log

CustomLog logs/april.com-access_log common

</VirtualHost>

2、重启服务验证

# route add -net 10.1.1.0/24 dev eth0

mysql安装:

# yum -y install mysql mysql-connector-odbc mysql-connector-java.noarch mysql-devel.x86_64 mysql-server

# yum -y install php php-mysql

启动mysql:

# /etc/init.d/mysqld start

强制设置密码:

# /usr/bin/mysqladmin -u root password 'mysql'

# /usr/bin/mysqladmin -u root -h password 'mysql'

登录mysql:

# mysql -uroot -p

Enter password:

...

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql>

mysql>

mysql>

mysql> show databases;

+--------------------+

| Database |

+--------------------+

| information_schema |

| mysql |

| test |

+--------------------+

3 rows in set (0.00 sec)

mysql>

mysql> create database uplook; ——创建数据库uplook Query OK, 1 row affected (0.00 sec)

mysql> show databases;

+--------------------+

| Database |

+--------------------+

| information_schema |

| mysql |

| test |

| uplook |

+--------------------+

4 rows in set (0.00 sec)

mysql> use mysql; ——切换数据库

mysql> show tables; ——查看该库里的表

在uplook数据库里创建一张表:

mysql> use uplook;

mysql> create table one(

-> id int,

-> uname char(8),

-> age int);

Query OK, 0 rows affected (0.02 sec)

mysql> show tables;

+------------------+

| Tables_in_uplook |

+------------------+

| one |

+------------------+

1 row in set (0.00 sec

mysql> desc one;

+-------+---------+------+-----+---------+-------+

| Field | Type | Null | Key | Default | Extra |

+-------+---------+------+-----+---------+-------+

| id | int(11) | YES | | NULL | |

| uname | char(8) | YES | | NULL | |

| age | int(11) | YES | | NULL | |

+-------+---------+------+-----+---------+-------+

3 rows in set (0.01 sec)

mysql> insert into one(id,uname,age) values(2,'zhangsan',18);

Query OK, 1 row affected (0.00 sec)

mysql> insert into one(id,uname,age) values(3,'lisi',88);

Query OK, 1 row affected (0.00 sec)

day15

搭建一个论坛:

1、在你的浏览器里输入 ——论坛,可以发表评论,可以添加用户。

2、在你的浏览器里输入192.168.1.109:8080——访问到静态网页(welcome to hd!)

步骤:

1、搭建dns。

2、下载论坛包:

lftp 192.168.1.110

phpldapadmin-1.2.3.tgz、Discuz_X2.5_SC_UTF8.zip

3、测试php页面

vim /var/www/html/index.php

<?php

phpinfo()

?>

web浏览器:——php的测试页面

4、解压相关包

phpldapadmin-1.2.3.tgz 解压到 /var/www/html

# chown apache.apache . -R

进入数据授权:

mysql> grant all privileges on *.* to 'root'@'192.168.1.109' identified by 'mysql';

mysql> flush privileges;

更多相关推荐:
电子商务学习心得体会

电子商务心得管理学院营销10013100806022赵潮通过一个学期电子商务的学习,我对电子商务有了一定程度的了解,同时也深刻的体会到了电子商务在我们日常生活和工作中的作用。随着企业信息化和商务电子化,企业只有…

学习电子商务总结

经过了短短两周《电子商务》的学习,我学到了很多关于网上交易电子商务的知识,使我受益匪浅。《电子商务》是前沿的学科,学习电子商务意味着我们要学习计算机网络技术方面的基本理论和基本知识,广泛的了解各种不同的新概念,…

电子商务培训总结

备战技能大赛淮南职业教育中心周艳在这经济高速发展的时代,传统的购物方式、消费习惯,将会慢慢的被时代所淘汰,取而代之的是网上购物。网上购物是以后发展的趋势,然而网上购物必须依托发达的电子商务平台。电子商务是指利用…

电子商务学习心得

历经一学期的电子商务学习,从开始接触电子商务概念,到学习电子商务专业理论知识,到自己想试着去一些电子商务平台做一些自我实践,应用电子商务的知识。有成功也有失败,有过激情也有过失望。但是今天我要说,电子商务这条路…

如何学习电子商务-比较靠谱的总结

www.bj-accp.com法国思想家笛卡尔曾经说过一句话:“最有价值的知识是有关方法的知识。”之所以这么说,是因为方法能解决问题。电子商务、互联网作为一个新兴行业,自身处于快速变化过程中,在学习过程中,我认…

电子商务学习心得(刘阳)

作业题目:电子商务学习心得姓名:刘班级:电子商务课程名称:电子商务代课教师:胡一波完成时间:批改教师:批改时间:阳A080420xx/6/1电子商务学习心得我感觉学习了电子商务这门课学到了两样东西:1.了解到什…

电子商务课程学习小结

姓名:李旭鹏一、学习过程回顾不知不觉间,一学期的时间又这样结束了。这是我第二次上电子商务,但一次比一次有更多的收获。通过一学期的上课,我对电子商务——这个眼下十分热门的词汇有了一个比较清楚的认识。就像老师所说,…

电子商务课程总结

电子商务1电子商务的基本模式是网上购物2我学习了电子商务的种类B2B是一种电子交易在企业和其供货商之间例如在线原材料购买和预定B2C是一种交易关系在企业和最终客户之间商品和服务都直接在网上被提供例如亚马逊C2C...

0电子商务实习个人周记总结-大学毕业顶岗实习手册

电子商务实习周记和总结实习第一个星期实际算是适应期主要了解一些公司的背景产品发展方向和前景等另外尝试更同事多沟通多听从交谈中也能够学到不少东西同事们都很热心很照顾我经常在我碰到困难的时候便主动伸出援助之手令我非...

电子商务学习心得

电子商务学习心得20xx080214李林娟通过一个学期电子商务的学习我对电子商务有了一定程度的了解同时也深刻的体会到了电子商务在我们日常生活和工作中的作用随着企业信息化和商务电子化企业只有成功实现内部管理的信息...

电子商务学习心得

电子商务学习心得首先何为电子商务初期的电子商务认识阶段已让我深深着迷原来商务可以这样来做原来网络不只是玩这是刚上学时候的想法如何去策划电子商务面对许多的方法和技巧如果没有一个系统完整有效的策划开展电子商务真的是...

电子商务学习心得体会

电子商务学习心得体会电子商务学习心得体会一电子商务学习心得体会这学期我们学习了电子商务这门课每堂课都收获良多以至于我每周都期待着这门课因为这门课学到了我们以前都没接触但想接触的内容刘娜老师讲课讲得精彩我们学的也...

学习电子商务总结(38篇)