Virtual Box虚拟机Ubuntu系统安装及基本配置

Linux简介

什么是 Linux

  Linux:世界上不仅只有一个 Windows 操作系统,还有 Linux、mac、Unix 等操作系统。桌面操作系统下 Windows 是霸主,而 Linux 的桌面操作系统用的人很少,因为 Windows 有的很多软件在 Linux 下没有或者很弱;服务器操作系统则反之。Linux 有一个强大的服务器软件生态系统:Docker、Redis、MySQL、Nginx、Hadoop 等等。

Linux Windows 有哪些不一样?

  1. 使用 Windows 倾向于 GUI 操作,Linux 虽然也可以安装图形界面,但是 Linux 倾向于命令行操作。用 Linux 就要用命令提示符操作,命令行操作的优点慢慢就会体会了(可以自动化、可以精确控制、可以组合命令)。
  2. 底层 api 不一样,因此可执行程序不互通;有一些软件同时在 windows 和 linux 下作了移植;
  3. windows 下的命令到了 linux 下不一定能用;
  4. windows 下主要根据文件的扩展名区分文件类型,linux 中可以没有扩展名;
  5. Linux 不同版本使用方法、配置文件可能变化很大,要自己查、反复试;
  6. 易错的地方:Linux 中文件名是区分大小写的

Linux 内核和 Linux 发行版

  Linux 内核由 Linus 及开源社区维护,内核包含内存管理、存储管理、进程管理、网络通讯等基础模块。很多公司、开源组织基于 Linux 内核打包出了很多“发行版”,不同的发行版的内核版本可能不一致,包含的软件也不一致,界面差别较大,但是命令行操作都是互通的,大部分程序也是互通的。

  内核和发行版的关系就像 Android 内核和“小米手机系统、华为手机系统”的关系一样。

  常用的发行版有 RedHat、CentOS、Debian、Ubuntu 等等。这里我们用 Ubuntu,因为 Ubuntu 内置的软件最适合程序员,其他发行版要自己装。当然也有一些人钻木取火的人瞧不起用Ubuntu 的人。

虚拟机

什么是虚拟机?

  使用 Linux 最好是在计算机上直接安装 Linux 系统,最起码也是双系统启动。不过担心初学者搞砸了自己的电脑,而且 Linux 不太适合日常使用。因此我们使用虚拟机软件在

  Windows 上虚拟出一台电脑出来,在这台虚拟的电脑上安装 Linux。

  使用虚拟机的好处:不破坏物理电脑是,随便搞。坏处:不真实、操作卡。

  Windows 下的虚拟机软件有 VMWare、Virtual Box、HypverV 等。这里我们使用开源免费的 Virtual Box。

  电脑如果配置太差跑不起虚拟机,只能升级电脑,加内存就差不多。

Virtual Box 的安装

  1. 下载地址:https://www.virtualbox.org/
    Virtual Box虚拟机Ubuntu系统安装及基本配置
  2. 一路 Next 就可以。
  3. 新建一个虚拟机
    Virtual Box虚拟机Ubuntu系统安装及基本配置

    需要选 64 位 Ubuntu,不要选成 32 位,因为一些软件不支持 32 位系统。  如果不能选择 32 位的版本,那么说明你的电脑主板没有启用虚拟化,需要进入电脑 bios 设置启用虚拟化。不同版本主板的启用虚拟化的方法不一样,具体请根据你主板的型号去网上搜索。有部分老电脑主板不支持虚拟化,这就没办法了

  4. 虚拟电脑内存至少 2G 才不卡
    Virtual Box虚拟机Ubuntu系统安装及基本配置
  5. 创建虚拟硬盘
    Virtual Box虚拟机Ubuntu系统安装及基本配置

    Virtual Box虚拟机Ubuntu系统安装及基本配置

    Virtual Box虚拟机Ubuntu系统安装及基本配置

    Virtual Box虚拟机Ubuntu系统安装及基本配置

  6. 配置虚拟机,加载 iso 虚拟光盘文件
    Virtual Box虚拟机Ubuntu系统安装及基本配置

    Virtual Box虚拟机Ubuntu系统安装及基本配置

    有的同学运行 VirtualBox 的时候会出现“该内存不能为 writtern”的错误,请看后续的“虚拟机故障排除”这一章。

