购买
下载掌阅APP,畅读海量书库
立即打开
畅读海量书库
扫码下载掌阅APP

3.1 部署虚拟机Linux环境

3.1.1 在VMware下安装Linux

要开发Linux上的程序,前提是安装了Linux操作系统。通常在公司开发项目中都会有一台专门的Linux服务器供用户使用,而我们自己学习时不需要这样,可以使用虚拟机软件(比如VMware)来安装Linux操作系统。

VMware是大名鼎鼎的虚拟机软件,它通常分两种版本:工作站版本(VMware Workstation)和服务器客户机版本(VMware vSphere)。这两类软件都可以虚拟机上安装不同的操作系统。个人用得较多的是工作站版本,供单个人在本机使用。VMware vSphere通常用于企业环境,供多个人远程使用。通常,我们把自己真实PC上装的操作系统叫宿主机系统,VMware中安装的操作系统叫虚拟机系统。

VMware Workstation可以到网上去下载,它是Windows软件,安装过程非常简单,这里就不浪费笔墨了。笔者这里使用的是15.5版本,其他版本应该也可以使用。虽然现在VMware Workstation 16已经出世,但由于笔者的Windows操作系统是Windows 7,因此没有使用VMware Workstation 16,VMware Workstation 16不支持Windows 7,必须在Windows 8或更高版本中使用。

通常我们开发Linux程序,先在虚拟机上安装Linux操作系统,然后在这个虚拟机的Linux系统中编程调试,或在宿主机系统(比如Windows)中进行编辑,然后传到Linux中进行编译。有了虚拟机的Linux系统,开发方式的灵活性更大。实际上,不少一线开发工程师都是在Windows下阅读编辑代码,然后放到虚拟机的Linux系统中编译运行,这种方式的开发效率居然还不低。

这里采用的虚拟机软件是VMware Workstation 15.5(这是最后一个能安装到Windows 7上的版本)。在安装Linux之前,我们要准备Linux映像文件(ISO文件),可以从网上直接下载Linux操作系统的ISO文件,也可以通过UltraISO等软件从Linux系统光盘制作一个ISO文件,制作方法是在菜单中选择“工具→制作光盘映像文件”。

