利用虚拟机搭建一个apt服务器
目录
目录
项目背景
项目名词
项目开发过程
项目开发的难点/坑点
总结
项目背景
由于公司新增生产车间,而生产车间距离公司总部很远,且要求不能使用外网,因此有了一个搭建私有apt服务器的需求,将生产所需软件安装包全部放在apt服务器上。
所以我在自己电脑上利用虚拟机现行尝试了一下,并记录过程。
项目名词
1.虚拟硬盘文件格式:VDI、VHD和VMDK
VDI(VirtualBox Disk Image):是由Oracle VirtualBox虚拟化软件使用的虚拟硬盘文件格式,包含虚拟机的硬盘数据,包括操作系统、应用程序和用户数据。VDI文件可以动态增长,即在虚拟机使用空间时才会增长文件大小,通常用于Oracle VirtualBox虚拟机环境。VHD(Virtual Hard Disk):是由Microsoft Hyper-V和Virtual PC虚拟化软件使用的虚拟硬盘文件格式,包含虚拟机的硬盘数据,可以存储操作系统和数据。VHD文件可以是固定大小的,也可以是动态增长的,通常用于Microsoft的虚拟化软件环境。VMDK(Virtual Machine Disk):是由VMware虚拟化软件使用的虚拟硬盘文件格式,也存储虚拟机的硬盘数据,包括操作系统和数据。VMDK文件可以是单个文件或多个文件组成,通常用于存储虚拟机的硬盘数据,适用于VMware虚拟化软件环境。
2. 网络模式:NAT模式(Network Address Translation)和桥接模式(Bridge mode)
NAT模式:
NAT模式是一种网络模式,其中虚拟机的网络流量被路由器或虚拟网络设备转发和转换,虚拟机的网络流量会被转换为宿主机的IP地址,然后再通过宿主机的网络接口进行网络通信。通常用于在虚拟化环境中创建私有网络,使虚拟机可以访问外部网络,同时隐藏虚拟机的真实IP地址。
桥接模式:
桥接模式是一种网络模式,其中虚拟机直接连接到物理网络中,并通过物理网络中的网络设备(如交换机)来进行通信。在桥接模式下,虚拟机会获得物理网络中的一个独立IP地址,可以直接与物理网络中的其他设备进行通信,就像是物理设备一样。通常用于需要虚拟机与外部网络直接通信的场景,例如虚拟机作为服务器提供网络服务时。
项目开发过程
首先,安装virtualbox。virtualbox网站:https://www.virtualbox.org/ 使用virtualbox安装Ubuntu server。
打开virtualbox,选择新建; 填写名称以及目录、类型、版本; 下一步,选择内存大小; 选择现在创建虚拟硬盘; 虚拟硬盘文件类型选择VDI即可; 选择动态分配; 文件位置和大小; 然后点击创建。 创建之后,点击设置; 设置中,可以在系统选择项中增加处理器的数量; 选择存储, 选择镜像文件; 点击确定,并启动; 然后按照提示安装即可。
3. 安装完成之后启动UbuntuServer。
使用nginx服务器:
sudo apt install nginx -y
nginx -v //安装后查看版本号,是否安装成功
提示
nginx version: nginx/1.18.0 (Ubuntu) //表示安装成功
可以查看是否运行
curl 'http://127.0.0.1'
如图所示:
修改nginx配置
sudo vim /etc/nginx/sites-enabled/default
图片中所示位置添加
autoindex on; //开启目录列表功能
保存,并重启服务;
sudo systemctl restart nginx.service
在nginx服务器默认目录(/var/www/html/)下放置安装包,此处我新建了一个“setup”目录来放安装包
scp test-gateway_1.0.2_amd64.deb w@192.168.2.19:/var/www/html/setup
//创建一个包含软件包信息的 Packages 文件,并将其压缩成 Packages.gz 文件
sudo dpkg-scanpackages .|gzip -c9>Packages.gz
自此,服务器搭建完成,可以测试了。
本机浏览器测试:
本机上添加apt服务器源地址
echo "deb [trusted=yes] http://192.168.2.19/setup ./" | sudo tee -a /etc/apt/sources.list > /dev/null
sudo apt update //更新源文件
安装测试:
sudo apt install test-gateway
可以正常安装,完成。
项目开发的难点/坑点
1. 保证虚拟机与物理机能够正常通信。
虚拟机默认的网络模式是NAT网络地址转换模式,但此时我们需要虚拟机与本机通信,所以我们选择桥接模式。
设置虚拟机的IP地址:
在虚拟机中,
sudo nano /etc/netplan/00-installer-config.yaml //编辑网络配置
network:
version: 2
ethernets:
enp0s3:
addresses:
- 192.168.1.100/24
gateway4: 192.168.1.1
保存,并使用新配置
sudo netplan apply
查看是否成功设置
ip a
2. 拷贝安装包到服务器。
scp: /var/www/html/setup/zh-XXX00_1.0.0_arm64.deb: Permission denied
拷贝安装包的时候可能会遇到这个问题。
有两个地方需要注意,一个是可能虚拟机没有设置ssh权限访问;
此处默认是注释掉的,去掉注释,保存,并重启服务。
systemctl restart sshd
另一点,可能就是,nginx的默认目录(/var/www/html)具有权限问题
sudo chmod 777 /var/www/html/setup
之后就可以正常拷贝了。
总结
动手才能发现问题,希望我的搭建过程能够帮上你。