在windows下安装VirtualBox和Ubuntu，并运行webserver

我是ideagear的weiwei。
今天学习VirtualBox+Ubuntu下运行webserver。
#环境
windows10 Home/Professional x86/x64
VertualBox 6.0.1
Ubuntu 18.04.3
#下载安装包
1. VirtualBox：https://www.virtualbox.org/wiki/Downloads
2. Ubuntu：https://www.ubuntu.com/download/desktop

#安装VirtualBox
1.打开安装包进行安装。安装完成后启动VirtualBox。

2.点击新建，输入名称，选择类型为Linux，版本为Ubuntu(64-bit),点击下一步。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/488218/1a6fb462-0692-1e72-604c-ac0de2ca0065.png)

3.分配内存大小我选择为1G。点击下一步。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/488218/64d33c5b-c93a-9482-3406-e6a18589b712.png)

4.选择现在创建虚拟键盘，点击下一步。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/488218/145f46f5-e1f6-9287-ef13-eaef532e210d.png)

5.磁盘类型选择默认第一个，下一步。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/488218/939ab282-85f7-0f49-5ac7-a1d26cbf64a1.png)

6.选择动态分配，下一步。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/488218/c5e00871-9be6-493d-0206-e005e1b20216.png)

7.设置硬盘大小为25G，下一步。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/488218/ebcb876f-013f-0e24-777f-b9d4c7ba8471.png)
!

8.创建成功。接下来安装Ubuntu。

#安装Ubuntu18.04
1.点击启动。
2.选择已经下载好的ubuntu安装包，点击启动，等待加载系统。
3.安装语言选择中文(简体)，点击继续。
4.键盘布局选择汉语，点击继续。
5.选择最小安装，其它默认，继续。
6.清除整个磁盘并安装Ubuntu，现在安装。
7.默认上海，继续。
8.设置用户名和密码，自动登录，继续。
9.安装系统，等待系统完成。
10.重启后再进行一些设置后就可以使用Ubuntu了。

#安装apache2 web server
先设置VirtualBox的双向复制粘贴。点击设置，在常规-高级里面把共享粘贴板和拖放设置为双向，再在存储-控制器：SATA中勾选使用主机输入输出缓存，再在控制器：SATA下面的XXX.vdi中勾选固态驱动器。再开启虚拟机，在设备-安装增强设备中安装增强设备，安装完后重启就可以使用了，再点击安装增强设备会提示错误，可以无视。

在中国更新源很慢，可以通过替换源列表文件的方式来加速。

*  先使用`sudo apt install vim`安装vim。
*  再使用`sudo su`使用户拥有修改文件的权限。
*  接着使用`vim /etc/apt/sources.list`进入文件，`dd`在vim中为删除光标所在行命令。可使用它清空文件。
`i`在vim中为进入编辑模式，复制以下内容到文件中。

```
# deb cdrom:[Ubuntu 16.04 LTS _Xenial Xerus_ - Release amd64 (20160420.1)]/ xenial main restricted
deb-src http://archive.ubuntu.com/ubuntu xenial main restricted #Added by software-properties
deb http://mirrors.aliyun.com/ubuntu/ xenial main restricted
deb-src http://mirrors.aliyun.com/ubuntu/ xenial main restricted multiverse universe #Added by software-properties
deb http://mirrors.aliyun.com/ubuntu/ xenial-updates main restricted
deb-src http://mirrors.aliyun.com/ubuntu/ xenial-updates main restricted multiverse universe #Added by software-properties
deb http://mirrors.aliyun.com/ubuntu/ xenial universe
deb http://mirrors.aliyun.com/ubuntu/ xenial-updates universe
deb http://mirrors.aliyun.com/ubuntu/ xenial multiverse
deb http://mirrors.aliyun.com/ubuntu/ xenial-updates multiverse
deb http://mirrors.aliyun.com/ubuntu/ xenial-backports main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ xenial-backports main restricted universe multiverse #Added by software-properties
deb http://archive.canonical.com/ubuntu xenial partner
deb-src http://archive.canonical.com/ubuntu xenial partner
deb http://mirrors.aliyun.com/ubuntu/ xenial-security main restricted
deb-src http://mirrors.aliyun.com/ubuntu/ xenial-security main restricted multiverse universe #Added by software-properties
deb http://mirrors.aliyun.com/ubuntu/ xenial-security universe
deb http://mirrors.aliyun.com/ubuntu/ xenial-security multiverse
```

*  使用`exit`退出权限模式，执行`sudo apt update`
*  `sudo apt install apache2`以便安装Apache2及其所需的依赖项
*  通过输入`apache2 -version`判断是否成功输出。
*  在自带的火狐浏览器中输入localhost并按回车可看到apache2的默认选项说明安装成功了。

#配置UFW防火墙
使用`sudo ufw app list`列出UFW应用程序配置文件。
输出如下：

```
可用应用程序：
  Apache
  Apache Full
  Apache Secure
  CUPS
```

#配置Apache Web服务器

*  使用`sudo systemctl status apache2`验证Apache2服务是否在您的系统上启动并运行。结果如下：