下载 Ubuntu iso 文件

  1. https://www.ubuntu.com/下载 Desktop 版(Desktop 版是内置了图形界面以及常用桌面软件;Server 版默认没有安装图形界面。当然也可以在 Server 版装图形界面。)。
    Virtual Box虚拟机Ubuntu系统安装及基本配置

    如果在物理机上安装,只要用 UltraISO 等软件把 iso 刻录到光盘上或者制作可启动 U 盘就可以。

  2. 把 iso 文件加载到光驱中(相当于 Linux 安装光盘插入光驱),然后启动虚拟机
    Virtual Box虚拟机Ubuntu系统安装及基本配置

    直到运行到 Linux 安装画面
    Virtual Box虚拟机Ubuntu系统安装及基本配置

    启动虚拟机的时候如何截图?用 windows 的“截图工具”。

安装 Linux

Virtual Box虚拟机Ubuntu系统安装及基本配置

Virtual Box虚拟机Ubuntu系统安装及基本配置

Virtual Box虚拟机Ubuntu系统安装及基本配置

Virtual Box虚拟机Ubuntu系统安装及基本配置

Virtual Box虚拟机Ubuntu系统安装及基本配置

  我测试环境密码用的是 123456,一定要把用户名和密码记住!有一些发行版是禁止简单密码的。

Virtual Box虚拟机Ubuntu系统安装及基本配置

Virtual Box虚拟机Ubuntu系统安装及基本配置

记得把光盘从光驱中取出(卸载 iso 文件),防止再次安装系统。

Virtual Box虚拟机Ubuntu系统安装及基本配置

Virtual Box虚拟机Ubuntu系统安装及基本配置

虚拟机故障解决

VirtualBox 的时候会出现“该内存不能为 writtern”的错误

Virtual Box虚拟机Ubuntu系统安装及基本配置

可以依次尝试下面的方法,哪个解决了就不用再试其他的方法了:

方法 1

  1. 首先确保虚拟机中的系统处于关机状态,如果没有关机,则在终端中执行“shutdown now” 关机。
    Virtual Box虚拟机Ubuntu系统安装及基本配置
  2. 打开 VirtualBox 主程序,打开虚拟机的【设置】
    Virtual Box虚拟机Ubuntu系统安装及基本配置

    勾选【系统】→【处理器】中的【启用 PAE】
    Virtual Box虚拟机Ubuntu系统安装及基本配置

方法 2:在 VirtualBox 管理器的主菜单【管理】→【全局设定】去掉【热键】中的【自动独占键盘】中的勾去掉。

方法 3:在你的 windows 系统中,以管理员权限运行 cmd,执行 sfc /scannow,执行完成后重启电脑。

配置 Linux

Virtual Box虚拟机Ubuntu系统安装及基本配置

输入安装 Linux 时候设定的密码

图形化的程序尽量不要用。在桌面上点右键→打开终端。在很多生产服务器下,是没有装图形化程序的,就是直接命令行界面操作,根本就进不了图形界面。

Virtual Box虚拟机Ubuntu系统安装及基本配置

尽量不要用图形界面,所有操作都可以在“终端”中完成。因此后续操作都尽量在“终端”中进行。也忘了鼠标,别妄想在终端中用鼠标。不要想“终端中听歌、看电影、上网”,场景不对。

使用习惯

  其实是可以“共享文件夹”在虚拟机和宿主机之间共享文件等操作。但是虚拟机使用 linux 的时候,不要想着还有“宿主机(Host)”,不要想着怎么“共享文件夹”,就把当成两台电脑就可以。共享文件的方式就通过经典的 ftp 跨服务器的等方式,就像两台电脑一样。

  可以“共享粘贴板”,但是别这么懒,那就是一台单独的电脑,你怎么复制粘贴?  虚拟硬盘、虚拟光盘(iso)、虚拟内存、虚拟 cpu。虚拟出来的电脑和主机(Host)之间没有直接的联系,也不会互相干扰。