不过,笔者建议直接从网上下载一个ISO文件来使用,笔者就从CentOS官网(https://www.centos.org/)下载了一个64位的CentOS 7.6,下载下来的文件名是CentOS-7-x86_64-DVD-1810.iso。当然其他发行版本也可以,如RedHat、Debian、Ubuntu、Fedora等,都可以作为学习开发环境。

ISO文件准备好之后,就可以通过VMware来安装Linux了。打开VMware Workstation,然后根据下面几个步骤操作即可。

步骤01 在VMware上选择菜单“文件→新建虚拟机”,然后出现“新建虚拟机向导”对话框,如图3-1所示。

066-1

图3-1

步骤02 单击“下一步”按钮,出现“安装来源”对话框,由于VMware15默认会让Ubuntu简易安装,可能会导致很多软件安装不全,为了不让VMware简易安装CentOS,因此选择“稍后安装操作系统。”,如图3-2所示。

066-2

图3-2

步骤03 单击“下一步”按钮,此时出现“客户机操作系统”对话框,我们选择Linux和“CentOS 7 64位”,如图3-3所示。

067-1

图3-3

步骤04 单击“下一步”按钮,此时出现“命名虚拟机”对话框,我们设置虚拟机名为“CentOS 7 64位”,其位置可以自己选择一个空闲空间较多的磁盘路径,笔者这里设置的是“g:\vm\CentOS 7 64位”。然后单击“下一步”按钮,此时出现“指定磁盘容量”对话框,保持默认的20GB,再多一些也可以,其他保持默认设置。继续单击“下一步”按钮,此时出现“已准备好创建虚拟机”对话框,该步只是让我们看一下前面设置的配置列表,直接单击“完成”按钮即可。此时在VMware主界面上可以看到一个名为“CentOS 7 64位”的虚拟机,如图3-4所示。

067-2

图3-4

步骤05 现在虚拟机还是空的,启动不了,因为还未真正安装。单击“编辑虚拟机设置”,出现“虚拟机设置”对话框,在硬件列表中选中“CD/DVD(IDE)”,再选中“使用ISO映像文件”,并单击“浏览”按钮,选择我们下载的CentOS-7-x86_64-DVD-1810.iso文件,如图3-5所示。

067-3

图3-5

步骤06 单击“确定”按钮,关闭“虚拟机设置”对话框。此时又回到了主界面,单击“开启此虚拟机”,稍等片刻,会出现CentOS 7的安装向导界面,如图3-6所示。

067-4

图3-6

步骤07 选择第一个Install CentOS 7并按回车键,然后出现选择语言对话框,如图3-7所示。

068-1

图3-7

步骤08 这里选择“简体中文(中国)”,然后单击“继续”按钮,出现“安装信息摘要”对话框,如图3-8所示。

068-2

图3-8

步骤09 单击“软件选择”,然后在左侧选择“开发及生成工作站”,在右侧选择“附加开发”“开发工具”和“平台开发”,如图3-9所示。

068-3

图3-9

至此,常用的一些开发工具已经自动安装好了。单击“完成”按钮回到“安装信息摘要”对话框,再单击“安装位置”,此时将出现“安装目标位置”对话框,直接单击“完成”按钮即可。这是因为我们是虚拟机安装,所以会自动分区。再回到“安装信息摘要”对话框中,会发现右下角的“开始安装”可用了。单击“开始安装”,随后就开始安装了,此时我们可以设置ROOT账号的密码,并添加一个新账号,这里不再赘述。

稍等片刻,虚拟机CentOS 7安装完毕。下面我们需要对其进行一些设置,使其使用起来更加方便。

3.1.2 关闭防火墙

为了联网方便,最好一开始就关闭防火墙。首先查看防火墙的状态,命令如下:

[root@localhost ~]# firewall-cmd --state
running

running表示防火墙正在运行,然后临时关闭防火墙,命令如下:

[root@localhost ~]# systemctl stop firewalld

永久关闭防火墙,命令如下:

[root@localhost ~]# systemctl disable firewalld.service
Removed symlink /etc/systemd/system/multi-user.target.wants/firewalld. service.
Removed symlink /etc/systemd/system/dbus-org.fedoraproject.FirewallD1. service.

再次查看防火墙的状态,命令如下:

[root@localhost ~]# firewall-cmd --state
not running

3.1.3 制作快照

VMware的快照功能可以把当前虚拟机的状态保存下来,以后万一虚拟机操作系统出错了,可以恢复到制作快照时的系统状态。制作快照很简单,选择VMware主菜单“虚拟机→快照→拍摄快照”,然后出现“拍摄快照”对话框,如图3-10所示。

069-1

图3-10

我们可以增加一些说明,比如“刚刚装好”之类的说明性文字,然后单击“拍摄快照”,此时正式制作快照,并在VMware左下角任务栏上会有百分比进度显示,在达到100%之前最好不要对VMware进行操作,等到100%时表示快照制作完毕。快照制作完毕后,我们可以关闭Linux,再进行一些虚拟机的网络设置。

3.1.4 以桥接模式连接Linux虚拟机

前面Linux虚拟机准备好了,本节在物理机器的Windows操作系统(简称宿主机)上连接VMware中的虚拟机Linux(简称虚拟机),以便传送文件和远程控制编译运行。基本上,两个系统能相互ping通就算连接成功了。别小看这一步,有时也蛮费劲的。下面简单介绍VMware的3种网络模式,以便连接失败时可以尝试去修复。

VMware虚拟机的网络模式就是虚拟机操作系统和宿主机操作系统之间的网络拓扑关系,通常有桥接模式、主机模式、NAT模式。这3种网络模式都通过一台虚拟交换机和主机通信。默认情况下,桥接模式下使用的虚拟交换机是VMnet0,主机模式下使用的虚拟交换机是VMnet1,NAT模式下使用的虚拟交换机是VMnet8。如果需要查看、修改或添加其他虚拟交换机,可以打开VMware,然后选择主菜单“编辑→虚拟网络编辑器”,此时会出现“虚拟网络编辑器”对话框,如图3-11所示。

070-1

图3-11

默认情况下,VMware会为宿主机操作系统(这里是Windows 7)安装两块虚拟网卡,分别是VMware Virtual Ethernet Adapter for VMnet1和VMware Virtual Ethernet Adapter for VMnet8。看名字就知道,前者用来与虚拟交换机VMnet1相连,后者用来连接VMnet8。我们可以在宿主机Windows 7系统的“控制面板→网络和Internet→网络连接”下看到这两块网卡,如图3-12所示。

070-2

图3-12

有朋友可能会问,对于虚拟交换机VMnet0,为什么宿主机系统中没有虚拟网卡连接呢?这个问题问得好,其实VMnet0这个虚拟交换机所建立的网络模式是桥接网络(桥接模式中的虚拟机操作系统相当于宿主机所在的网络中的一台独立主机),所以主机直接用物理网卡去连接VMnet0。

值得注意的是,这3种虚拟交换机(VMnet0、VMnet1和VMnet8)都是默认就有的,我们也可以自己添加更多的虚拟交换机(在图3-11中的“添加网络”按钮就有这样的功能),如果添加的虚拟交换机的网络模式是主机模式或NAT模式,那么VMware会自动为主机系统添加相应的虚拟网卡。本书在开发程序时一般以桥接模式连接,如果要在虚拟机中上网,则可以使用NAT模式。接下来具体阐述如何在这两种模式下相互ping通,主机模式了解即可,不太常用。

桥接模式是指宿主机操作系统的物理网卡和虚拟机操作系统的网卡通过VMnet0虚拟交换机进行桥接,物理网卡和虚拟网卡在拓扑图上处于同等地位,网桥模式使用VMnet0这个虚拟交换机。桥接模式下的网络拓扑如图3-13所示。

070-3

图3-13

知道原理后,我们来具体设置桥接模式,使得宿主机和虚拟机相互ping通。其过程如下:

1)打开VMware,单击“编辑虚拟机设置”,如图3-14所示。

