附录 B OS(Ubuntu)的设置
我们在附录 A 中已经准备好了环境,现在来了解一下安装客 OS(Ubuntu)的流程。
B.1 安装Ubuntu
首先从下述 URL 下载 Ubuntu 的 CD 镜像(图 B.1)。Ubuntu 为多种执行环境准备了相应的镜像,本书使用的是 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 查看进程
$ ps aux | grep sshd
如果进程列表中有 usrsbin/sshd -D,就表示 SSH 守护进程已经启动。
NOTE
如果前面忘记安装 OpenSSH server,则需要通过
apt-get
等命令手动安装。
$ 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 连接
$ ssh -p 2222 bpbook@127.0.0.1
The authenticity of host '[127.0.0.1]:2222 ([127.0.0.1]:2222)' can't be established.
RSA key fingerprint is d0:e8:9f:96:8e:24:0d:96:dc:0b:51:fb:7f:b7:1b:f0.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added '[127.0.0.1]:2222' (RSA) to the list of known hosts.
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 安装中文语言包
sudo apt-get install language-pack-zh-hans
sudo update-locale LANG=zh_CN.UTF-8
执行 LIST 3 中的命令后即可安装中文的 locale 文件并完成设置。安装完成之后在 login-shell 的设置文件(.bashrc)中设置下述环境变量(LIST 4)。
LIST 4 在 .bashrc 中设置用于设定语言的环境变量
export LANG="zh_CN.UTF-8"
export LANGUAGE="zh_CN:zh"
设置完成之后,用 source
命令反映设置(LIST 5)。
LIST 5 反映 .bashrc 的设置
$ source ~/.bashrc
到这里,中文就设置完毕了。以后再启动支持中文的 Vim 等程序时,可以看到信息都是以中文显示的。
B.4 添加用户
用于开发的服务器上常要运行许多应用,但从安全角度讲,最好不要用 root 用户来运行它们。
所以,我们需要根据应用的开发进度,设置能够通过 sudo
命令修改服务器和中间件设置的组以及用户。这里我们以添加 dev 组和 bpuser 用户为例进行学习。
首先用 bpbook 用户登录并创建组。如 LIST 6 所示,以 root 权限执行 groupadd
命令来创建 dev 组。
LIST 6 添加组
$ sudo groupadd dev
接下来创建用户。用 adduser
命令创建 bpuser 用户。此时用 —ingroup 选项指定 dev 可以让新用户加入 dev 组(LIST 7)。
LIST 7 添加用户
$ sudo adduser bpuser --ingroup dev
这样一来就创建了 bpuser 用户。需要删除用户时使用 userdel
命令进行删除(LIST 8)。
LIST 8 删除用户
$ sudo userdel -r bpuser
Ubuntu 14.04 默认有 sudo 组,被添加到这个组的用户均可以使用 sudo
命令。
LIST 9 向组添加用户
$ sudo usermod -aG sudo bpuser
不过在目前的设置下,dev 组的用户每次使用 sudo
命令都要输一遍密码,这必然影响开发环境的便捷性。因此我们要让 dev 组的用户在执行 sudo
命令时免去输入密码的麻烦。
我们在 etcsudoers.d/ 目录下创建一个文件,并给 dev 组设置权限。先执行下述 visudo
命令(LIST 10)。
LIST 10 执行 visudo
$ sudo visudo -f etcsudoers.d/dev
NOTE
对 sudo 进行个别设置时,尽量不要编辑原设置文件 etcsudoers,最好是如上所述在 etcsudoers.d/ 下放置设置文件。因为在升级 OS 等时容易无意中覆盖掉 etcsudoers 文件,导致所有账户都无法使用 sudo 命令。这样做可以免除上述顾虑。
执行 visudo
命令后会生成 etcsudoers.d/dev 文件。对该文件作如下描述。
LIST 11 sudo 设置示例
%dev ALL=(ALL) NOPASSWD:ALL
按照 LIST 11 所示设置之后,dev 组的所有用户就都可以不输入密码直接执行 sudo
命令了。
NOTE
本节,我们站在本地开发环境的角度,学习了如何设置无需密码执行
sudo
命令,以维持开发环境的便捷性。但是,
sudo
命令可以使用 root 权限对服务器进行操作,一旦用户被窃取,带来的损害将会非常大。这个风险我们一定要清楚。因此,如果我们使用的是可通过互联网访问的共享服务器、正式运营的服务器,那么当我们考虑设置“无需密码执行
sudo
命令”时,一定要慎之又慎。