1.1.什么是Linux?
和windows操作系统类似,Linux是一套性能稳定的多用户网络操作系统
1.2.优点
1.源代码开放(任何人都可以获取到Linux源代码)
2.完全免费 (下载安装使用都是免费的)
3.良好的界面 (和windows一样,有简单易用的图形用户界面)
4.丰富的网络功能 (可以非常方便的搭建各种网络服务(dns(解析域名),dhcp(自动获取IP)),非常适合作为网络服务器)
http://mp3.baidu.com
mp3 : 主机名
Baidu.com : 域名
网络通信 : 确认目标主机的IP和端口
域名服务器的作用: 将主机名+域名 解析成 对应的IP地址
5.可靠的安全、稳定性能 (非常安全,不需要安装杀毒软件。可以保证长时间运行不出故障,服务器甚至一两年不重启)
6.多用户多任务 (可以多个用户同时登录,并且同时运行多项任务)
7.对硬件配置要求低 (最低128M内存就可以运行)
免费开源
安全稳定
硬件要求低
1.3.使用场景
1.3.1.常被作为服务器
应用程序开发完成之后,一般都会部署到专门的硬件服务器上.由于Linux长时间运行比较稳定,性能高。可以把linux作为硬件服务器操作系统,并且作为服务器linux是王者.
具体使用场景:
1、购买服务器:
应用访问人数比较少:单台linux服务器:tomcat,mysql,jdk
应用访问人数比较多:集群,负载均衡
2、租用服务器:
一般现在企业都是买云计算服务,阿里云,新浪云,百度云
1.3.2.会把Linux的个人版作为开发环境
很多开源项目(redis,ngnix等)都只提供C语言源码,需要我们在C语言编译环境进行编译、打包为软件包,需要在Linux上面就集成了C编译环境。
1.4.发行版
所谓发行版是指系统开发商根据不同目的而发布的系统版本(比如微软发布了3个windows8发行版本:服务器版windows server 2012,桌面版window 8,手机版Windows Phone 8)
1.4.1.常见的Linux发行版
1、Rpm系(使用Red Hat的软件库管理系统)
Redhat 红帽。收费,技术支持强大,资料完善,系统稳定安全
Fedora 被红帽赞助,适合个人使用,免费
Centos 被红帽收购,免费,系统稳定安全,很多公司在用(服务器)
2、Dpkg系 (package manager for Debian)
Debian 很多公司在用,基于ubuntu
Ubuntu 基于debian的发行版,比较适合个人用户(个人开发环境)
Pear os 基于Ubuntu,仿macos
3、国产linux系统
红旗Linux,真正的国产linux系统,2014年公司解散后被收购
我们Linux使用有两种场景作为个人开发环境选择Ubuntu,而服务器选择Centos,今天我们就来学习个人开发环境的搭建,拿首先得安装。
2.虚拟机软件
2.1.引入
Linux需要在一台电脑上进行安装,获得一台电脑的方式有很多,比如网上或者实体店购买。当然现在有了更加便宜的解决方案,那就是虚拟机软件,使用虚拟机软件可以模拟出计算机,从而可以在上面安装任何的操作系统。
2.2.常见的虚拟机软件
vmware 虚拟机软件中的NO.1,特点,模拟完善,有商业授权,收费软件,内存大户
virtualbox 原来的sun公司,现属于Oracle,免费开源,更新及时,体积小,内存优化,兼容性不是特别好
virtual PC 微软的免费产品,仅支持windows系统(微软官方说只支持windows,其实别的系统也可以安装)现已停止更新
Hyper-V 微软最新的虚拟机软件
2.3.安装vmware
双击该虚拟机软件进行安装
一路下一步就行
注意:
1、安装启动失败(注意电脑bios是否开启虚拟化)
2、安装完成后不能看到屏幕
原因红蜘蛛客户端,使用了vmware的虚拟网卡作为网卡了,而该网卡的Ip和教师机不在同一网段.
解决方法:重新启动红蜘蛛客户端,如果还是不行,先把虚拟网卡禁用,在启动红蜘蛛客户端
3.Ubuntu安装
3.1.引入
分为以下三步:
虚拟一台裸机:就相当于买了一台电脑
配置裸机:安装前配置,系统盘位置,内存空间、网络等设置
安装:具体的安装步骤
安装完成后配置:安装完成后备份等操作。
3.2.虚拟一台裸机
3.2.1.新建虚拟电脑
3.2.2.选择系统
3.2.3.存储位置
3.2.4.指定磁盘大小和方式
3.2.5.最后完成配置创建
选择固定磁盘大小8G
3.3.配置裸机
3.3.1.系统设置
调整内存大小
3.3.2.显存设置
3.3.3.引导系统镜像文件
光驱,加载iso安装文件
3.4.网络设置
安装时候可以关闭网络,防止网络更新,当然你们不能上外网可以忽略。
wmware的提供了四种网络接入模式,它们分别是:
1、Nat网络地址转换模式(NAT,Address Translation)
虚拟机可以通过网络访问到宿主机
Vmware 的虚拟机可以访问宿主机
Virbox 则不可以
最多的优点是不用配置IP
5.10 Nat Nat网络地址转换
2、Bridged Adapter 桥接模式 (采纳)
可以相互访问,因为虚拟机在真实网络段中有独立IP,主机与虚拟机处于同一网络段中,彼此可以通过各自IP相互访问。
3、Internal 内部网络模式
4、Host-only Adapter 主机模式
注意桥接网卡的选择,如果需要上外网,就要选择连接外网的网卡作为桥接模式的网卡。(wireless)
安装完成后,我们需要登录我们的操作系统,有两个用户可供选择。我们可以对比windows来进行学习.
windows系统:administrator,itsource
ubuntu:root,itsource
3.6.安装后操作
1.必须备份
安装完成后备份系统,以便以后出问题后恢复。
2.开启网络
默认已经开启,不用管。
2.全屏处理
虚拟机默认只有一小块,不好操作,需要做全屏处理。
3.6.1.备份快照系统
3.6.2.全屏处理
1.选择安装vmware tools
2.安装增强功能全屏、拷贝命令等高级功能,但是呢,安装了有的同学由于兼容性可能会导致一些问题(比如黑屏,窗口不能移动等),所以按照之前一定要备份好,如果有问题就还原不用增强功能。
3.解压 执行 (在解压目录下找到执行文件vmware-install.pl)
sudo ./vmware-install.pl
一路回车,有yes就yes
4.Ubuntu操作
4.1.常规操作
文件等常规操作和windows差不多
4.2.软件安装方式
4.2.1.本地软件包安装
1)绿色版安装
常见的压缩文件后缀名 .tar.gz
通过tar -zxvf 文件名即可解压缩安装。
2)rpm安装:以软件包的形式安装
rpm –q 软件名称 查询软件是否被安装
rpm –ivh 软件包路径 安装软件 rpm –ivh xxx.rpm
rpm –e 软件名称 卸载软件
rpm -qa | grep 部分名称 //利用管道模糊查询软件安装情况
3)源码编译安装
configure //配置软件的安装,可以设置安装路径和一些安装参数
make //编译 把源码编译成二进制代码
make install //安装 把二进制代码复制到相应的目录
4.2.2.软件源安装
软件源就是一个应用程序安装库,有点儿像maven仓库只是maven仓库里面放的是jar包,而软件源里面是很多很多的应用软件。
软件源可以是网络服务器,是光盘,甚至是硬盘上的一个目录。作为debian系的ubuntu,继承了debian的deb和apt系统,而redhat系centos,yum安装,只要设定好软件源,就能很方便使用命令的安装软件了。这时软件源获取安装文件,可以自动解决安装包的依赖问题
Apt和yum类似于maven
4.3.配置软件源为光盘
4.3.1.设置软件源
1)图形界面操作
右上角系统->系统设置->软件和更新
设置安装软件的源头:虚拟机加载的光盘(系统不能上网)
2)命令操作(了解)
sudo gedit /etc/apt/sources.list
执行安装命令 更新
sudo apt-get update
若出现
E: 无法获得锁 /var/lib/dpkg/lock - open (11: 资源暂时不可用)
E: 无法锁定管理目录(/var/lib/dpkg/),是否有其他进程正占用它
找到进程pid并kill
ps aux | grep apt-get
sudo kill pid
5.命令执行方式
5.1.引入
Linux最开始是没有图形界面的,都是通过命令操作。后面为了方便操作一些版本的操作系统把常用的操作封装图形操作,这样我们可以使用图形界面操作Linux,但并且不是所有的功能都有图形界面的,有的操作必须得命令完成。并且一般服务器都是不安装图形界面。所有我们要学习命令操作方式,Linux操作命令分两种:
本地终端执行
远程终端执行
5.2.本地终端
类似于windows下面的cmd。
5.2.1.打开本地终端
5.2.2.简单使用
1、查看IP
Linux :ifconfig windows:ipconfig
2、查看端口
netstat -an | more
3、打开和创建文件
Linux:gedit windows:记事本
gedit如果当前目录存在此文件就显示,没有的创建
结束当前执行命令:ctrl +C
注意:
1、在终端里面只要需要权限的地方,相应的命令前面加上sudo,加上以后就是以管理员的方式执行。
5.3.远程访问Linux
5.3.1.引入
虽然可以通过本地终端,访问linux,但是有的时候服务器不在咱们身边。需要远程连接并操作。
要想远程访问Linux,需要SSH英文全称Secure Shell,是一种安全的协议,也是用于远程登入的。
既然是远处登入工具,那么就需要有一台主机作为客户端,另一台主机作为服务器端。且在客户端上面必须要有能够远处登入的软件工具才行。接下来分别做讲解.
5.3.2.服务端-sshd服务安装
在安装之前判断是否安装(在本地终端执行)
ssh localhost
ssh: connect to host localhost port 22: Connection refused
如上所示,表示没有还没有安装,可以通过apt安装,安装步骤如下:
3.验证sshd服务是否已经正常工作。
ssh localhost 能够正常连接。
我们已经安装了ssh的服务器端,并且使用本地终端连接登录了。使用客户端软件进行访问,拿什么是客户端呢?
5.3.3.客户端访问
对于客户端来说,我们的客户端可能是linux系统,也有可能是windows系统。
如果客户端是Linux系统,只需要使用ssh命令远处登入即可(ssh host)。
如何客户端是windows系统,可以通过客户端工具实现远程登入的工具,具体有哪些工具我们待会儿来讲。接下来我们我们思考一个问题我们只登录就ok吗?
当然我们远程登入是不够的,我们有时需要上传我们的软件包到服务器,有时需要从服务器下载软件下来,这时就涉及文件的上传和下载。这时在windows安装一些工具。那我们登入和文件上传、下载在windows都有哪些工具呢?
1)远程终端软件
远程登入:xshell,putty等(远程连接,类似windows远程桌面)
文件上传、下载:xftp,winscp等(上传文件)
注意 :xshell和xftp都是xmanager的组件,所以只需要安装xmanager就ok了。就能搞定,在实际的工作中经典的组合有putty+winscp xshell+xftp(xmanager),当然有的公司不一定用到这些工具,而使用了其他的,但是万变不离其宗。
2)putty远程连接和winscp远程上传和下载
Putty安装:绿色版,不需要安装,直接解压缩就ok
Winscp安装:傻瓜式安装,直接安装就ok
3) xshell远程连接和xftp远程上传和下载
和putty和winscp大同小异(略)
6.Linux命令
前面已经会使用几个简单的linux命令了,接下来我们再系统学习一下Linux的常用命令
6.1.常用命令
1.查看当前所在目录(拷贝目录到一些配置文件)
pwd
2.切换目录(需要到特定的目录执行命令)
cd 目录名
Tab补全
3.查看目录文件信息
ls //列出文件信息
ls -l //以详细信息方式列出文件信息
ls -al //以详细信息方式列出所有文件信息,包含隐藏文件
ls 目录名 //查看该目录的文件信息
ll //等于ls -al
4.查看当前用户
whoami //查看当前操作用户
who am i //查看当前登录用户(有可能是有多个的)的信息
5.切换用户
设置root密码
1、先用安装时候的用户登录进入系统,打开终端
2、输入:sudo passwd 按回车
3、输入新密码,重复输入密码,最后提示passwd:password updated sucessfully
此时已完成root密码的设置
4、输入:su root 切换用户到root试试…
su
su - //切换到root用户
su - root //切换到root用户和su - 一样
su - user //切换到user用户
su user //切换到user用户,不切换用户权限
exit //注销当前用户,返回前一用户
开启root远程登录(默认是不能远程登录的)
sudo gedit /etc/ssh/sshd_config文件,
1.将PermitRootLogin 的值改为yes
2.将 PermitEmptyPasswords no (如果是yes就改成no)
并重启ssh 服务
sudo service ssh restart
注意:
su命令和su -命令最大的本质区别就是:前者只是切换了root身份,但Shell环境仍然是普通用户的Shell;而后者连用户和Shell环境一起切换成root身份了。只有切换了Shell环境才不会出现PATH环境变量错误。su切换成root用户以后,pwd一下,发现工作目录仍然是普通用户的工作目录;而用su -命令切换以后,工作目录变成root的工作目录了
6.2.文件相关命令
在学习文件相关命令之前,我们先来看一Linux的文件系统
6.2.1.文件系统
1)文件系统结构
Linux有个基本思想:一切都是文件。就是系统中的所有都可以归结为一个文件,包括命令、硬件和软件设备、操作系统、进程等等对于操作系统内核而言,都被视为拥有各自特性或类型的文件。而这些文件是以一定的结构组织的。
linux系统的目录结构是一个以/(根目录)为根节点的树形结构
2)系统目录介绍
/bin 存放二进制可执行文件(命令),所有用户都可以使用
/sbin 存放二进制可执行文件,只有root用户可以使用
/boot 系统启动需要的核心文件
/dev 设备文件
/home 用户的主目录,每一个非root用户都会在home有一个用户名的文件夹
/lib 系统共享动态链接库
/mnt 挂载目录,通常挂载到该目录下
/mnt/upan
/etc 存放系统配置文件目录
/etc/passswd 用户信息文件
/etc/group 用户组信息文件
/var 用来存放常态性变动的文件,经常发生变化的文件。比如缓存、登录文件,mysql数据库文件等
/tmp 临时目录,用来存放临时文件
/proc 虚拟目录,是内存的映射,可以访问到内存中的系统信息
/sys 和proc类似,存放和内核相关的信息和数据
/root root用户的主目录
/usr 存放应用程序和文件(类似于windows的system32、program files目录)
/usr/local/src 所有应用程序包都放这儿
/usr/local/ 所有的应用程序都安装在这个目录。 Program Files
/usr/bin、/usr/sbin:这是对/bin、/sbin的一个补充
6.2.2.目录操作命令
讲具体目录命名之前我们需要定位我们的目录或文件,就需要掌握相对路径和绝对路径
1)相对路径和绝对路径
绝对路径:
以/(根目录)开头的路径(例如/home、/etc/passwd)
相对路径:
以./开头的路径,./可以省略(指相对于当前路径)
./ 表示当前目录
…/ 表示上一级目录
路径的最后一个斜杠可以省略
2)命令
创建目录
mkdir 目录名 //创建一个目录
mkdir -p 目录1/目录2/目录3 //递归创建目录
删除目录
rm -rf 路径 //可以删除文件和目录 -r(递归) -f(暴力)
移动目录
mv dir1 dir2 如果dir2不存在,将dir1目录名修改为dir2(重命名),否则将dir1目录移动到dir2中
mv d1 d2/d3 如果d2存在d3不存在,把d1移动到d2中并且改名为d3,否则把d1移动到d2/d3下面
总结:是移动还是改名,就看第二个参数路径是否存在。存在就移动,不存在就改名。
复制目录
cp -rf dir1 dir2 //将dir1复制一份到dir2目录(包含目录内容一起复制)
cp -rf dir1/* dir2 //直接复制内容(非常重要)
特殊路径和快速切换路径
特殊目录 ~ 表示用户主目录
快速切换目录
cd ~ //切换到用户主目录
cd - //切换到上次目录
6.2.3.文件相关命令
创建文件
touch 文件路径 //创建一个空白文件
查看文件内容
cat /将文件内容直接显示出来
more //将文件内容分屏显示(按回车显示下一行,按空格显示下一屏)Ctrl+C退出
less //将文件内容分页显示(pageup上一页,pagedown或空格下一页,回车显示下一行)
head //显示文件的前面几行内容
head -n 3 1.txt //显示文件前3行内容
head -n -3 1.txt //显示文件内容,除了最后3行
tail //显示文件后几行内容
tail -n 3 1.txt //显示文件后3行内容
tail -n +3 1.txt //显示文件内容,除了最开始3行
tail -f //动态显示文件内容,默认十行,可以配合-n使用
tail -n 3 -f 1.txt //动态显示文件后3行内容(查看最新日志(实时更新))
wc //统计文件内容行、句、字符数
添加内容到文件
和 >> //输出重定向,> 覆盖写 , >> 追加写
echo hello > 1.txt //以覆盖写的方式将hello字符添加到文件1.txt
echo world >> 1.txt //以追加的方式将world字符添加到文件1.txt
cat 2.txt > 1.txt //将2.txt文件的内容覆盖到1.txt
cat 2.txt >> 1.txt //将2.txt文件的内容追加到1.txt
查找文件
find
直接从硬盘查找文件,搜索速度慢,但是能实时搜索
参数
–name //以文件名作为参数进行查找
-mindepth //最小目录层次
-maxdepth //最大目录层次
在/home目录下查找以.txt结尾的文件名
find /home -name “*.txt”
其他参数通过man或者–help参数学习
示例:find -maxdepth 3 -name passwd
总结:
我们学习了一些常用命令和文件相关命令,其实Linux还有有很多命令,不用死记硬背。会使用一些常用的就ok,用到时查看命令文档。或者网上搜索