备份

  VBox 安装完成后可以做一个“备份”(主菜单【控制】→【生成备份】),这样万一把虚机系统搞乱了还可以还原回来,可以创建多个“备份”,相当于“还原点”。

锁屏

  为了避免反复锁屏,在设置→亮度和锁屏中关闭“锁屏”;VBox 窗口可以调整大小,虚拟机中的系统会自动调整分辨率,有的电脑不支持。

网卡

  虚拟机的网卡有时候会有问题连不上网,这时候就要在虚拟机的设置中先取消网卡再重新选择网卡,相当于插拔网线。

Linux 的基本命令

文件操作

  • Windows 是多根的文件系统,物理上是 1 到多块硬盘,逻辑上分为 C、D、E……盘,每个盘都是一棵树。Linux 是单根的文件系统,不分 CDE 盘,多块硬盘/U 盘/光盘也是相当于多个文件夹。不同硬盘/U 盘/光盘对应的文件夹叫做“挂载点”,把外部存储设备放到文件系统树的过程又叫做“挂载(mount)”
  • Linux 下无论是文件还是命令都是大小写敏感的。
  • 小白说“文件夹”,专业人士说“目录”(Directory)

Linux 常用根目录的作用

  • boot  存放用于系统引导时使用的各种文件
  • bin  存放二进制可执行文件(ls,cat,mkdir 等)
  • sbin 存放二进制可执行文件,只有 root 才能访问
  • usr  用于存放系统应用程序,比较重要的目录/usr/local 本地管理员软件安装目录
  • opt  额外安装的可选应用程序包所放置的位置
  • dev 用于存放设备文件
  • etc  存放系统配置文件
  • home 存放所有用户文件的根目录
  • lib  存放跟文件系统中的程序运行所需要的共享库及内核模块
  • tmp  用于存放各种临时文件
  • var  用于存放运行时需要改变数据的文件
  • mnt  安装临时文件系统的安装点

常用文件操作命令

  • 工作目录(working directory)就是“当前目录” l 显示当前工作目录 pwd (print work directory)
  • 显示当前目录下的文件、目录 ls 或者 dir
  • 切换工作目录  cd  (Change Directory):cd ./test  切换工作目录到当前目录下的 test 目录(cd 后不要忘了空格);cd .. 到上一级目录;cd /很显然就是返回根目录
  • 新建目录 mkdir   (Make Directory):mkdir test 有的系统目录下是没有权限创建文件夹的。用户的文件一般放到 home 的自己的用户名下
  • 删除目录:rmdir (Remove Directory) 删除空目录;rm(Remove)删除文件;rm -r  testA 删除目录及其下所有文件(-r 就是 recursive 的简写。*坑人的指令:rm -rf /)。
  • mv 移动文件
  • cp  复制文件
  • 查看文本文件内容:cat(一下子全显示,适合小文件);more(分页显示,q 退出)
  • 查找文件:find   -name 'a*'     在当前目录下查找文件名以 a 开始的文件。不要丢了''

其他常用命令

  • ps  查看当前用户当前运行的进程;查看所有运行中的进程 ps –ef
  • reboot 重启 7、 shutdown  now立即关机(备注:课程中写错了,写成了shutdown –now,应该是shutdown now)
  • 退出终端:exit
  • clear 清理当前显示或者快捷键:ctrl+L
  • 上下键可以快速恢复历史命令。可以通过 tab 键完成当前目录下文件或者子目录的自动填充,如果遇到多个前一部分一样的会自动完成一样的前一部分。ctrl+c 取消当前输入的命令重新开始。
  • tar 命令,将文件夹打包成一个文件,同时可进行压缩命令格式,打包  tar  -c -f  归档文件   需要打包的文件,解开  tar -x  -C 解开到指定目录  -f  归档文件
  • man 命令,各个命令的手册,比如 man dir;按 q 退出。linux 命令非常多、参数非常多,只要会搜就行,慢慢记住的越来越多。
  • Linux 管道命令:一个软件或一个命令 要想完成一件事情,通常都需要输入原始数据 , 处理后 , 再把处理的结果输出到一个地方(保存到文件或者显示在屏幕上),Linux 的管道是这样一个东西,它可以把上一个命令的处理结果作为下一个命令的输入数据,供下一个命令使用。例如:
    ps -ef | grep bash
    netstat -a  |  more 3) 因此 cat 1.txt|more 也可以达到 more 1.txt 的效果
  • sudo:基于安全考虑,一般不建议使用超级用户权限登录 linux;而是平时使用低权限用户访问,需要高权限的操作再用 sudo 后跟着指令。比如在/下无法创建文件夹,但是 sudo mkdir a 就可以,当然需要输入密码。su 就是“super user”的简写,sudo 就是“用超级用户权限执行命令”