070-4

图3-14

此时虚拟机必须处于关机状态,即“编辑虚拟机设置”上面的文字是“开启此虚拟机”,说明虚拟机是关机状态。通常,对虚拟机进行设置最好是在关机状态,比如更改内存大小等。不过,如果只是配置网卡信息,也可以在开启虚拟机后再进行设置。

2)单击“编辑虚拟机设置”后,将弹出“虚拟机设置”对话框,在该对话框内选中“网络适配器”,在右边选择“桥接模式”,并勾选“复制物理网络连接状态”复选框,如图3-15所示,单击“确定”按钮。接着,开启此虚拟机,并以root身份登录Linux。

071-1

图3-15

3)设置桥接模式后,VMware的虚拟机操作系统就相当于局域网中的一台独立主机。它可以访问网内任何一台机器。在桥接模式下,VMware的虚拟机操作系统的IP地址、子网掩码可以手工设置,而且要和宿主机处于同一网段,这样虚拟系统才能与宿主机进行通信,如果要上网,还需要自己设置DNS地址。当然,更便捷的方法是从DHCP服务器处获得IP、DNS地址(家庭路由器通常包含DHCP服务器,所以可以从那里自动获取IP和DNS等信息)。

在虚拟机CentOS 7.2中打开终端窗口(可以在桌面上右击,然后在快捷菜单中选择“在终端中打开”),然后在终端窗口(下面简称终端)输入查看网卡信息的命令ifconfig:

[root@localhost ~]# ifconfig
ens33: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        ether 00:0c:29:cc:b8:99  txqueuelen 1000  (Ethernet)
        RX packets 2156  bytes 132822 (129.7 KiB)
        RX errors 0  dropped 78  overruns 0  frame 0
        TX packets 0  bytes 0 (0.0 B)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

其中ens33是笔者虚拟机CentOS 7.6中的一块默认安装的网卡的名称,我们可以修改其配置文件来设置新的网卡配置信息。在终端输入:

# vi /etc/sysconfig/network-scripts/ifcfg-ens33

ifcfg-ens33是网卡ens33的配置文件,假设宿主机Windows的IP是192.168.11.0/8网段的,那么对其进行如下修改:

TYPE=Ethernet
PROXY_METHOD=none
BROWSER_ONLY=no
BOOTPROTO=static
IPADDR=192.168.11.129
NETMASK=255.0.0.0
DEFROUTE=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=yes
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6_FAILURE_FATAL=no
IPV6_ADDR_GEN_MODE=stable-privacy
NAME=ens33
UUID=6d8a1ed9-4e0a-4e79-8b46-6b2336cff3a5
DEVICE=ens33
ONBOOT=yes

主要是把BOOTPROTO修改为static,表示该网卡采用静态IP地址,然后添加IPADDR和NETMASK,即IP地址和掩码,最后把ONBOOT设置修改为yes,表示开机就生效,然后保存并退出。接着重启网络服务,以生效刚才的配置,命令如下:

#service network restart

此时再用ifconfig查看网卡的IP,发现已经是新的IP地址了,此时在虚拟机Linux下可以和宿主机Windows相互ping通了(如果ping Windows没有通,可能是因为Windows中的防火墙开着,可以把它关闭),如图3-16所示。

072-1

图3-16

其中,192.168.11.2是笔者Windows 7的IP地址,在Windows 7中ping虚拟机Linux,也可以ping通了。

