一、 Linux概述
1.1. 简介
Linux是一个*的,免费的,源码开放的操作系统。也是开源软件中最著名的例子。其最主要的目的就是为了建立不受任何商品化软件版权制约的,全世界都能使用的类Unix兼容产品.而我们将服务器部署在Linux将会更加的稳定、安全、高效以及出色的性能这时windows无法比的。
1.2.Linux作者
林纳斯·本纳第克特·托瓦兹(Linus Benedict Torvalds, 1969年~ ),著名的电脑程序员、黑客。Linux内核的发明人及该计划的合作者。托瓦兹利用个人时间及器材创造出了这套当今全球最流行的操作系统(作业系统)内核之一。现受聘于开放源代码开发实验室(OSDL:Open Source Development Labs, Inc),全力开发Linux内核。
1.3.Linux 发行版
发行版是基于 Linux 内核的一个操作系统。它带有用户可以使用的软件集合。更多的,它还包含系统管理包。目前有许多 Linux 发行版。因为我们不能数清目前所有的 Linux 发行版,所以我们来看一下一些有名的版本: Ubuntu、Fedora、Opensuse、Red hat Linux 和 Debian 等是几个非常受欢迎的 Linux 发行版。
1.4.Linux的特点
开放性,多用户,多任务,丰富的网络功能,可靠的系统安全,良好的可移植性,具有标准兼容性
二、环境准备
2.1. Vmware
2.1.1 Vmware简介
大多数服务器的容量(CPU,内存,磁盘等)利用率不足 30%,这不仅导致了资源浪费,也加大了服务器的数量。实现服务器虚拟化后,多个操作系统可以作为虚拟机在单台物理服务器上运行,并且每个操作系统都可以访问底层服务器的计算资源,从而解决效率低下问题。
Vmware虚拟机化技术由此诞生,它可以将一台服务器虚拟化出多台虚拟机,供多人同时使用,提高资源利用率。
2.1.2 Vmware workstation 安装
详细见vmware安装文档
2.2. linux安装
详细参照网上教程,很多
2.3.网络配置
2.3.1 查看网关
2.3.2 配置IP(NAT模式)
1.编辑配置文件,添加修改以下内容
vi /etc/sysconfig/network-scripts/ifcfg-eth0
按i 进入文本编辑模式,出现游标,左下角会出现INSERT,即可以编辑
应包含以下配置,
DEVICE=eth0 #网卡设备名,请勿修改名字
TYPE=Ethernet #网络类型,以太网
BOOTPROTO=static #启用静态IP地址
ONBOOT=yes #开启自动启用网络连接
IPADDR=192.168.78.100 #设置IP地址
NETMASK=255.255.255.0 #设置子网掩码
GATEWAY=192.168.78.2 #设置网关
DNS1=114.114.114.114 #设置备DNS
按ESC退出编辑模式
:wq #保存退出
2.修改完后执行以下命令
service network restart #重启网络连接
ifconfig #查看IP地址
3.验证是否配置成功:
虚拟机能ping通虚拟网关
虚拟机与物理机(笔记本)相互可ping通
虚拟机与公网上的百度网址相互可ping通(此步ping通,才说明网络配置成功,Ctrl键+C停止)
命令:ping www.baidu.com
注意:
a.保证VMware的虚拟网卡没有被禁用
b.网关IP不能被占用
2.4.XShell安装与使用
2.4.1安装步骤
除了安装路径需要修改,其他一直下一步。
2.4.2 连接虚拟机
1. 打开xshell软件新建一个会话
2. 填写所要连接的虚拟机IP,会话名称可改可不改,点击确定。
3.连接虚拟机。
4.输入root用户名,可以勾选”记住用户名”
5.填写密码,可以勾选“记住密码”
6.登录成功。
三、文件系统
Linux文件系统中的文件是数据的集合,文件系统不仅包含着文件中的数据而且还有文件系统的结构,所有Linux 用户和程序看到的文件、目录、软连接及文件保护信息等都存储在其中。
Linux目录结构:
bin 存放二进制可执行文件(ls,cat,mkdir等)
boot 存放用于系统引导时使用的各种文件
dev 用于存放设备文件
etc 存放系统配置文件
home 存放所有用户文件的根目录
lib 存放跟文件系统中的程序运行所需要的共享库及内核模块
mnt 系统管理员安装临时文件系统的安装点
opt 额外安装的可选应用程序包所放置的位置
proc 虚拟文件系统,存放当前内存的映射
root 超级用户目录
sbin 存放二进制可执行文件,只有root才能访问
tmp 用于存放各种临时文件
usr 用于存放系统应用程序,比较重要的目录/usr/local 本地管理员软件安装目录
var 用于存放运行时需要改变数据的文件
3.1.目录操作
3.1.1切换目录
命令:cd + 目录的路径
查看当前目录的完整路径 :pwd
命令 cd .. 返回到父目录
3.1.2新建目录
命令:mkdir + 目录名字
查看当前目录下拥有的子目录和文件: ls
3.1.3拷贝目录
cp source dest -r
3.1.4删除目录
rmdir directory
注意:rmdir只能删除空目录,若要删除非空目录则用rm命令
rm -rf dir
3.1.5移动/更改 目录
移动文件或目录:mv + 目录/文件名字 + 其他路径
mv test / 将test目录移动到 根目录/ 下
更改文件或目录的名字:mv + 旧目录名字 + 新目录名字。
3.2.文件操作
3.2.1新建文件:(一切皆文件)
touch web.log 创建一个空文件。
3.2.2 复制文件
cp web.log web_cp.log
复制文件,加个-r 参数,代表遍历复制,此时可用于复制一个目录。
3.2.3 删除文件
rm web_cp.log
此时需要手动输入y ,代表确认删除。可加 –f参数,直接删除,无需确认。当需要一个目录下所有东西时,加-r参数,代表遍历删除。
rm -f web.log
3.2.4 查看
3.2.4.1查看目录下的东西
ls / ll
命令 ls -l 等价于 ll
查看目录下的所有东西(包括隐藏文件)
命令:ls –al 等价于 ll –a
3.2.4.2查看文件内容
cat filename: 一次性显示整个文件的内容
注意:当文件较大时,文本在屏幕上迅速闪过(滚屏),用户往往看不清所显示的内容。
因此,一般用more等命令分屏显示.
more filename 该命令一次显示一屏文本,满屏后停下来,并且在屏幕的底部出现一个提示信息,给出至今己显示的该文件的百分比。
按Space键,显示文本的下一屏内容。
按Enier键,只显示文本的下一行内容。
按B键,显示上一屏内容。
按Q键,退出。
less命令 与 more命令 非常类似
less filename:
h 显示帮助界面
Q 退出less 命令
u 向后滚动半页
d 向前翻半页
空格键 滚动一页
b 向后翻一页
回车键 滚动一行
[pagedown]: 向下翻动一页
[pageup]: 向上翻动一页
以及上下键,向上一行,向下一行
3.2.4.3从头打印文件内容
head -10 filename 打印文件1到10行
3.2.4.4从尾部打印文件内容
tail -10 filename 打印文件最后10行
注意:tail 还经常可以拿来查看文件的内容变化
加-f参数,tail –f filename
3.2.5查找文件或目录
find pathname –name filename
例子:find / -name profile
该命令表示为,在/目录下查找 名字为profile的文件或目录,最后列出它的绝对路径
最后发现,linux系统根目录/ 下 一共有两个名字为profile,其中/etc/profile是一个文件,/etc/lvm/profile为目录
还可以按正则表达式来查找,且pathname越精确,查找的范围越小,速度越快。
find /etc -name pro*
该命令表示为:在/etc目录下查找以pro开头的文件或目录。
四、文本编辑
4.1.vi
编辑模式
vi filename :打开或新建文件,并将光标置于第一行首
vi +n filename :打开文件,并将光标置于第n行首
vi + filename :打开文件,并将光标置于最后一行首
vi +/pattern filename:打开文件,并将光标置于第一个与 pattern匹配的串处
命令行模式
• w保存
• q退出
• q!:不保存文件并退出vi
– 在VI的命令模式下输入“:set nu”,就有行号了。
– 在VI的命令模式下输入“:set nonu”,取消行号。
一般模式
• yy 复制光标所在行(常用)
• nyy 复制光标所在行的向下n行,例如, 20yy则是复制20行(常用)
• p,P p为复制的数据粘贴在光标下一行, P则为粘贴在光标上一行(常用)
G:光标移至第最后一行
nG:光标移动至第N行行首
n+:光标下移n行
n-:光标上移n行
H :光标移至屏幕顶行
M :光标移至屏幕中间行
L :光标移至屏幕最后行
• dd:删除 行
x或X:删除一个字符,x删除光标后的,而X删除光标前的
• u 恢复前一个动作(常用)
删除第N行到第M行:
:N,Md
4.2.vim
Vim是从 vi 发展出来的一个文本编辑器。代码补完、语法高亮、编译及错误跳转等方便编程的功能特别丰富,在程序员中被广泛使用.
安装vim 软件
yum install vim
按y确认, 这中间一共要按两次确认
可以在书写命令时就加y,这样就不用逐一确认。
yum install vim -y
用vim 打开/etc/profile 文件,会发现编辑器对文本的内容进行了高亮,使整个文件的内容可读性大大加强
命令:vim /etc/profile
五、文件传输
5.1.远程拷贝
5.1.1将本地文件复制到远程机器
scp local_file remote_username@remote_ip:remote_folder
第一次远程拷贝时,需要在箭头1初输入yes确认一下,验证一下远程主机。然后在箭头2处输入一下远程主机的密码。
5.1.2将本地目录复制到远程机器
scp -r local_folder remote_username@remote_ip:remote_folder
在test目录下创建一个myfile文件,然后将test目录远程拷贝到192虚拟机的根目录下。
5.2.上传
需先安装好lrzsz : yum install lrzsz -y
安装好后,输入上传的命令rz,弹出一下界面:
选择一个windows系统里的文件上传至虚拟机的当前目录下,然后ll命令,查看结果
5.3.下载
下载命令为sz,sz命令只能下载文件,不能是目录,可先将目录压缩成一个包,再下载至windows系统。下载完之后,按ctrl+c结束。
5.4Xftp的安装与使用
除了可以用rz sz命令进行本地windows系统和虚拟机之间的文件传输,还可以使用XFTP软件。
六、网络指令
6.1.查看网络配置信息
命令:ifconfig
箭头1指向的是本机IP,箭头2为广播地址,箭头3位子网掩码。
6.2.测试与目标主机的连通性
命令:ping remote_ip
输入ping 192.168.78.192代表测试本机和192主机的网络情况,箭头1表示一共接收到了3个包,箭头2表示丢包率为0,表示两者之间的网络顺畅。注意:linux系统的ping命令会一直发送数据包,进行测试,除非认为的按ctrl + c停止掉,windows系统默认只会发4个包进行测试,以下为windows的dos命令。
6.3.显示各种网络相关信息
命令:netstat
-a (all)显示所有选项,默认不显示LISTEN相关
-t (tcp)仅显示tcp相关选项
-u (udp)仅显示udp相关选项
-n 拒绝显示别名,能显示数字的全部转化成数字。
-l 仅列出有在 Listen (监听) 的服務状态
-p 显示建立相关链接的程序名
-r 显示路由信息,路由表
-e 显示扩展信息,例如uid等
-s 按各个协议进行统计
-c 每隔一个固定时间,执行该netstat命令。
提示:LISTEN和LISTENING的状态只有用-a或者-l才能看到
七、系统配置
7.1 主机名配置
若要修改主机名字,可在/etc/sysconfig/network文件里修改.
vim /etc/sysconfig/network
机器重启才能生效
7.2 DNS配置
hosts文件的作用相当于DNS,提供IP地址hostname的对应,可在这个文件里添加映射。域名解析
vi /etc/hosts
测试:直接ping 主机名
/etc/resolv.conf 为DNS服务器的地址文件
7.3 环境变量
Linux系统的环境变量是在/etc/profile文件里配置。
首先考虑一个问题,问什么我们先前敲的yum, service,date,useradd等等,可以直接使用,系统怎么知道这些命令对应的程序是放在哪里的呢?
这是由于无论是windows系统还是linux系统,都有一个叫做path的系统环境变量,当我们在敲命令时,系统会到path对应的目录下寻找,找到的话就会执行,找不到就会报没有这个命令。如下图:
我们可以查看一下,系统一共在哪些目录里寻找命令对应的程序。
命令:echo $path
可以看到path里有很多路径,路径之间有冒号隔开。当用户敲命令时,系统会从左往右依次寻找对应的程序,有的话则运行该程序,没有的就报错,command not found.
那如果我写了一个脚本(脚本后面会专门讲),我该怎样运行它呢?
对test.sh添加可执行权限,chmod 700 test.sh
运行方法有三种:
一种是到脚本的目录下执行:
运行命令 : ./test.sh ,代表执行当前目录里的脚本test.sh
一种是敲脚本的绝对路径:/usr/test/test.sh
以上两种运行方式都不是很简便,因为先前我们执行yum service命令等,都是直接敲对应的命令的。所以我们也可以参照这样子做,只要我们配一个环境变量就好。
编辑: vim /etc/profile 将test.sh所在目录添加到path里就OK,我这里test.sh是在/usr/test目录下。
编辑完之后,执行source /etc/profile命令,重新加载环境变量,此时会发现PATH路径多了一个/usr/test。
最后验证一下,直接执行test.sh
八、服务操作
8.1 列出所有服务
命令:chkconfig
查询操作系统在每一个执行等级中会执行哪些系统服务,其中包括各类常驻服务。
各数字代表的系统初始化级别含义:
0:停机状态
1:单用户模式,root账户进行操作
2:多用户,不能使用net file system,一般很少用
3:完全多用户,一部分启动,一部分不启动,命令行界面
4:未使用、未定义的保留模式
5:图形化,3级别中启动的进程都启动,并且会启动一部分图形界面进程。
6:停止所有进程,卸载文件系统,重新启动(reboot)
这些级别中1、2、4很少用,相对而言0、3、5、6用的会较多。3级别和5级别除了桌面相关的进程外没有什么区别。为了减少资源占用,推荐都用3级别.
注意 :linux默认级别为3,不要把initdefault 设置为0 和 6
8.2 服务操作
service 服务名 start/stop/status/restart
例子:对防火墙服务进行操作,防火墙的服务名为:iptables.
查看防火墙服务运行状态。
关闭防火墙.
开启防火墙
8.3 关闭防火墙
service iptables start/stop/status
注:学习期间直接把防火墙关掉就是,工作期间也是运维人员来负责防火墙的。
8.4 服务初执行等级更改
chkconfig --level 2345 name off|on
若不加级别,默认是2345级别
命令:chkconfig name on|off
九、linux进程操作
9.1 查看所有进程
命令: ps -aux
-a 列出所有
-u 列出用户
-x 详细列出,如cpu、内存等
- e
-f
命令: ps - ef | grep ssh
查看所有进程里CMD是ssh 的进程信息。
其中箭头所指的是sshd服务进程的进程号(PID)
9.2 杀死进程
Kill
用法 kill pid
-9:强制杀死
ps 命令先查出对应程序的PID或PPID ,然后杀死掉进程。
十、 其他常用命令
10.1 yum
yum是一个在Fedora和RedHat以及CentOS中的Shell前端软件包管理器。基于RPM包管理,能够从指定的服务器自动下载RPM包并且安装,可以自动处理依赖性关系,并且一次安装所有依赖的软件包,无须繁琐地一次次下载、安装。
由于centos系统的yum默认是到国外网站下载,有时下载速度会很慢,故我们可以换一个yum的下载源,这里我们换一个国内的下载源 阿里云镜像。
第一步:备份你的原镜像文件,以免出错后可以恢复。
cp /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup
第二步:下载新的CentOS-Base.rep到/etc/yum.repos.d/
wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-6.repo
下载完之后,vim /etc/yum.repos.d/CentOS-Base.repo 查看一下文件内容。
第三步:运行yum makecache生成缓存
查看当前源
yum list | head -50
10.2 wget
wget 是一个从网络上自动下载文件的*工具,支持通过 HTTP、HTTPS、FTP 三个最常见的 TCP/IP协议 下载,并可以使用 HTTP 代理
需先安装 yum install wget –y
wget用法:wget [option] 网址 -O 指定下载保存的路径
wget 工具还可以用来做一些简单的爬虫,这里不是我们的学习重点,如果想做爬虫,可以用java或python语言来做。
10.3 tar包
tar
-z gzip进行解压或压缩,带.gz需要加,压缩出来.gz也需要加
-x 解压
-c 压缩
-f 目标文件,压缩文件新命名或解压文件名
-v 解压缩过程信息打印
解压命令:tar -zvxf xxxx.tar.gz
例子:先用rz命令或wscp上传一个tar包,然后解压。
解压后:
压缩命令:tar -zcf 压缩包命名 压缩目标
例子:tar -zcf tomcat.tar.gz apache-tomcat-7.0.61
将 apache-tomcat-7.0.61 目录压缩成tomcat.tar.gz包。
十一、JDK部署
11.1 官网下载
http://www.oracle.com/technetwork/java/javase/downloads/index.html
11.2 上传并解压
用wscp将jdk包上传到linux系统里,我这里上传到/usr/soft目录下。
然后解压: tar -zxf jdk-7u80-linux-x64.tar.gz
11.3 配置环境变量
配置全局JAVA_HOME,并在path路径里加入java_home/bin.
注意:新的path路径必须要包含旧的path路径,且每个路径之间以冒号隔开,而不是分号
vim /etc/profile
JAVA_HOME= /usr/soft/jdk1.7.0_75
PATH=$PATH:$JAVA_HOME/bin
重新加载环境变量:source /etc/profile
11.4 验证
java -version
如出现上图,则表示java环境变量配置成功。
十二、部署Tomcat
12.1 官网下载
下载tomcat
12.2 上传并解压
我这里上传至/usr/soft目录下,然后解压。
12.3 启动tomcat
在tomcat的bin目录下有个startup.sh 脚本可以直接启动tomcat服务
关闭tomcat服务,可以用shutdown.sh命令。
或者ps -ef | grep tomcat 查看出tomcat进程号后,用kill命令。
12.4 jps
jps是JDK 1.5提供的一个显示当前所有java进程pid的命令,简单实用,非常适合在linux/unix平台上简单察看当前java进程的一些简单情况。
如上图所示,jps命令显示出了,系统当前运行在jvm上的进程情况。其中Bootstrap是tomcat的进程名字,1996是tomcat的PID
13.5 验证
先把防火墙关了,然后访问虚拟机IP的8080端口