VI 编辑器

VI 简介

  如果使用 linux 桌面,也有一些图形化文本编辑器(类似于记事本),但 linux 的神级编辑器是 vi,如果连 vi 都不会用就别说会用 linux。

  在很多环境下是没有图形界面的,只能用 vi。VI 是全键盘操作,不能用鼠标。当然日常开发还是在图形界面下使用 VS 等开发,使用 vi 一般是进行简单的修改或者配置文件的修改。

  vi 刚接触感觉很痛苦,用熟了也挺爽的,vi 命令非常多,初学掌握基本的操作即可。vim 是 vi 的加强版。

vi 的运行模式

  Virtual Box虚拟机Ubuntu系统安装及基本配置

命令模式下可以进行行删除等命令的输入(相当于快键键);插入模式下可以进行文本的输入;末行模式下是执行保存、退出等指令用。   易混:插入模式下如果直接输入:就是输入:了,因此要先 esc 退出插入模式

末行模式的指令

  • :wq 保存然后退出   w→write,q→quit    如果是“vi 文件名”方式执行的,则直接写入到指定的文件名中,否则要“:wq 文件名”。
  • :q! 不保存退出
  • :w 保存不退出
  • 在末行模式中输入“!shell 指令”可以不离开 vi 执行 shell 指令

命令模式的命令

  • 移动输入光标,不能在插入模式下按上下左右键。要 esc 先回到命令模式下;
  • shift+^移到行首;shift +$移到行尾。联想一下正则表达式中就好记了;
  • ctrl+b:上滚一屏;ctrl+f 下滚一屏;  b→backward;f→forward
  • dd:删除当前一行;x 删除当前字符
  • 撤销:上一次的操作 u;undo 的简写
  • o:在当前行下新增一行(因为如果移动到行尾再回车的话还是在最后一个字符前回车)自动进入插入模式。
  • i:在当前光标前面插入,a:在当前光标后面插入。a→append(附加)也是自动进入插入模式。

还有一个傻瓜化字符界面编辑器 nano,底下提示信息中^X 的意思就是 ctrl+X。不是每个Linux 上都安装 nano,有时候需要自己装。

软件的安装

  linux 下很多软件都是自己下载源代码、自己编译的,有点痛苦。因此很多发行版都有自己的安装包格式。比如 RedHat 使用*.rpm 的文件,Ubuntu 使用*.deb 文件。

  自己查找、下载安装还是很麻烦。因此很多发行版中都提供了类似于应用市场、NuGet 的东西。

  Ubuntu 推荐使用 apt 进行下载、安装。会从 ubuntu 官网下载(中国区镜像),如果下载速度慢的话,可以设置从其他镜像下载,具体搜索“Ubuntu apt-get  镜像” 执行某些程序的时候,如果程序没安装,还会提示你,比如执行 vim、tree 等。

  安装软件需要 sudo 执行。如下:

  • 安装 “sudo apt-get install 程序名”,比如“sudo apt-get install vim”
  • 卸载“sudo apt-get remove 程序名”

重要配置