3.1.5 通过终端工具连接Linux虚拟机

安装完虚拟机的Linux操作系统后,我们就可以使用它了。怎么使用呢?通常都是在Windows下通过终端工具(比如SecureCRT或SmarTTY)来操作Linux。这里使用SecureCRT这个终端工具来连接Linux,然后在SecureCRT窗口下以命令行的方式使用Linux。该工具既可以通过安全加密的网络连接方式(SSH)来连接Linux,又可以通过串口的方式来连接Linux,前者需要知道Linux的IP地址,后者需要知道串口号。除此之外,还能通过Telnet等方式,读者可以在实践中慢慢体会。

虽然操作界面也是命令行方式,但是比Linux自己的字符界面方便得多,比如SecureCRT可以打开多个终端窗口,可以使用鼠标,等等。SecureCRT软件是Windows下的软件,可以在网上免费下载。下载与安装过程就不赘述了,不过强烈建议使用比较新的版本,笔者使用的版本是64位的SecureCRT 8.5和SecureFX 8.5,其中SecureCRT表示终端工具本身,SecureFX表示配套的用于相互传输文件的工具。我们通过一个例子来说明如何连接虚拟机Linux,网络模式采用桥接模式,假设虚拟机Linux的IP地址为192.168.11.129,使用SecureCRT连接虚拟机Linux的步骤如下:

步骤01 打开SecureCRT 8.5或以上版本,在左侧的Session Manager工具栏上选择第三个按钮,这个按钮表示New Session,即创建一个新的连接,如图3-17所示。

073-1

图3-17

此时出现New Session Wizard对话框,如图3-18所示。

073-2

图3-18

在该对话框中选中SecureCRT协议为SSH2,然后单击“下一步”按钮,出现向导的第二个对话框。

步骤02 在该对话框中的Hostname框中输入192.168.11.129,在Username框中输入root。这个IP就是前面安装的虚拟机Linux的IP,root是Linux的超级用户账户。输入完毕后如图3-19所示。再单击“下一步”按钮,出现向导的第三个对话框。

073-3

图3-19

步骤03 在该对话框中保持默认设置即可,即保持SecureFX协议为SFTP,这个SecureFX是宿主机和虚拟机之间传输文件的软件,采用的协议可以是SFTP(安全的FTP传输协议)、FTP、SCP等,如图3-20所示。单击“下一步”按钮,出现向导的最后一个对话框。

073-4

图3-20

步骤04 在该对话框中可以重新命名会话的名称,也可以保持默认名称,即用IP作为会话名称,如图3-21所示。

073-5

图3-21

步骤05 单击“完成”按钮。此时可以看到左侧的Session Manager中出现了刚才建立的新会话,如图3-22所示。接下来出现登录对话框,如图3-23所示。

074-1

图3-22

074-2

图3-23

输入root账号的Password为123456(这是笔者安装虚拟机Linux时设置的),并勾选Save password复选框,这样就不用每次都输入密码了,输入完毕后,单击OK按钮,就到了熟悉的Linux命令提示符下,如图3-24所示。

074-3

图3-24

至此,通过SecureCRT连接虚拟机Linux成功,以后就可以通过命令来使用Linux了。

3.1.6 与虚拟机互传文件

由于笔者喜欢在Windows下编辑代码,然后传文件到Linux下去编译运行,因此经常要在宿主机Windows和虚拟机Linux之间传送文件。将文件从Windows传到Linux的方式很多,有命令行的sz/rz、FTP客户端、SecureCRT自带的SecureFX等图形化的工具,读者可以根据习惯和实际情况选择合适的工具。本书使用的是命令行工具SecureFX。

首先用SecureCRT连接Linux,然后单击右上角的工具栏按钮SecureFX,如图3-25所示。

074-4

c|图3-25

单击图3-25方框中的图标就会启动SecureFX程序,并自动打开Windows和Linux的文件浏览窗口,其界面如图3-26所示。

074-5

图3-26

图中左侧是本地Windows的文件浏览窗格,右侧是IP为120.4.2.80的虚拟机Linux的文件浏览窗格。如果要把Windows中的某个文件上传到Linux,只需要在左侧选中该文件,然后拖曳到右侧的Linux窗格中,从Linux下载文件到Windows也是这样的操作,非常简单。相信读者都是Windows高手,无须多言,实践几下即可上手。 hyeQqJ4/a8ZjASXrzVqKrrFiKXdaM/TxJx0SslhBRg0oDvJg26rhjM5wLQqKoU6A

点击中间区域
呼出菜单
上一章
目录
下一章
×