附录 B OS(Ubuntu)的设置

我们在附录 A 中已经准备好了环境,现在来了解一下安装客 OS(Ubuntu)的流程。

B.1 安装Ubuntu

首先从下述 URL 下载 Ubuntu 的 CD 镜像(图 B.1)。Ubuntu 为多种执行环境准备了相应的镜像,本书使用的是 Server 版。

http://www.ubuntu.com/download/server

{%}

图 B.1 下载 Ubuntu

这里我们使用的版本是 ubuntu-14.04.1-server-amd64.iso。下载完成之后启动之前创建好的虚拟机。初次启动时会显示如图 B.2 所示的安装媒体选择界面。

{%}

图 B.2 VirtualBox 初次启动窗口

这里选择刚刚下载的 CD 镜像并继续。之后界面上会显示启动按钮,点击按钮实际启动 OS 即可。

安装包启动后,进行 Ubuntu 的安装设置。

{%}

图 B.3 Ubuntu 的安装界面

首先是语言设置,最开始请选择 English 并按 Enter 键(图 B.3)。一开始选择中文会导致在 VirtualBox 上运行的控制台显示乱码,所以语言问题等到后面再作调整。

{%}

图 B.4 Ubuntu 的安装准备

设置完语言之后选择 Install Ubuntu Server 进入下一步(图 B.4)。

{%}

图 B.5 Ubuntu Select a language

如图 B.6 ~图 B.8 所示,安装开始后,系统将询问“选择当前所在地”和“键盘设置”,各位请根据自己的情况进行设置。

{%}

图 B.6 Ubuntu Select your location

{%}

图 B.7 Ubuntu Configure locales

{%}

图 B.8 Ubuntu Configure the keyboard

设置完成后,安装就会正式开始。接下来会显示网络的设置。如图 B.9 所示输入 Hostname 并进入下一步。

{%}

图 B.9 Ubuntu Configure the network

根据安装进度,接下来会进入创建账户的界面,这里要设置“用户名”和“密码”。这里我们设置一个名为 bpbook 的用户(图 B.10)。

{%}

图 B.10 Ubuntu Set up users and passwords

接下来是时区的设置,系统会自动为我们推测当前时区。确认无误后点击 Yes(图 B.11)。

{%}

图 B.11 Ubuntu Configure the clock

然后是硬盘分区的设置。选择 Guided - use entire disk and set up LVM 并继续(图 B.12)。

{%}

图 B.12 Ubuntu Partition disks(1)

随后的分区设置会询问 Write the changes to disk and configure LVM,这里选择 Yes(图 B.13)。随后还会出现几次询问,基本上都选 Yes 就可以了。

{%}

图 B.13 Ubuntu Partition disks(2)

如果是网络连接受限的环境,建议设置 HTTP 代理以保证程序包管理器可以访问网络。不受限制的情况下则可以直接选择 Continue 继续安装(图 B.14)。

{%}

图 B.14 Ubuntu Configure the package manager

与安全更新相关的问题要选择 Install security updates automatically(图 B.15)。OS 开发每天都在进行,其中包括很多重要的安全更新,因此我们需要选择这个选项,以保证 OS 能持续安全运行。

{%}

图 B.15 Ubuntu Configuring tasksel

由于 Ubuntu Server 版是精简安装,所以这个阶段并没有安装任何软件。这里我们只勾选 OpenSSH server 并继续(图 B.16)。选择由空格键完成。

{%}

图 B.16 Ubuntu Software Selection

最后会询问是否安装 GRUB 引导加载程序,这里选择 Yes 并继续(图 B.17)。

{%}

图 B.17 Ubuntu Install the GRUB boot loader on a hard disk

之后只要等安装进度条走完,我们就完成客 OS 的安装了。安装完毕之后会要求重启,所以我们这里立刻重新启动(图 B.18)。

{%}

图 B.18 Ubuntu Finish the installation

客 OS 重启后将显示如图 B.19 所示的登录界面。用前面创建的用户登录即可。

{%}

图 B.19 Ubuntu 的登录界面

B.2 SSH 的设置

接下来要让主 OS 通过 SSH 连接虚拟机上的客 OS。我们在图 B.16 所示的步骤中已经安装了 OpenSSH server,因此不必再另行安装了。现在在客 OS 的控制台执行下述命令,检查 ssh 模块是否已经启动(LIST 1)。

LIST 1 查看进程

  1. $ ps aux | grep sshd

如果进程列表中有 usrsbin/sshd -D,就表示 SSH 守护进程已经启动。

NOTE

如果前面忘记安装 OpenSSH server,则需要通过 apt-get 等命令手动安装。

  1. $ sudo apt-get install ssh

现在 SSH 已经准备就绪,可以从主 OS 通过 SSH 登录客 OS 了。VirtualBox 提供了多种连接方法,这里我们用 NAT 连接的端口转发机制,将主 OS 的 2222 端口与客 OS 的 SSH 端口(22)连接起来。

从 VirtualBox 管理界面选择“设置 > 网络 > 网卡 1 > 端口转发”,然后如图 B.20 进行设置。

{%}

图 B.20 VirtualBox 端口转发的设置

如图 B.20 设置完毕后,在主 OS 的控制台上输入 LIST 2 所示的命令。