网络配置

  • 使用 ifconfig 命令查看网络配置信息,查看 ip 地址和网卡物理地址(MAC 地址)
    要先执行 sudo apt install net-tools 命令安装 net-tools 
    Virtual Box虚拟机Ubuntu系统安装及基本配置
  • 虚拟机和主机之间组建了一个局域网,虚拟机通过主机上网。虚拟机的设置的“网络”中可以设置不同的连接方式。主机可以通过 ifconfig 看到的 ip 地址连接虚拟机的网络。

  • 虚拟机的网络连接方式有很多种,最主要有三种:HostOnly 、NAT、桥接(Bridge)。HostOnly 配置较麻烦,需要懂很多网络工程的东西;NAT 是虚拟机借助于主机网卡访问网络,藏在主机后面,网络中其他设备不能这个虚拟机,连主机都不能,但是虚拟机能连接主机的网络,能上外网;桥接(Bridge)方式则是把虚拟主机也暴露为网络中的一个设备,主机和虚拟主机在网络内是平等的,可以互相访问,但是要求网络中没有设备访问的限制(比如 Mac 地址绑定或者终端个数限制),如果有限制要改路由器的配置。因为咱们需要主机和虚拟机互相访问,除非网络有限制,否则最好配置为桥接(Bridge),配置桥接(Bridge)要选择通过哪个网卡上外网,不能选错了,否则就无法访问外网了。后面我们都配置为桥接(Bridge)。

  • 虚拟机的 ip 地址可能变化,注意。

SSH 服务

  运维人员是怎么远程连接到机房上的服务器,很少使用图形界面(卡,无法自动化)远程登录有专门的通信协议 telnet, telnet 就是通过网络进行命令行操作服务器。只有服务器端开始了远程登录服务,客户端才能通过 telnet 协议控制服务器端。

  但 telnet 协议使用明文传输数据,这会造成严重的安全性问题,所以现在几乎不推荐使用, 而替代协议是 SSH。SSH 通讯过程数据是加密的。

Linux 安装使用 OpenSSH

  • Ubuntu 默认只安装了客户端 openssh-client
  • 安装服务器: sudo apt-get install openssh-server
  • 查看服务器是否开启:netstat -tlp
  • 启动 sudo /etc/init.d/ssh start
  • 重启 sudo  /etc/init.d/ssh restart
  • ssh 服务默认端口 22,可通过修改配置文件修改端口/etc/ssh/sshd_config 
    Virtual Box虚拟机Ubuntu系统安装及基本配置

windows 下如何通过 ssh 连接到 linux  :下载运行 putty,免安装。

linux下重启网络服务: /etc/init.d/network restart 或者是 /etc/init.d/networking restart

putty登录SSH终端出现的“Access Denied”提示:只要在Putty的configuration里面Connection-》SSH-》Auth【认证】-》GSSAPI的配置中,去掉默认的Attempt GSSAPI authentication(ssh-2 only) 一项前面的对勾

Virtual Box虚拟机Ubuntu系统安装及基本配置

Virtual Box虚拟机Ubuntu系统安装及基本配置

如果显示中文乱码,则在 putty 标题栏点击右键,选【change settings】点【Translation】,选 UTF8 编码

Virtual Box虚拟机Ubuntu系统安装及基本配置

新显示会不乱码,旧显示还会乱码。

后续都通过 ssh 连接操作,这也是平时连接服务器时候的常规操作:windows 下开发,然后部署到 linux 下运行。

使用 mysql

安装 mysql 服务器

  • sudo apt-get install mysql-server
  • 根据提示设置 root 用户的密码,测试时候设置为 123456(安装mysql5.7未提示输入密码,安装后修改mysql密码默认密码)
  • sudo apt-get install mysql-client 安装管理客户端
  • mysql -uroot -p123456 通过管理 客户端连接 mysql,如果不报错就 ok。mysql –u 用户名 –p 密码。mysql –uroot –p123456
  • mysql 客户端中执行(不要在 shell 中直接执行)show databases;(不要丢了结尾的英文分号)查看有哪些数据库; 执行一下 select now();正确执行。执行“quit;” 退出 mysql 客户端。
  • 基于安全考虑,mysql 默认只能本机连接。如果想通过其他电脑连接(比如主机访问虚拟机中的 mysql),就需要配置。最好不要配置成任意电脑都可以连接,因为危险。要配置成只允许某些 ip 访问。

