1. 命令的基本格式.
命令 [-选项] 参数
命令 : 命令本身
选项 : 对命令的功能进行微调
参数 : 操作的对象
2. 目录处理命令ls
命令名称 : ls
命令原意 : list
命令路径 : /bin
执行用户 : 所有用户都能执行
选项 :
ls 如果没有参数 就是当前路径
ls -l 查看文件或目录的属性
ls -a 显示隐藏文件 Linux中以点开始的文件都是隐藏文件
ls -h 人性化显示
快捷键:
ctrl + l 清屏
ctrl + c 终止命令
ctrl + u 删除所有字符
ctrl + a 到行首
Ctrl + e 到行尾
(-)(<rw-><r--><r-->) 1 root root 100 (Apr 22 1:10) install.log
第一部分: 文件的类型和权限位
第一个字符: 文件的类型
d -> 表示是目录
- -> 表示是文件
l -> 表示是软链接
后九个字符: 表示权限位
<1> 所有者的权限位 user u
<2> 所属组的权限位 group g
<3> 其他人的权限位 other o
r 读权限 read
w 写权限 write
x 执行权限 execute
- 没有权限
第二部分: 文件的硬链接次数
第三部分: 文件的所有者
第四部分: 文件的所属组
第五部分: 文件的大小
第六部分: 文件的最后修改时间
第七部分: 文件名
3. 提示符
[<root>@<localhost> <~>]<#>
第一部分 : 当前登录的用户
第二部分 : 主机名
第三部分 : 表示我当前所在的目录
~ 表示用户的家目录
超级管理员 /root
普通用户 /home/用户名
第四部分 : 表示用户的类型
# -> 表示超级管理员
$ -> 表示是普通管理员
4. 目录处理命令
(1) cd 目录 切换到指定目录中
cd . -> 切换到当前目录中
cd .. -> 切换到上一级目录中
cd ~ == cd 回家
相对路径和绝对路径
cd /bin == cd ../bin
(2) pwd 查看当前的目录绝对路径
(3) linux的目录结构
/bin -> 存储命令(所有用户都能执行的)
/sbin -> 存储命令(超级管理员执行的命令)
/boot -> 存储系统的文件
/dev -> 存储设备文件名的目录
/etc -> 存储配置文件的目录
/lib -> 系统的函数库存储的目录
/tmp -> 临时文件的目录
/var -> 存储系统日志的目录
/mnt -> 挂载目录
/media -> 挂载目录
/root -> 超级管理员的家目录
/home -> 普通用户的家目录
(4) 创建目录 mkdir
mkdir wwj
mkdir -p ./yhf/wwj 一次性创建多级目录
mkdir -p ./yhf/{1,2,3,4,5}
(5) 删除目录 rmdir 这个目录必须是空目录
rmdir yhf
5. 文件处理命令
(1) 创建文件 touch
touch 文件名
(2) 删除文件 rm
rm 文件名 (y yes|n no)
rm -f 文件名 强制删除文件
rm -v 文件名 显示删除的细节
rm -fv 文件名
(3) 查看文件中的内容
cat 文件名 (显示全部信息)
cat -n 文件名 显示行号
less文件名
more 文件名 (分页显示文件中的内容)
enter 下
b 上
head 文件名 显示文件的头10行
head -n 文件名 显示文件的头n行
tail 文件名 显示文件的末尾10行
tail -n 文件名 显示文件的末尾n行
tail -f 追踪查看后n行
(4) 链接文件 (快捷方式)
ln -s 源文件 链接文件
-s 表示我要创建软链接文件
6. 目录和文件都能操作的命令
(1) rm
rm -fv 文件名 f强制删除focus v显示删除的细节verbose
rm -rfv 目录名
r 表示删除目录
f 表示强制删除
v 表示显示删除的细节
rmdir 只能删除空目录
rm -rfv 可以删除任意的目录
(2) cp 复制 + 改名
复制文件
cp 源文件 目标目录
复制目录
cp -r 源目录 目标目录
-r 复制目录
-p 连带文件属性复制
-d 若源文件是链接文件,则复制链接属性
-a 相当于 -pdr
(3) 剪切 mv 改名
剪切文件
mv 源文件 目标目录
剪切目录
mv 源目录 目标目录
7. 权限管理
-rw-r--r--
r 读权限 read 4
w 写权限 write 2
x 执行权限 execute 1
--- -> 0
r-- -> 4
rw- -> 6
rwx -> 7
r-x -> 5
-w- -> 2
-wx -> 3
--x -> 1
---------------------------------------------------------
| |文件 |目录 |
---------------------------------------------------------
| r |读取文件中的内容 |可以查看目录中的信息 |
---------------------------------------------------------
| w |修改文件中的内容 |可以修改目录中的文件(删除 添加)|
---------------------------------------------------------
| x |可以执行这个文件 |可以cd到这个目录中 |
---------------------------------------------------------
chmod u+x index.php 加权限
chmod g+x,o+x index.php 批量加权限
chmod u=r-- index.php (补全)
chmod 755 index.php
7 u rwx
5 g r-x
5 o r-x
8. 属主
useradd 用户名 -> 创建用户
passwd 用户名 -> 设置密码
chown 用户名 文件
chown user1:user1 aa 改变属主同时改变属组
9. 帮助命令 man manual 手册
man 命令
j 下
k 上
q 退出
命令 --help
10. 查找指令
(1) whereis 命令 查看(指令的位置)和(帮助文档的位置)
(2) find 查询路径 -name index.php 根据文件名查找文件
如果不加路径 表示当前路径
find 查询路径 -user root 根据所有者查询文件
find 查询路径 -group root 根据所属组查询文件
find 查询路径 -type f 根据类型查询文件
find 查询路径 -perm 755 根据权限查询文件
(3) grep global search regex expresion and print
grep 正则表达式 文件名
grep 'root' /etc/passwd 匹配有root的行
grep '^root' /etc/passwd 匹配以root开始的行
grep -i 不区分大小写 ignore 忽略
grep -v 反向匹配 invert 反向
grep -iv 'test' index
(4) 管道符
命令1 | 命令2 命令1执行完的结果作为命令2操作的内容
11. 压缩解压缩
压缩包的后缀名
.tar.gz -> gzip
.tar.bz2 -> bzip2
压缩
tar -xxx 三个字符的顺序是不能颠倒的
第一个字符 表示使用的算法 z gzip j bzip2
第二个字符 表示是压缩还是解压缩 c压缩 x 解压缩
第三个字符 压缩包的名字 f
-v:显示压缩过程
tar -zcf
z 表示使用 gzip压缩算法压缩
c 表示我是在压缩 create
f 指定压缩之后的包的名字
tar -zcf ./passwd.tar.gz /etc/passwd
tar -jcf
j 表示使用 bzip2压缩算法
c 表示要压缩
f 压缩包的名字
解压缩
tar -zxf
z 表示解压所用的算法 gzip
x 表示解压缩
f 指定压缩包
tar -jxf
tar -xvf root.tar.bz2 -C /tmp/ 指定解压缩位置
12. 关机和重启
关机
shutdown -h now (halt)
halt
重启
shutdown -r now (reboot)
reboot
13. 挂载和卸载
(1) 挂载
IDE /dev/sda1
SATA /dev/hda2
光盘 /dev/cdrom -> /dev/sr0
mount 光盘 挂载点(目录)
/mnt
/media
mount /dev/cdrom /mnt
mount /dev/sr0 /mnt
mount: block device /dev/sr0 is write-protected mounting read-only 表示只读挂载
mount 查看系统中已经挂载了的设备
/dev/sr0 on /mnt type iso9660 (ro)
/dev/sda1 on /boot type ext4 (rw)
ls | wc -l 统计文章中有多少行
(2) 卸载
umount 设备文件名或挂载点
umount /dev/cdrom 设备文件
umount /mnt 挂载点
3-------------------------------
linux第三天 vi编辑器和软件安装
一. VI编辑器
(1) 编辑器的种类
vi
vim
(2) 编辑器模式
<1> 插入模式
<2> 命令模式
<3> 末行模式
(3) 模式之间的转化
<1> 打开文件进入 命令模式
<2> 命令模式 -> 插入模式 a:光标后插入 | i:光标前插入 | o:下方新建行插入 | A:本行结尾插入 | I:本行开头插入 | O:上方新建行插入
<3> 插入模式 -> 命令模式 esc
<4> 命令模式 -> 末行模式 shift + :
<5> 末行模式 -> 命令模式 回车
(4) 光标移动 (命令模式)
h -> 左
j -> 下
k -> 上
l -> 右
gg -> 移动到第一行
G -> 移动到最后一行
nG -> 移动到第n行
:n -> 移动到第几行 *
(5) 保存和退出 (末行模式)
:w -> 保存(并不退出)
:q -> 退出(如果修改了就不能执行了)
:q! -> 强制不保存退出
:wq -> 保存退出
:w index2.php -> 另存为
(6) 删除字符 (命令模式)
x 删除一个字符
nx 删除当前光标之后的n个字符
dd 删除一行
ndd 删除当前光标之后的n行
dG 从光标所在行删除到文件尾
(7) 撤销和回撤 (命令模式)
u 撤销
ctrl + r 回撤
(8) 复制 (命令模式)
yy 复制当前行
nyy 复制n行
(9) 粘贴 (命令模式)
p -> 在当前行的下面粘贴
P -> 在当前行的上面粘贴
(10) 行号 (末行模式)
:set nu 显示行号 number
:set nonu 不显示行号
(11) 配置文件 vim命令的配置文件
<1> 配置文件的位置 当前用户的家目录
<2> 配置文件的文件名 .vimrc 这个文件需要我们手动创建
<3> 配置文件的内容 末行模式的指令 每个指令单独占一行
<4> 配置文件的使用 当我们执行vim指令的时候读取这个配置文件并且把配置文件中的内容在打开的文件中执行一次
(12) 查找和替换(末行模式)借助正则表达式
查找
:/要查询的字符 这个/表示我要查询
n 下一个
N 上一个
替换
1,12s@yan@wwj@
1,12s 搜索的范围
@yan 要替换的内容
@wwj 替换成的内容
:%s#http://roclinux\.cn/index\.php#https://www\.baidu\.com/index\.php#g #代替/
%s/^/\/\//g % 表示全文匹配 g行内全搜索(默认搜索行内第一条),\转义
.,$s^/# . 表示当前行,$末行
替换 aaa 2008-07-01 bbb
ccc 2008-07-12 aaa
:1,$s/\([0-9]\{4\}-[0-9]\{2\}-[0-9]\{2\}\)/'\1'/g [0-9] 表示 0 到 9 之间的任一个数字,{n} 表示将此符号前面的元素重复 n 遍,如果在匹配方案中用到了(),则表示要暂存括号中所匹配到的内容,而 \1 表示替换为暂存的内容(题外话:如果存在多个括号组,则后面要通过编号来依次对应,如 \1、\2、\3 等)。在本例中,我们匹配的是 2008-07-01,那么加了括号后就会被暂存起来,而在后面的 \1 处就会被替换过来,外面再加一对引号,就完成了!
二. 软件安装 ---------------------------
(1) 软件包的分类
<1> 源码包(使用C语言写出来的代码)
缺点 : 浪费时间
优点 : 运行速度快
<2> rpm包(经过编译之后的软件包)
缺点 : 依赖性
优点 : 安装速度快
库文件依赖查询 www.rpmfind.net
(rpm -ivh /mnt/CentOS/mysql-connector-odbc-3.51.26r1127-1.el5.i386.rpm )
Libodbcinst.so.2
(2) rpm安装软件包
rpm软件包全名:
tree-1.5.3-2.el6.i686.rpm
tree 软件包名
1.5.3 软件包的版本
2 发布的次数
el6 适用的操作系统 Centos
i686 硬件平台
rpm 扩展名
rpm软件包名:
tree
安装
rpm -ivh 软件包全名
rpm -ivh tree-1.5.3-2.el6.i686.rpm
i install 安装
v verbose 显示详细信息
h 显示安装进度
升级
rpm -Uvh 软件包
-U 升级
卸载
rpm -e 软件包名
查询
rpm -q 软件包名 查询软件包是否已经安装
rpm -qi 软件包名 查询软件包的详细信息
rpm -ql 软件包名 查询软件安装了哪些文件
rpm -qa | grep httpd mysql 显示所有安装包
(3) yum安装软件包(rpm)
<1> yum仓库
公网上的仓库 -> 远程yum源
光盘 -> 本地yum源
<2> yum的配置文件
# cd /etc/yum.repos.d/ (*.repo)
# ls
Centos-Base.repo -> 网络yum源
Centos-Media.repo -> 本地yum源 光盘
[base]
name=xxx
baseurl=file:///mnt 指定yum源地址
gpgcheck=0 不检测软件的安全性
enable=1 表示启用这个yum源
强调:
(1) 必须挂载光盘
(2) 只有以.repo结尾的文件才是yum的配置文件
(3) 默认是Centos-Base.repo生效(网络yum源生效)
yum的安装:
yum -y install 软件包名
install 安装
y 我确定要安装 yes
yum的卸载:
yum -y remove 软件包名
(4) 源码包安装软件包
网络配置:
# cd /etc/sysconfig/network-scripts/
# vim ifcfg-eth0
修改:
BOOTPROTO='dhcp' => BOOTPROTO='static'
ONBOOT='no' => ONBOOT='yes'
添加:
IPADDR=192.168.140.1xx
# service network restart 重启网络服务 重新加载网卡配置文件
xshell 连接linux
ssh root@192.168.140.249
(1) # ./configure --prefix=/usr/local 配置
/usr/local 源码包安装的路径
(2) # make 编译 将c代码解析成机器指令
(3) # make install 安装
补充:
date 查看系统时间
date -s 20190220 设定日期
date -s 09:30:00 设定时间
date -s '20190220 09:30:00' 设定时间
du -sh 目录名 统计目录大小
-s 和
-h 单位
4-------------------------------------------
第四天 用户管理和服务管理
一. 用户管理
(1) 用户相关的配置文件
<1> /etc/passwd 存储了用户的基本信息
root:x:0:0:root:/root:/bin/bash
第一部分 : 用户名
第二部分 : 密码位
第三部分 : 用户ID
第四部分 : 用户组ID
第五部分 : 用户的描述信息
第六部分 : 用户的家目录
第七部分 : 登录后的shell
<2> /etc/shadow
root:$6$/FFvwbMN5J0:16912:0:10:2:2:16918:
第一部分 : 用户名
第二部分 : 加密的密码 如果没有密码 就是!!
第三部分 : 上一次修改密码的时间 从1970年1月1日到修改密码的天数 16912
第四部分 : 密码不可修改的时间 0 表示随时可以修改密码
第五部分 : 密码必须修改的时间
第六部分 : 修改密码之前的提示时间
第七部分 : 密码的宽限时间
第八部分 : 用户失效的时间 从1970年1月1日到失效日期的天数
第九部分 : 保留位
<3> /etc/group
root:x:0:
第一部分 : 用户组名
第二部分 : 用户组密码位
第三部分 : 用户组ID
第四部分 : 用户组中的附加成员
(2) 添加用户
useradd 用户名
我们添加的用户ID是从500开始
useradd -g 组名 用户名 -g 指定所属组
useradd -G 附加组 用户名
useradd -c 说明 用户名
useradd -d 家目录 用户名
(3) 设置密码
passwd 用户名 -> 为指定的用户修改密码
passwd -> 修改当前用户的密码
(4) 删除用户
userdel 用户名 不删除用户的家目录
userdel -r 用户名 删除用户的同时删除家目录
(5) 添加用户组
groupadd 用户组名
(6) 删除用户组
groupdel 用户组名
(7) 给用户添加附加组
gpasswd -a 用户名 附加组
gpasswd -d 用户名 附加组
(8) 其他命令
<1> id 查看当前用户信息
<2> su 切换用户
(9) ACL权限 (access control list)
设置acl权限 :
<1> 添加
setfacl -m u:用户名:权限 文件
setfacl -m g:用户组:权限 文件
m 表示添加
u 用户
set file acl
g 组
<2> 删除
setfacl -b 文件 删除文件的所有的acl权限
setfacl -x u:用户名 文件 删除文件的指定用户的acl权限
查看acl权限 :
getfacl 文件名
<3> setfacl -m d:u:aa:rwx -R /test acl默认权限。d 含义:目录 dir
默认权限只能赋予目录 //d 没有意义 -R有意义
注意:如果给目录赋予acl权限,两条命令都要输入
-R 递归
-m u:用户名:权限 -R 只对已经存在的文件生效
-m d:u:用户名:权限 -R 只对未来要新建的文件生效
二. 输出重定向
> 正确覆盖重定向
>> 正确追加重定向
ls > index.php
ls -lh >> index.php
2> 错误覆盖重定向
2>> 错误追加重定向
lss 2> index2.php
lss 2>> index2.php
正确和错误输出都存储在一个文件中
lss >> index.php 2>&1
lss >> index.php 2>> index2.php
三. 服务管理
(1) 查看进程 (aux前不加-)
ps aux
a 显示前台进程
x 显示后台进程
u 显示运行进程的用户
(2) 查看进程的层次结构
pstree
(3) top 动态监控服务器的进程
shift + P 按照CPU使用从高到底排序
shift + M 按照MEM使用从高到底排序
q 退出
(4) 进程管理
kill -9 PID
killall -9 进程名称 Linux killall 用于杀死一个进程,与 kill 不同的是它会杀死指定名字的所有进程。
pkill -9 进程名称 Linux pkill 用于杀死一个进程,与 kill 不同的是它会杀死指定名字的所有进程,类似于 killall 命令。kill 命令杀死指定进程 PID,需要配合 ps 使用,而 pkill 直接对进程对名字进行操作,更加方便。
w 判断登录用户
pkill -9 -t 终端号 把某个终端登录的用户踢出
pkill -9 -t tty1 把本地登录终端1登录用户踢出
(5) 服务管理
<0> 运行级别
vim /etc/inittab
0 关机
1 单用户
2 多用户 不能远程连接
3 多用户字符界面
4 保留
5 图形化界面
6 重启
不同的运行级别本质是 背后运行的进程不一样
2. 查看不同运行级别下运行的进程
chkconfig --list | less
3. 查看默认的运行级别:
# vim /etc/inittab 中有配置
# runlevel
<1> rpm软件包安装的服务
自启动
① chkconfig --list中在运行级别为3的进程如果是on 就是自启动
chkconfig --level 3 httpd on
② vi /etc/rc.local---->/etc/rc.d/rc.local
/etc/rc.d/init.d/httpd start
手动启动
/etc/rc.d/init.d/httpd start | stop | status | restart
service httpd start | stop | status | restart
<2> ntsysv **
所有系统默认安装服务都可以使用ntsysv命令进行自启动管理
<3> 源码包安装的服务器
关闭防火墙
# iptables -F
# iptables -X
# iptables -Z
# service iptables save
# yum -y install gcc
# yum -y install gcc-c++
# yum -y install make
# yum -y install pcre-devel
apr 在apr目录中执行
# ./configure --prefix=/usr/local/apr
# make
# make install
apr-util 在apr-util目录中
# ./configure --prefix=/usr/local/apr-util --with-apr=/usr/local/apr
# make
# make install
httpd
# ./configure --prefix=/usr/local/apache --with-apr=/usr/local/apr --with-apr-util=/usr/local/apr-util
# make
# make install
自启动
/etc/rc.local 这个配置文件是在系统启动完之后加载的文件
手动启动
/usr/local/apache/bin/apachectl start
四. 循环定时任务
1、crontab命令选项 循环定时任务
* * * * * 命令
第一个:一小时中第几分钟 0-59
第二个:一天中第几个小时 0-23
第三个:一个月中第几天 1-31
第四个:一年第几个月 1-12
第五个:一周中星期几 0-6
# crontab -e
-u指定一个用户
-l列出某个用户的任务计划
-r删除某个用户的任务
-e编辑某个用户的任务
命令补充:
cat /proc/cpuinfo 文件保存了CPU设备信息
dmesg 查看系统启动信息
cat /var/log/dmesg 系统启动信息日志
5----------------------------------------
第五天: 网络配置和文件服务器
零. 补充
1. 时间
date 显示当前系统的时间
修改日期 date -s 20160427
修改时间 date -s 14:04:20
2. 查看目录的大小
du -sh
目录的本质是 存储了目录中的文件名或目录名
3. 周期性任务计划 crontab
# crontab -e 打开了系统的周期性任务计划的配置文件
* * * * * echo "aaa" >> /index.php
第一个* : 分 1 - 59
第二个* : 时 1 - 23
第三个* : 日 1 - 31
第四个* : 月 1 - 12
第五个* : 周 1 - 7
* * * * * 命令
10 * 31 * * 命令
10 * * * * 命令
5 4 * 5,7,10 * 命令
crontab -l 查看周期性任务计划
crontab -r 删除周期性任务计划
一. 网络配置
192.168.140.250
0 - 255 => 256 255 - 0 + 1 = 256 2 ^ 8
2^8 * 2^8 * 2^8 * 2^8 = 2^32 约等于 40亿
内网IP地址 : NAT
10.0.0.0 - 10.255.255.255
172.16.0.0 - 172.31.255.255
192.168.0.0 - 192.168.255.255
端口:
apache 80
mysql 3306
ftp 21 20
(1) 设置IP地址
# vim /etc/sysconfig/network-scripts/ifcfg-eth0
DEVICE="eth0" 设置网卡的名字
BOOTPROTO="" 网卡获取IP地址的方式
static 需要手动配置IP地址
IPADDR=192.168.140.249
dhcp 自动获取IP地址(原)
HWADDR="xxxx" 网卡的硬件地址
ONBOOT="" 是否在开机的时候启动网卡
yes
no
TYPE="Ethernet" 以太网
UUID="aaaaa" 计算机识别网卡
# service network restart
# /etc/rc.d/init.d/network restart
(2) 设置主机名
# vim /etc/sysconfig/network
HOSTNAME=wangweijing
# shutdown -r now 需要重启才能生效
#
# hostname 查看当前的主机名
#
(3) 配置DNS
# vim /etc/resolv.conf
nameserver 8.8.8.8 每一行表示一个DNS服务器
nameserver 114.114.114.114
(4) 网络命令
1、ifconfig 显示所有网卡的信息
ifconfig eth0 192.168.140.200 临时生效
2、ifup eth0 启用网卡
ifdown eth0 禁用网卡
3、netstat -tnl
查看当前系统已经被监听的端口 端口就代表后端的服务
netstat -an 查看所有网络连接
netstat -tlun 查看tcp和udp协议监听端口
netstat -rn 查看路由 default:默认路由(网关)
4、添加网关:
route add default gw 192.168.140.254 网关 -> 默认路由
gw gateway 网关
查看网关:
route -n
netstat -rn
route 查看路由
route add default gw 192.168.140.1 手工设定网关,临时生效
route del default gw 192.168.190.6 删除网关
配置网关
# vim /etc/sysconfig/network
GATEWAY=192.168.0.1
上网:
<1> IP|子网掩码 vim /etc/sysconfig/network-scripts/ifcfg-eth0
<2> DNS vim /etc/resolv.conf
# vim /etc/resolv.conf
nameserver 114.114.114.114
<3> 网关 route add default gw xxx.xxx.xxx.xxx
二. 文件服务器
(1) vsftpd 主要是与我们的系统绑定
(2) 原理
20端口 : 数据 传输
21端口 : 命令 传输
(3) 安装
# yum -y install vsftpd
(4) 启动
# /etc/rc.d/init.d/vsftpd start
# service vsftpd start
# netstat -tnl | grep 21
(5) 用户认证 (依赖于linux主机的认证)
文件服务器的用户 就是我们linux的系统用户
(6) 连接文件服务器
关闭防火墙
# iptables -F
# iptables -X
# iptables -Z
# service iptables save
# vim /etc/selinux/config
SELINUX=disabled
# shutdown -r now
cmd: ftp IP
ftp://username@IP
(7) 文件服务器的配置文件
<1> /etc/vsftpd/vsftpd.conf 主配置文件
listen_port=21 表示数据端口
connect_from_port_20=YES 表示使用20端口数据传输
local_enable=YES 允许系统用户登录
write_enable=YES 允许上传
local_umask=022 默认上传权限
777 755
local_max_rate=300 上传限速
<2> /etc/vsftpd/ftpuser 黑名单
6--------------------------------
第六天 : samba 和 防火墙
零. ssh协议 ssh服务
ssh端口 : 22
软件 : openssl
yum -y install openssl
sshd服务是在系统启动的时候就启动了
chkconfig --list | grep 'sshd'
scp
上传
192.168.140.125
scp ./index.php root@192.168.140.125:/root
下载
scp root@192.168.140.125:/root/index.php ./
一. samba 网上邻居
(1) 端口:
vsftpd : 20 21
samba : tcp 139 445 Web MySQL
udp 137 138 DNS
(2) 安装的软件
vsftpd : yum -y install vsftpd
samba : samba yum -y install samba
samba-common (默认安装)
samba-client (默认安装)
(3) samba的配置文件
/etc/samba/smb.conf
这个配置文件中以 # 和 ;开始的都是注释
全局段:
server string = .... %v 对samba服务器的描述 %v 表示samba的版本
log file = 指定samba日志文件的位置
max log size = 指定日志文件的大小
security = 定义安全级别
user 需要用户认证
share 所有人都能访问
用户段:
[目录名]
comment = 描述信息
browseable = yes 读权限
writeable = yes 写权限
path = /wwj 真实目录
(4) samba的用户
samba的用户就是我们系统的用户,但是密码需要我们重新进行设置
smbpasswd -a 用户名
(5) 连接samba
关闭防火墙
# iptables -F
# iptables -X
# iptables -Z
# service iptables save
#
# vim /etc/selinux/config
SELINUX=disabled
# shutdown -r now
运行 : \\IP
dos : net use /del * 清除缓存数据
net use * /del
(6) 启动
service smb start
service nmb start
二. 防火墙 iptables
(1) 链
INPUT -> 对进入服务器的数据包进行检测
OUTPUT -> 对出去的数据包进行检测
(2) filter(过滤) 表:
这个表中存储了INPUT和OUTPUT连上的规则
(3) 防火墙的配置原则
<1> 允许所有,逐个拒绝
<2> 拒绝所有,逐个允许
(4) 防火墙软件 iptables
# yum -y install iptables 默认安装了
# chkconfig --list | grep 'iptables'
(5) 过滤数据的分类
<1> IP 源IP 目标IP
<2> port 源端口 目标端口
<3> 协议
tcp web
udp dns
icmp ping
<4> mac地址 网卡地址
(6) 规则
写规则
<1> 修改默认策略
iptables -t 表名 -P 链 默认操作
t 指定操作的表
P 修改默认策略
iptables -t filter -P INPUT DROP
iptables -t filter -P OUTPUT DROP
<2> IP
iptables -t filter -A INPUT -s 源IP -d 目标IP -j DROP
iptables -t filter -A OUTPUT -s 源IP -d 目标IP -j DROP
-t 指定操作的表
-A 表示添加一条自定义的规则
-s 指定源IP地址
-d 指定目标IP地址
-j 表示匹配到之后的操作
DROP
ACCEPT
<3> 端口 和 协议
iptables -t filter -A INPUT -s 源IP -d 目标IP -p 协议类型 --dport 目标端口 -j DROP
-t 表示操作的表
-A 表示添加一条自定义的规则
-s 表示源IP地址
-d 表示目标IP地址
-p 指定协议类型 web tcp
--dport 目标端口
--sport 源端口
-j 表示匹配之后的操作
DROP
ACCEPT
iptables -t filter -A INPUT -s 192.168.140.250 -d 192.168.140.249 -p tcp --dport 22 -j DROP
iptables -t filter -A INPUT -s 源IP -d 目标IP -p icmp -j DROP
<3> mac
iptables -t filter -A INPUT -m mac --mac-source 00-21-CC-5D-CF-6B -j DROP
-m 指定mac模块
--mac-source 源MAC地址
iptables -t filter -A OUTPUT -m mac --mac-destion 00-21-CC-5D-CF-6B -j DROP
删除规则
iptables -F 表示删除所有的规则
iptables -t filter -D INPUT 4
查询规则
iptables -L -v
# service iptables save -> /etc/sysconfig/iptables
7-----------------------------
第七天 LNMP环境的搭建和配置
回顾: # iptables -F
#service iptables save
# vim /etc/selinux/config
SELINUX=disabled
# shutdown -r now
iptables -t filter -P INPUT DROP
iptables -t filter -A INPUT -s 192.168.140.250 -d 192.168.140.249 -j DROP
iptables -t filter -A INPUT -s 192.168.140.250 -d 192.168.140.249 -p tcp --dport 80 -j DROP
iptables -t filter -A INPUT -p icmp -j DROP
iptables -t filter -A INPUT -m mac --mac-source ...... -j DROP
iptables -F
iptables -t filter -D INPUT num
零. Web的工作原理
1. 浏览器
(1) 浏览器的分类
IE
非IE 火狐和谷歌
(2) 浏览器是如何工作的
<1> 发送请求 http://www.baidu.com
<2> 下载资源 HTML JS CSS INM 视屏
<3> 解析资源
2. 服务器
(1) 服务器就是一台电脑,只不过比我们的PC机配置高 性能好
(2) 操作系统
Unix 收费的
Linux 开源 免费 运行稳定
window 收费 运行不稳定
(3) web服务器
apache
nginx
注意:
(1) 在apache启动的时候,就将服务器上的一个目录发布出去给客户端浏览器请求.
(2) apache本身是没有处理动态脚本的能力.
apache是如何工作的:
<1> 将请求的资源与指定目录中的资源进行比对,如果不存在报错,如果资源存在就执行以下的步骤
<2> 将文件打开
<3> 将文件中的内容全部返回给客户端浏览器
PHP解析模块
<1> 让apache挂载上PHP解析模块
<2> 明确告诉apache如果遇到了.php结尾的文件先交给PHP解析模块处理
一. LNMP环境的搭建
LNMP => Linux + Nginx + MySQl + PHP
(1) 准备工作
<1> 关闭rpm安装的apache和mysql
# rpm -q httpd -> apache
# rpm -q mysql -> mysql
#
# chkconfig --level 3 httpd off
# chkconfig --level 3 mysql off
#
# service httpd stop
# service mysql stop
#
<2> 关闭防火墙
iptables
# iptablesa -F
# service iptables save -> /etc/sysconfig/iptables
selinux
# vim /etc/selinux/config
SELINUX=disabled
#shutdown -r now
<3> 确保yum能够正常使用
# mount /dev/cdrom /mnt
# cd /etc/yum.repos.d/
# mv Centos-Base.repo Centos-Base
# vim Centos-Media.repo
# ......执行修改操作......
(2) 一键式安装
二. LNMP环境的配置
# ./centos.sh
软件的家目录:
Nginx /usr/local/nginx
文档根目录 /home/wwwroot/default
日志目录 /home/wwwlogs/
MySQL /usr/local/mysql
数据目录 /usr/local/mysql/var
PHP /usr/local/php
PHPMyAdmin PHP项目 /home/wwwroot/default
配置文件的目录:
Nginx的主配置文件 : /usr/local/nginx/config/nginx.conf
mysql的配置文件 : /etc/my.cnf
PHP配置文件 : /usr/local/php/etc/php.ini
如何启动和关闭:
一键式 : /root/lnmp start | stop | restart | status
Nginx : /etc/rc.d/init.d/nginx start | stop
service nginx start
mysql : /etc/rc.d/init.d/mysql start | stop
service mysql start | stop
(1) 虚拟主机
<1> 基于域名的虚拟主机
<2> 基于IP地址的虚拟主机 X
<3> 基于端口的虚拟主机 X
http://www.wwj.com => /wwj/ 王维晶项目
http://www.yhf.com => /yhf/ 我的项目
....
C:\Windows\System32\drivers\etc
IP 域名
IP 域名
IP 域名
8+------------------------------
LAMP搭建
LNMP 集成环境
Linux中的软件安装不是“下一步,下一步,确定”。
1、软件怎么来:
2、源码包。 *.tar.gz *.tar.bz2纯代码。
优点:定制安装
缺点:编译时间长。一旦报错很难解决。
3、二进制包:RPM包。
优点:速度比较快,不用编译。
缺点:依赖性,不能定制。
4、YUM包
依赖于RPM包。将各个软件的制作信息,发送到yum服务器上面。
当你需要的软件需要什么依赖来的时候自动安装。
LAMP
Apache (完)
MySQL (还没有)
PHP
1、准备工作:
1)、查看系统中是否存在自带的httpd
[root@Centos Packages]# rpm -q httpd
-q : 查询
如果需要依赖先删除依赖的:
[root@Centos ~]# rpm -e gnome-user-share
-e:卸载
2、安装GCC、C++
[root@Centos Packages]# yum install gcc*
-y 不确认
3、关闭防火墙
[root@Centos Packages]# iptables -F
4、关闭seLinux
[root@Centos Packages]# setenforce 0
2、如何确定报错。
1)、安装过程停止。
2)、停止后,一个页面中出现大量的error或warning
3、如何确定安装成功
一般情况下进入到安装目录确认安装程序出现基本上就是成功了。
安装包一般放在/usr/local/src
4、安装Apache,但是要先安装Apache需要的东西。
1)、编译安装apr,Apache可移植运行库,主要为上层的应用程序提供一个可以跨越多操作系统平台使用的底层支持接口库。在早期的Apache版本中,应用程序本身必须能够处理各种具体操作系统平台的细节,并针对不同的平台调用不同的处理函数。随着Apache的进一步开发,Apache组织决定将这些通用的函数独立出来并发展成为一个新的项目。
[root@Centos apr-1.5.2]# ./configure --prefix=/usr/local/Apache/apr
--prefix表示:安装位置。
make
make install
2)、编译安装apr-util,需要在apr的基础上安装,apr-util只不过比在apr的基础上提供了更多的底层支持接口。
[root@Centos apr-util-1.5.4]# ./configure --prefix=/usr/local/Apache/apr-util --with-apr=/usr/local/Apache/apr/
--with-apr:需要的apr依赖的安装位置。
make
make install
3)、编译安装pcre,是一个工具库,提供了正则表达式库。很多开源软件都需要使用比如Apache和PHP。
[root@Centos pcre-8.36]# ./configure --prefix=/usr/local/Apache/pcre
make
make install
4)、编译安装Apache。
[root@Centos httpd-2.4.16]# ./configure --prefix=/usr/local/Apache/ --with-apr=/usr/local/Apache/apr --with-apr-util=/usr/local/Apache/apr-util/ --with-pcre=/usr/local/Apache/pcre/
make
make install
5)、启动Apache测试是否能够正常使用
[root@Centos Apache]# /usr/local/Apache/bin/apachectl start
[root@Centos Apache]# /usr/local/Apache/bin/apachectl stop
[root@Centos Apache]# /usr/local/Apache/bin/apachectl restart
5、MySQL的安装
注意:在MySQL5.5版本以后不使用configure。而是使用cmake工具进行安装。
1)、安装cmake工具,和configure一样,用来输出各种各样的makefile文件。
[root@Centos Apache]# yum install cmake
2)、安装bison软件,是一个自由软件,用于自动生成语法分析器程序。
[root@Centos Packages]# yum install bison-2.4.1-5.el6.i686.rpm
3)、单独安装一些软件
autoconf
[root@Centos Packages]# yum install autoconf-2.63-5.1.el6.noarch.rpm
automake
[root@Centos Packages]# yum install automake-1.11.1-1.2.el6.noarch.rpm
zlib*,安装zlib函数库,是提供数据压缩用的函数库。(有可能已经安装,使用rpm -q zlib查看)
[root@Centos Packages]# yum install zlib*
flex*
[root@Centos Packages]# yum install flex*
libtool-ltdl-devl*
[root@Centos Packages]# yum install libtool-ltdl-*
4)、安装ncurses和ncurses-devel库,提供字符端终端处理库。包括一些面板和菜单,提供了一套控制光标,建立窗口改变前景背景颜色以及数据处理操作的函数。
[root@Centos Packages]# yum install ncurses*
5)、创建MySQL安装目录和数据文件放置的目录
[root@Centos Packages]# mkdir -p /usr/local/MySQL/data
6)、解压源码包
[root@Centos mysql-5.5.36]# tar -zxvf mysql-5.5.36.tar.gz
-z/-j 使用gzip或bzip2 进行处理
-x 表示解压缩
-v 显示详细信息
-f 文件名
7)、进入mysql源码包目录并且使用cmake进行编译。
cmake
-DCMAKE_INSTALL_PREFIX=/apache/mysql 安装路径
-DMYSQL_UNIX_ADDR=/apache/mysql/mysql.sock 一种“套接字”,用于描述IP地址和端口。
-DDEFAULT_CHARSET=utf8 字符集
-DDEFAULT_COLLATION=utf8_general_ci 校验字符规则
-DWITH_INNOBASE_STORAGE_ENGINE=1
-DWITH_ARCHIVE_STORAGE_ENGINE=1
-DWITH_BLACKHOLE_STORAGE_ENGINE=1
-DMYSQL_DATADIR=/apache/mysql/data 数据存放的目录
-DMYSQL_TCP_PORT=3306 端口号
-DENABLE_DOWNLOADS=1 是否自动下载可选文件
-DWITH_MYISAM_STORAGE_ENGINE=1
[root@Centos mysql-5.5.36]# cmake -DCMAKE_INSTALL_PREFIX=/usr/local/MySQL/ -DMYSQL_UNIX_ADDR=/usr/local/MySQL/mysql.sock -DDEFAULT_CHARSET=utf8 -DDEFAULT_COLLATION=utf8_general_ci -DWITH_INNOBASE_STORAGE_ENGINE=1 -DWITH_ARCHIVE_STORAGE_ENGINE=1 -DWITH_BLACKHOLE_STORAGE_ENGINE=1 -DMYSQL_DATADIR=/usr/local/MySQL/data -DMYSQL_TCP_PORT=3306 -DENABLE_DOWNLOADS=1 -DWITH_MYISAM_STORAGE_ENGINE=1
注意:
1、如果真的出错了,那么你需要将源码包目录下面的CMakeCache.txt删除掉。然后重新cmake
make
make install
8)、为了安全起见需要有专门的系统用户来进行运行MySQL
root疯狂起来连自己都打。
有专门的组和用户
添加组:groupadd mysql
添加用户:useradd -r -g mysql mysql
更改mysql安装目录的所有者:
cd /usr/local/MySQL
#递归更改/usr/local/MySQL中的所有文件、文件夹的所有者、所属组。
chown -R mysql:mysql .
-R 递归
9)、初始化mysql数据库
注意:必须进入到MySQL的安装目录下执行。
[root@Centos MySQL]# /usr/local/MySQL/scripts/mysql_install_db --user=mysql --datadir=/usr/local/MySQL/data/
--user : 用哪个用户启动。
--datadir : 数据存放在那个目录中
10)、复制mysql服务启动配置文件
[root@Centos MySQL]# cp /usr/local/src/MySQL/mysql-5.5.36/support-files/my-huge.cnf /etc/my.cnf
注意:/etc/my.cnf这个文件如果存在于/etc中。那么选择覆盖。
11)、启动mysql
[root@Centos MySQL]# /usr/local/MySQL/bin/mysqld --user=mysql --datadir=/usr/local/MySQL/data/ &
mysqld是真正要启动的mysql程序
--user : 用那个用户启动
--datadir : 数据目录存放在哪里
& 表示后台执行
12)、进入到MySQL测试一下/apache/mysql/bin/mysql -u root -p默认密码为空。
13)、更改密码:
[root@Centos MySQL]# /usr/local/MySQL/bin/mysqladmin -u root -p password '1234@abcd'
6、PHP的安装
1)、安装apxs(已经安装放在安装目录下的bin/apxs目录下)
2)、安装libxml库。
xml,可扩展标记语言,HTML有些相同的地方,可以自定义一些标签,但是HTML是用来标记的,XML是用来存储数据的,用来多种程序间共享数据用的。
libxml库,提供了对XML文档的各种操作方法。
[root@Centos libxml2-2.6.30]# ./configure --prefix=/usr/local/Apache/libxml
make
make install
3)、安装zlib函数库,是提供数据压缩用的函数库(有可能已经安装)。
不用去安装已经安装在/usr/include/下面
4)、安装jpeg6,用于解码.jpg和.jpeg图片
[root@Centos jpeg-6b]# ./configure --prefix=/usr/local/Apache/jpeg --enable-shared --enable-static
--enable-shared与--enable-static参数分别为建立共享库和静态库使用的libtool
make
手动创建目录
/usr/local/Apache/jpeg
/usr/local/Apache/jpeg/bin
/usr/local/Apache/jpeg/lib
/usr/local/Apache/jpeg/include
/usr/local/Apache/jpeg/man/man1
[root@Centos jpeg-6b]# mkdir -p /usr/local/Apache/jpeg/{bin,lib,include,man/man1}
make install
5)、安装libpng用于处理.png的图片
[root@Centos libpng-1.2.31]# ./configure --prefix=/usr/local/Apache/libpng
make
make install
6)、安装freetype,FreeType库是一个完全免费(开源)的、高质量的且可移植的字体引擎,它提供统一的接口来访问多种字体格式文件,包括TrueType, OpenType, Type1, CID, CFF, Windows FON/FNT, X11 PCF等。
[root@Centos freetype-2.3.5]# ./configure --prefix=/usr/local/Apache/freetype
make
make install
7)、安装libmcrypt库,是一个加密算法扩展库。
[root@Centos libmcrypt-2.5.8]# ./configure --prefix=/usr/local/Apache/libmcrypt
make
make install
8)、安装curl,是一个利用URL语法规定来传输文件和数据的工具,支持很多协议,如HTTP、FTP、TELNET等。
[root@Centos curl-7.29.0]# ./configure --prefix=/usr/local/Apache/curl
make
make install
9)、编译PHP
1、解压 PHP5.6
[root@Centos php-5.6.21]# tar -zxvf php-5.6.21.tar.gz
./configure
--prefix=/apache/php/ 安装位置
--with-config-file-path=/apache/php/etc 配置文件位置
--with-apxs2=/apache/bin/apxs
--with-mysql=/apache/mysql/ MySQL安装位置
--with-libxml-dir=/apache/libxml/ XML安装位置
--with-jpeg-dir=/apache/jpeg/
--with-png-dir=/apache/libpng/
--with-freetype-dir=/apache/freetype/
--with-gd
--with-mcrypt=/apache/libmcrypt/
--with-mysqli=/apache/mysql/bin/mysql_config
--enable-soap
--enable-mbstring=all
--enable-sockets
--with-pdo-mysql=/apache/mysql/
--without-pear
--with-curl=/apache/curl/
-------------------------------------------------
[root@Centos htdocs]# ./configure --prefix=/usr/local/Apache/php --with-config-file-path=/usr/local/Apache/php/etc --with-apxs2=/usr/local/Apache/bin/apxs --with-mysql=/usr/local/MySQL --with-libxml-dir=/usr/local/Apache/libxml --with-jpeg-dir=/usr/local/Apache/jpeg --with-png-dir=/usr/local/Apache/libpng/ --with-freetype-dir=/usr/local/Apache/freetype/ --with-gd --with-mcrypt=/usr/local/Apache/libmcrypt/ --with-mysqli=/usr/local/MySQL/bin/mysql_config --enable-soap --enable-mbstring=all --enable-sockets --with-pdo-mysql=/usr/local/MySQL/ --without-pear --with-curl=/usr/local/Apache/curl/
make
make install
10)、创建/usr/local/Apache/php/etc目录,放置配置文件
mkdir /usr/local/Apache/php/etc
注意:如果已经有了就不用管他了
11)、复制初始配置文件
[root@Centos htdocs]# cp /usr/local/src/PHP/php-5.6.21/php.ini-production /usr/local/Apache/php/etc/php.ini
12)、修改apache的配置文件让apache能够认识php文件。
/usr/local/Apache/conf/httpd.conf
注意:
1、必须让apache能够载入php的模块。必须保证开启。
LoadModule php5_module modules/libphp5.so
2、添加一行让Apache能够认识PHP文件
AddType application/x-httpd-php .php
在第20行的位置添加。(其实不见得因为只要不在区块中就行)
作业:
1、装 装 装
注意:装上之后做个快照。
9---------------------------------
1、安装完成的位置
/usr/local/Apache/bin 常用的命令
/usr/local/Apache/modules 模块
/usr/local/Apache/conf 配置文件的目录
/usr/local/Apache/htdocs 网站的根目录
2、bin目录中
httpd:apache的启动程序
apachectl:是Apache服务器自带的脚本工具,用于管理控制Apache后台程序。
apachectl start|stop|restart
start 开启,他会先检查你的配置文件有没有错误。
stop:停止
restart:重启httpd,也会检查配置文件。
3、modules目录中:放置的Apache中的模块。这样更加灵活。
模块的类型:
1、核心模块,无法被模块化的东西,基础的模块。不能被删除。
2、标准模块,由Apache基金会发布和维护的模块。这些模块可以自由的删除和加载。
3、第三方模块,由普通的用户编写,这些模块不作为Apache的官方发布。
4、conf目录中:
-rw-r--r--. 1 root root 18201 5月 3 17:36 httpd.conf apache的配置文件。定义了apache的基本配置以及对其他模块的引用。
-rw-r--r--. 1 root root 53011 5月 3 14:47 mime.types 所有的mime类型
extra目录:所有Apache标准模块的、第三方模块的配置文件。
5、httpd.conf的配置
配置文件分为三部分:
1、主服务器部分:用一些核心模块提供的指令来定义服务器的功能和参数,在整个Apache配置中都有作用。
2、容器部分:都以<容器名>开始</容器名>结束的样式来对指令进行封装。
3、服务器扩展部分:
#LoadModule slotmem_shm_module modules/mod_slotmem_shm.so 载入某个模块
#Include conf/extra/httpd-mpm.conf 引入一个配置文件。
1、主服务器部分:
ServerName:定义Apache的默认主机名,用于辨别自己的主机名和端口号。通常后面是主机名或IP地址。
注意:该选项默认时候不开启。因为默认的时候我们是将网站放在公网上面。使用DNS服务作为解析。可以自动判断主机名或IP地址
ServerRoot:用来指明Apache所在的安装目录
DocumentRoot:网站的根目录。也就是Apache所受到的URL请求的时候的/
注意:要修改网站的根目录也要修改容器部分的
<Directory "/usr/local/Apache/LAMP140"> 因为这里是这个目录的权限。
Listen:监听的端口号,默认是80端口,端口范围可以是0~65535
ErrorDocument:当出错的时候会给出一个HTTP的状态码,该选项用于定义对应状态码想要的页面/提示信息。
#ErrorDocument 404 "look look yanleiZhang"
2、容器部分
<IfModule setenvif_module>,作用域模块,先判断模块是否载入,然后决定是否进行处理。只有判断结果为真的时候才会执行容器内部的命令。
<IfModule unixd_module>
User,Group:用于定义运行Apache服务器的账号和工作组。用来定义用户请求时创建的子进程的账号与工作组。
注意:Apache的权限是root,这个是Apache的主进程,这个进程不响应任何请求,只是负责建立子进程来响应请求。
httpd root
httpd daemon
4308 daemon 20 0 314m 19m 2484 S 0.3 0.5 0:00.38 httpd
<Directory />:让所封装的指令在指定的目录以及他的子目录中起作用。
<Files ".ht*"> :让所封装的指令在指定的文件起作用
<Location >:指定的URL起作用
3、目录索引
由mod_dir这个模块:
DirectoryIndex:指定的索引文件
DirectoryIndex 1.html 2.php
mod_autoIndex模块:
配置文件在:extra/httpd-autoindex.conf
IndexOptions FancyIndexing HTMLTable VersionSort
FancyIndexing:启用复杂索引。
HTMLTable:以HTML表格方式显示。
VersionSort:版本排序。
FolderFirst:目录靠前显示。
_________________________________________
AddIconByType :指定的后缀名的描述
AddDescription "GZIP compressed tar archive" .tgz
AddIcon:添加指定后缀文件的图片标识
AddIcon /icons/script.gif .conf .sh .shar .csh .ksh .tcl
格式:AddIcon 图片名 后缀名
DefaultIcon:如果AddIcon中没有这个后缀那么默认使用的图片标识。
IndexIgnore:隐藏指定的文件。
4、虚拟主机
LoadModule vhost_alias_module modules/mod_vhost_alias.so 提供虚拟主机服务,在一台主机上运行或维护多个web站点。
Include conf/extra/httpd-vhosts.conf 引入配置文件
实验1:基于主机名的虚拟主机:
计算机相互访问只能靠IP地址来进行访问,但是IP不容易记,人类对字母比较敏感。所以使用域名。
域名:先找本地的hosts文件(这个文件里面包含着你自己设置的指向),如果请求的域名在这个文件中没有的话那么请求DNS服务器
电信:202.175.3.8 202.175.3.3
1、设置hosts文件
windows:C:\Windows\System32\drivers\etc\hosts
Linux:/etc/hosts
192.168.10.44 www.baidu.com
2、设置虚拟机
<VirtualHost 192.168.10.44:80>
ServerName mp3.google.com
DocumentRoot "/usr/local/Apache/LAMP140/mp3.google.com"
</VirtualHost>
<VirtualHost 192.168.10.44:80>
ServerName av.google.com
DocumentRoot "/usr/local/Apache/LAMP140/av.google.com"
</VirtualHost>
3、如果让本机IP像以前那样正常访问可以在虚拟机设置最前面加上
<VirtualHost 192.168.10.44:80>
serverName 192.168.10.44
DocumentRoot "/usr/local/Apache/LAMP140"
</VirtualHost>
默认的时候使用第一个的虚拟机配置
注意:
1、这样可以节省IP地址但是需要自己设置DNS
2、确认模块和配置文件是否正确打开、载入
3、如果遇到403错误,通常是一下3点:
1、访问权限。
2、seLInux或防火墙
3、配置文件错误。
实验2:基于IP地址不同端口的虚拟主机
步骤:
1、默认是监听80端口,再添加一个端口
Listen 8080 添加新的一行
2、添加虚拟主机部分
<VirtualHost 192.168.10.44:80>
serverName 192.168.10.44
DocumentRoot "/usr/local/Apache/LAMP140/80"
</VirtualHost>
<VirtualHost 192.168.10.44:8080>
serverName 192.168.10.44
DocumentRoot "/usr/local/Apache/LAMP140/8080"
</VirtualHost>
实验3:基于相同的端口不同的IP设置虚拟主机
步骤:
1、给一张网卡设置多个IP地址
只有一张网卡,默认为eth0,如果要在同一张网卡上配置需要使用虚拟网卡eht0:(0~255)成为虚拟网络接口,是建立在eth0网络接口上。
[root@Centos LAMP140]# ifconfig eth0:0 192.168.10.45 netmask 255.255.255.0 up
这种方法只是临时生效。
如果要永久生效:
[root@Centos LAMP140]# cp /etc/sysconfig/network-scripts/ifcfg-eth0 /etc/sysconfig/network-scripts/ifcfg-eth0:0
更改ifconf-eth0:0中的
IPADDR=192.168.10.45
DEVICE=eth0:0
注意:如果重新启动网卡后不生效,查看是否开启了NetworkManager这个服务。如果是开启状态就关闭
2、重新启动网络服务
service network restart
3、增加虚拟机
<VirtualHost 192.168.10.44:80>
serverName 192.168.10.44
DocumentRoot "/usr/local/Apache/LAMP140/44"
</VirtualHost>
<VirtualHost 192.168.10.45:80>
serverName 192.168.10.45
DocumentRoot "/usr/local/Apache/LAMP140/45"
</VirtualHost>
5、 身份认证。
authz_host模块:提交简单的、基本的访问控制
order:设置默认访问的状态。Allow和deny指令的生效顺序
Allow:指定哪些客户允许进行访问
Deny:指定哪些用户会被拒绝
注意:
1、allow和deny中的第一个参数都是from,可以在from后面加上要允许或禁止的主机。
allow from 192.168.140.250
deny from all 所有的都不能访问
正确
order deny,allow
deny from all
allow from 127.0.0.1
错误
order allow,deny
deny from all
allow from 127.0.0.1
注意:
order决定的“最后”规则非常重要,决定谁生效。
一般来说:分两种:
1、拒绝所有,逐个允许(自己网站不想让别人随便访问。但是想让几个人访问)
2、允许所有,逐个拒绝(我已经知道有几个人调皮了)
6、用户认证模块
交互性差,通常用在一些不让别人注册的网站。
步骤:
1、在根目录下创建要进行控制的目录
[root@Centos LAMP140]# mkdir buRangFangWen
2、在配置文件中加入控制
<Directory "/usr/local/Apache/LAMP140/buRangFangWen">
AuthType Basic #密码验证方式
AuthName "hehe lai wan ya" #提示信息
AuthBasicProvider file #账号密码从哪里来
AuthUserFIle "/usr/local/Apache/passwd" #账号密码的文件在哪里
Require user lgzhyan #允许访问的用户
</Directory>
3、创建密码验证文件,并且添加第一个新用户
htpasswd -c 密码文件名 第一个新用户
htpasswd -c /usr/local/Apache/passwd lgzhyan
4、再次添加用户
htpasswd 密码文件名 用户名
[root@Centos LAMP140]# htpasswd /usr/local/Apache/passwd mashoulun
注意:
1、删除用户使用htpasswd -D 密码文件名 用户名
2、如果要修改用户密码,只能将该用户删除掉然后重新添加。
5、重新启动Apache服务器
注意:
1、如果不进行验证直接点击取消的话将会返回401状态码
2、这个里面的账号和系统中的账号没有一毛钱关系。
htpasswd
7、别名重定向
让apache以为在网站根目录下有某个目录。但是实际上访问的是其他目录
mod_alias模块:可以完成简单的别名重定向
可以使用Alias
语法:alias URL地址 真是的文件或目录路径
直接在
<IfModule alias_module>
Alias /haha /usr/local/Apache/houhou
</ifModule>
现在能够找到,但是不能访问,这个时候必须加上权限。
<Directory /usr/local/Apache/caoliu>
Options indexes 开启索引
Order deny,allow 是允许还是拒绝
Allow from all 允许所有的
Require all granted 允许所有的访问
</Directory>