```
apache2.service - LSB: Apache2 web server
   Loaded: loaded (/etc/init.d/apache2; generated)
  Drop-In: /lib/systemd/system/apache2.service.d
           └─apache2-systemd.conf
   Active: active (running) since Tue 2019-09-03 18:44:21 CST; 10min ago
     Docs: man:systemd-sysv-generator(8)
  Process: 627 ExecStart=/etc/init.d/apache2 start (code=exited, status=0/SUCCE
    Tasks: 55 (limit: 1123)
   CGroup: /system.slice/apache2.service
           ├─715 /usr/sbin/apache2 -k start
           ├─718 /usr/sbin/apache2 -k start
           └─719 /usr/sbin/apache2 -k start

9月 03 18:44:20 weiwei-VirtualBox systemd[1]: Starting LSB: Apache2 web server.
9月 03 18:44:20 weiwei-VirtualBox apache2[627]:  * Starting Apache httpd web se
9月 03 18:44:21 weiwei-VirtualBox apache2[627]: AH00558: apache2: Could not rel
9月 03 18:44:21 weiwei-VirtualBox apache2[627]:  *
9月 03 18:44:21 weiwei-VirtualBox systemd[1]: Started LSB: Apache2 web server.
```
active（running）说明apache2服务正在运行。


*  验证Apache是否正常运行并侦听IP地址

使用以下命令了解服务器的IP：`hostname -I`

如果有多个IP的话，在Web浏览器中逐个尝试IP，如下所示：

`http://server_IP`

结果是正常显示apache网页。
#在Apache中设置虚拟主机
默认情况下启用的服务器块能够提供来自`/var/www/html`的文档。

但是，我们可以在`/var/www/`创建一个目录，保留默认目录。

通过`sudo mkdir -p /var/www/ideagear.com/html`命令创建此目录，将ideagear.com替换为你想要的域名。

接着通过以下命令分配目录的所有权：

```
sudo chown -R $USER:$USER /var/www/ideagear.com/html
sudo chmod -R 755 /var/www/ideagear.com
```


*  现在创建一个索引页面，如果Apache运行了域名，我们可以访问索引页面等进行测试。 通过vim编辑器创建HTML文件：`vim /var/www/ideagear.com/html/index.html`
为index.html输入以下代码然后保存：

```
<html>
<head>
<title>欢迎来到www.ideagear.com</title>
</head>
<body>
<h1>ideagear.com的服务器块已启动！</h1>
</body>
</html>
```

如果在文件中打开index.html,会发现中文乱码，解决办法是：

输入`sudo vim /etc/apache2/conf-available/charset.conf`
把AddDefaultCharset UTF-8前面的#去掉，保存文件，再使用
`sudo systemctl restart apache2`重启apache即可。
再次打开index.html发现中文乱码问题解决了。

*  Apache已经创建了用于提供服务器的内容的默认配置文件，但现在我们创建一个自定义的新配置文件。

使用以下代码创建配置文件：
`sudo vim /etc/apache2/sites-available/ideagear.com.conf`
把以下内容复制进配置文件中：

```
<VirtualHost *:80>
ServerAdmin webmaster@ideagear.com
ServerName www.ideagear.com
ServerAlias ideagear.com
DocumentRoot /var/www/ideagear.com/html
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>
```

*  启用域配置文件
使用以下代码

```
sudo a2ensite ideagear.com.conf
sudo a2dissite 000-default.conf
echo "ServerName ideagear.com" | sudo tee /etc/apache2/conf-available/servername.conf
sudo a2enconf servername
sudo systemctl restart apache2
sudo apache2ctl configtest
```
激活配置文件并检查是否有错误。如果输出`Syntax OK`则没有错误。


#测试Apache是否为新建的域名提供服务

在自带浏览器中输入`http://www.ideagear.com`，发现没有连接到指定网站，但是使用`localhost`连接到了index.html。

#在windows的浏览器中显示VirtualBox里面的Ubuntu的网页

*  首先把能和互联网连接的网络设置成共享，家庭网络是`VirtualBox Host-Only Network`
*  ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/488218/3157543e-60a3-3d87-a1d3-03170aa12f34.png)
*  把网络设置连接方式改成（host-only）

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/488218/459fe578-b6cb-8444-9db5-20c817e18d04.png)


使用命令`sudo apt install net-tools`安装nettools

启动后在终端使用`sudo ifconfig`

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/488218/813af41e-ff0c-6a74-ad32-544bb601531e.png)

可以看到ip为`192.168.56.101`。

现在，在Ubuntu主机中使用vim打开主机文件：

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/488218/45e174c2-fb01-6c67-bc70-994597ef169d.png)
把ip和网址加进去


![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/488218/24be9bb9-0a7f-69e0-564c-ceaa337f2d08.png)

保存退出后`sudo systemctl restart apache2`重启apache就可以通过windows的浏览器访问了。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/488218/5523e1d6-c909-f4ba-9ce6-1fa9227319f5.png)


refer：https://www.helplib.com/ubuntu/article_161985