LIST 2 SSH 连接

  1. $ ssh -p 2222 bpbook@127.0.0.1
  2. The authenticity of host '[127.0.0.1]:2222 ([127.0.0.1]:2222)' can't be established.
  3. RSA key fingerprint is d0:e8:9f:96:8e:24:0d:96:dc:0b:51:fb:7f:b7:1b:f0.
  4. Are you sure you want to continue connecting (yes/no)? yes
  5. Warning: Permanently added '[127.0.0.1]:2222' (RSA) to the list of known hosts.
  6. bpbook@127.0.0.1's password:

NOTE

这里假定主 OS 为 OS X,因此使用的是 ssh 命令。而 Windows 没有 ssh 命令,因此需要使用其他软件(例如PuTTY1)进行 SSH 连接。

1http://www.chiark.greenend.org.uk/~sgtatham/putty/

@ 前的 bpbook 是安装 Ubuntu 时创建的用户名,各位请替换成自己的用户名。初次连接时系统会询问 Are you sure you want to continue connecting (yes/no)?,这里输入 yes。随后系统还会要求输入密码,此时输入创建用户时设置的密码即可。顺利登录客 OS 后将显示图 B.21 所示的内容。

{%}

图 B.21 主 OS 通过 SSH 连接客 OS

NOTE

一般说来,通过 SSH 连接服务器时只校验密码并不安全。本节内容面向的是个人开发环境的搭建,因此只讲了用密码登陆服务器的方法。要想搭建更加安全的环境,建议使用“公钥加密系统”进行认证。

公钥加密https://zh.wikipedia.org/wiki/%E5%85%AC%E5%BC%80%E5%AF%86%E9%92%A5%E5%8A%A0%E5%AF%86

B.3 中文的设置

LIST 3 安装中文语言包

  1. sudo apt-get install language-pack-zh-hans
  2. sudo update-locale LANG=zh_CN.UTF-8

执行 LIST 3 中的命令后即可安装中文的 locale 文件并完成设置。安装完成之后在 login-shell 的设置文件(.bashrc)中设置下述环境变量(LIST 4)。

LIST 4 在 .bashrc 中设置用于设定语言的环境变量

  1. export LANG="zh_CN.UTF-8"
  2. export LANGUAGE="zh_CN:zh"

设置完成之后,用 source 命令反映设置(LIST 5)。

LIST 5 反映 .bashrc 的设置

  1. $ source ~/.bashrc

到这里,中文就设置完毕了。以后再启动支持中文的 Vim 等程序时,可以看到信息都是以中文显示的。

B.4 添加用户

用于开发的服务器上常要运行许多应用,但从安全角度讲,最好不要用 root 用户来运行它们。

所以,我们需要根据应用的开发进度,设置能够通过 sudo 命令修改服务器和中间件设置的组以及用户。这里我们以添加 dev 组和 bpuser 用户为例进行学习。

首先用 bpbook 用户登录并创建组。如 LIST 6 所示,以 root 权限执行 groupadd 命令来创建 dev 组。

LIST 6 添加组

  1. $ sudo groupadd dev

接下来创建用户。用 adduser 命令创建 bpuser 用户。此时用 —ingroup 选项指定 dev 可以让新用户加入 dev 组(LIST 7)。

LIST 7 添加用户

  1. $ sudo adduser bpuser --ingroup dev

这样一来就创建了 bpuser 用户。需要删除用户时使用 userdel 命令进行删除(LIST 8)。

LIST 8 删除用户

  1. $ sudo userdel -r bpuser

Ubuntu 14.04 默认有 sudo 组,被添加到这个组的用户均可以使用 sudo 命令。

LIST 9 向组添加用户

  1. $ sudo usermod -aG sudo bpuser

不过在目前的设置下,dev 组的用户每次使用 sudo 命令都要输一遍密码,这必然影响开发环境的便捷性。因此我们要让 dev 组的用户在执行 sudo 命令时免去输入密码的麻烦。

我们在 etcsudoers.d/ 目录下创建一个文件,并给 dev 组设置权限。先执行下述 visudo 命令(LIST 10)。

LIST 10 执行 visudo

  1. $ sudo visudo -f etcsudoers.d/dev

NOTE

对 sudo 进行个别设置时,尽量不要编辑原设置文件 etcsudoers,最好是如上所述在 etcsudoers.d/ 下放置设置文件。因为在升级 OS 等时容易无意中覆盖掉 etcsudoers 文件,导致所有账户都无法使用 sudo 命令。这样做可以免除上述顾虑。

执行 visudo 命令后会生成 etcsudoers.d/dev 文件。对该文件作如下描述。

LIST 11 sudo 设置示例

  1. %dev ALL=(ALL) NOPASSWD:ALL

按照 LIST 11 所示设置之后,dev 组的所有用户就都可以不输入密码直接执行 sudo 命令了。

NOTE

本节,我们站在本地开发环境的角度,学习了如何设置无需密码执行 sudo 命令,以维持开发环境的便捷性。

但是,sudo 命令可以使用 root 权限对服务器进行操作,一旦用户被窃取,带来的损害将会非常大。这个风险我们一定要清楚。

因此,如果我们使用的是可通过互联网访问的共享服务器、正式运营的服务器,那么当我们考虑设置“无需密码执行 sudo 命令”时,一定要慎之又慎。