设置Mysql密码

  • 进入到etc/mysql 目录下,查看debian.cnf文件 sudo cat /etc/mysql/debian.cnf 
    Virtual Box虚拟机Ubuntu系统安装及基本配置
  • 找到用户名,密码 ,使用此账号登录mysql

    用户名:debian-sys-maint

    密码:BdA9Uyv0QDfFlzuP

    登录:mysql -udebian-sys-maint -pBdA9Uyv0QDfFlzuP

    Virtual Box虚拟机Ubuntu系统安装及基本配置

  • 修改root用户的的密码
    这里是关键点,由于mysql5.7没有password字段,密码存储在authentication_string字段中,password()方法还能用
    在mysql中执行下面语句修改密码
    use mysql;
    // 下面这句命令有点长,请注意。
    update mysql.user set authentication_string=password('') where user='root' and Host ='localhost';
    update user set plugin="mysql_native_password";
    flush privileges;
    quit;
  • 修改完密码,需要重启mysql
    /etc/init.d/mysql restart;
    //或者
    sudo service mysql restart
  • 再次登录
    mysql -u root -p密码;
  • 卸载:
    sudo apt purge mysql-*
    sudo rm -rf /etc/mysql/ /var/lib/mysql
    sudo apt autoremove
  • 安装:
    # 安装的时候会提示要设置root密码,如果你没有在卸载的时候去清理残留数据是不会提示你去设置root密码的 ,我的就没提示,可以用上面的方法修改密码
    sudo apt-get install mysql-client mysql-server #检查mysql是不是在运行
    sudo service mysql status #一般安装完成之后都是会自动运行的,如果没有运行可以start
    sudo service mysql start

配置 MySQL 远程访问(需要网络配置为桥接网络)

  • 编辑 mysql 的配置文件 mysqld.cnf ,由于 mysql 是系统服务,因此需要以 su 运行 vi,才有权限,执行  sudo vi /etc/mysql/mysql.conf.d/mysqld.cnf 。由于不同 mysql 版本配置文件的位置可能不一样,因此最好的找路径的方式就是 cd、dir 一级级的看看。(linux 下不同版本差异性很大,之前查资料都是改/etc/mysql /conf.d/mysql.cnf,但是使用 status;命令查询 mysql 版本之后搜索“mysql 5.7 远程访问”才找到正确的做法。)
  • 把 bind-address = 127.0.0.1 注释掉。
  • 执行 sudo /etc/init.d/mysql restart 重启mysql服务
  • 在主机上执行 ifconfig (Linux下是ifconfig、Windows下是ipconfig),查看主机的ip 地址是多少(别看错了,也别看成虚拟机的ip),假如是192.168.0.11
  • 执行 mysql -uroot -p123456 (-u后面的是用户名、-p后面的是密码,根据你的配置做修改。不要在-u和-p输入空格)进入mysql服务器后
  • 执行 grant all privileges on *.* to root@"192.168.0.11" identified by "这里换成密码" with grant option;       注意:不要丢了末尾的分号,不要直接在命令行下输入,要进入mysql再执行。
  • 再执行  flush privileges;    注意:不要丢了末尾的分号,不要直接在命令行下输入,要进入mysql再执行。

主机上连接虚拟机内的 mysql 一定要连接虚拟机的 ip,别连错了。

主机的 ip 如果变了就要重新配置。

安装vsftp服务器

安装

什么是 ftp。通过 ftp 进行文件的上传下载

执行 sudo apt-get install vsftpd 命令进行安装

配置

这时候可以用 linux 用户登录,能够访问/home/用户名的文件夹下。但是没有上传权限。需要 sudo vi /etc/vsftpd.conf  将 write_enable=YES 前面的#取消,然后执行  sudo /etc/init.d/vsftpd restart  重启

Windows 下可以使用 FileZilla FTP Client 等 FTP 客户端上传下载

中文会有乱码,不用处理,上传下载比较多的文件都压缩。linux 解压使用 unzip“unzip a.zip”。不要传 rar 等格式。

上一篇:给出一个文献上的日期,你能帮助小明判断有哪些可能的日期对其对应吗?


下一篇:读懂IL