当前位置: 首页 > news >正文

在Ubuntu 16.04上安装Virtualmin与Webmin、LAMP、BIND和PostFix的方法

前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到网站。

简介

Webmin 是一个 Web 前端工具,允许您通过浏览器远程管理服务器。Virtualmin 是 Webmin 的一个插件,简化了通过单一界面管理多个虚拟主机的操作,类似于 cPanel 或 Plesk。使用 Virtualmin,您可以管理用户账户、Apache 虚拟主机、DNS 记录、MySQL 数据库、邮箱等等。

在本教程中,您将使用一个脚本来安装免费版本的 Virtualmin GPL。该脚本将安装您使用 Virtualmin 所需的一切,包括 Webmin 和以下先决条件:

  • 用于提供网站和 Web 应用程序的 LAMP 栈(Apache、PHP 和 MySQL)。
  • 用于 DNS 服务器的 BIND。
  • 用于邮件服务器的 PostFix。

安装 Virtualmin 及其组件后,您将通过其图形界面配置 Webmin,并使用 Virtualmin 创建一个新的虚拟主机。完成本教程后,您将能够通过浏览器在单个服务器上创建任意数量的用户账户,以托管多个域名。

先决条件

要完成本教程,您需要:

  • 一个新的 Ubuntu 16.04 服务器,至少具有 1GB 的 RAM,按照 Ubuntu 16.04 初始服务器设置指南进行设置,包括一个 sudo 非根用户和防火墙。
  • 配置为指向您的服务器的完全合格的域名。您可以按照《如何在 DigitalOcean Droplets 上设置主机名》教程学习如何将域名指向 DigitalOcean Droplets。
  • 通过按照《如何在 DigitalOcean Cloud 服务器上创建自定义名称服务器》教程注册 Virtualmin 的两个自定义名称服务器。注册 ns1.your_domain.comns2.your_domain.com,其中 your_domain.com 是您的域名。

步骤 1 —— 设置主机名和完全合格的域名(FQDN)

为了使 Virtualmin 正常工作,您需要通过编辑 /etc/hostname/etc/hosts 文件在服务器上配置主机名和 FQDN,并更新您的 DNS 设置,以便 DNS 查找正确解析。

首先,以非根用户身份登录到服务器。登录后,更新软件包数据库:

sudo apt-get update

然后安装任何必要的更新和软件包,以确保您从一个稳定且最新的系统开始。

sudo apt-get dist-upgrade -y

接下来,将主机名更改为与先决条件中指向服务器的 FQDN 匹配。

要检查当前服务器主机名,请运行以下命令:

hostname -f

要更改服务器的主机名,请在编辑器中打开文件 /etc/hostname

sudo nano /etc/hostname

删除当前主机名,并替换为您的主机名:

your_hostname

在此文件中只使用主机名,而不是整个 FQDN。例如,如果您的 FQDN 是 virtualmin.example.com,则在此文件中输入 virtualmin

保存文件并退出编辑器。

接下来,在 /etc/hosts 文件中添加主机名和 FQDN:

sudo nano /etc/hosts

修改以 127.0.0.1 开头的行,使用您的 FQDN 和主机名,按顺序:


127.0.1.1	your_hostname.your_domain.com your_hostname
127.0.0.1	localhost
...

记得用您自己的主机名和域名替换 your_hostnameyour_domain.com。保存文件并退出编辑器。

如果您的文件中不存在这行,请添加它,以避免在 Ubuntu 系统上的其他软件中出现一些兼容性问题。您可以在官方 Debian 手册中了解更多信息。

要检查名称是否已正确更改,请重新启动服务器。

sudo reboot

然后再次 ssh 登录到服务器。您应该在终端提示符上看到新的主机名。例如:

your_user@your_hostname:~$

使用 hostname 命令验证 FQDN 是否已正确设置:

hostname -f

您将在输出中看到您的 FQDN:

[secondary_label output]
your_hostname.your_domain.com

如果没有看到,请仔细检查您对配置所做的更改,纠正任何错误,并重新启动。

接下来,编辑网络配置文件,以便将此服务器用作解析域名的 DNS 服务器之一。打开配置文件:

sudo nano /etc/network/interfaces.d/50-cloud-init.cfg

在配置文件中添加 IP 地址 127.0.0.1。查找以下行:


dns-nameservers 8.8.8.8 8.8.4.4

将其更改为:


dns-nameservers 8.8.8.8 8.8.4.4 127.0.0.1

确保在 127.0.0.1 前有一个空格。保存文件并退出编辑器。

通过设置主机名、FQDN 和网络配置,您已经准备好安装 Virtualmin。

步骤 2 — 安装 Virtualmin

要安装 Virtualmin,请下载并运行官方的 Virtualmin 安装脚本,该脚本将安装 Virtualmin 和 Webmin,以及 LAMP 栈、BIND 和 Postfix。

使用 wget 下载脚本:

wget https://software.virtualmin.com/gpl/scripts/install.sh

虽然这个脚本来自官方的 Virtualmin 网站,但在运行之前,你可能需要在编辑器中打开脚本并查看其内容。

sudo nano ./install.sh

一旦你对脚本的内容感到满意,就可以使用它来安装 Virtualmin 及其先决条件:

sudo /bin/sh ./install.sh

脚本将显示有关现有数据和兼容操作系统的警告消息。按 y 确认要继续安装。

脚本将花费一些时间来完成所有步骤,因为它安装各种软件包和组件。

脚本完成后,你可以配置 root 密码。

步骤 3 — 配置 Webmin 的 Root 密码

Virtualmin 是 Webmin 的附加组件,默认情况下,Webmin 使用系统的 root 用户和密码进行 Web 界面登录。如果你使用 SSH 密钥登录服务器,可能没有系统的 root 密码,或者可能不愿意在浏览器中远程登录时使用它。让我们告诉 Webmin 使用不同的密码进行 Web 界面登录。这个过程不会更改系统的 root 密码;它只会告诉 Webmin 使用你指定的密码进行登录。

要更改 Webmin 的 root 密码,请使用以下命令:

sudo /usr/share/webmin/changepass.pl /etc/webmin root yourpassword

yourpassword 替换为你喜欢的密码。

接下来,重新启动 Webmin 服务以使更改生效。

sudo systemctl restart webmin

接下来,我们将使用 Web 前端配置 Webmin。

步骤 4 — 使用安装后向导配置 Webmin

要配置 Webmin,我们将使用其基于 Web 的安装后向导。打开你的 Web 浏览器,访问 https://your_server_ip:10000。你也可以使用你的完全合格的域名来访问该站点。

使用在上一步中设置的新更改密码登录为 root 用户。

登录后,你将看到 Introduction 屏幕,说明你正在进行配置 Virtualmin 的步骤。按 Next 继续。

!Introduction 屏幕

Memory use 屏幕上,选择 No 以关闭 Preload Virtualmin libraries,因为你不需要始终运行 Virtualmin UI。选择 Yes 以启用更快的邮件处理的 Run email domain lookup server。按 Next 继续。

Virus scanning 屏幕上,选择 No 以关闭 Run ClamAV server scanner 以减少内存使用。按 Next 继续。

Spam filtering 屏幕上,选择 No 以关闭 Run SpamAssassin server filter,然后按 Next 继续。

接下来的三个屏幕配置数据库服务器:

  • Database servers 屏幕上,选择 Yes 启动 Run MySQL database server,选择 no 关闭 Run PostgreSQL database server。按 Next 继续。
  • MySQL password 屏幕上,输入你想要的 MySQL root 密码。它应该与你用来登录 Webmin 的 root 密码不同。
  • MySQL database size 屏幕上,选择与服务器 RAM 量相匹配的 RAM 选项。对于 1GB 服务器,选择 Large system (1G) on which MySQL is heavily used。按 Next 继续。

接下来,你将看到一个类似下面的屏幕,要求你输入域名服务器:

!DNS zones and nameservers 屏幕

在这里输入你在先决条件中配置的主要和次要域名服务器。如果你还没有设置这些,请勾选 Skip check for resolvability 以避免错误消息并继续。

接下来,在 Password storage mode 屏幕上,如果必须支持密码恢复,请选择 Store plain-text passwords。否则,选择 Only store hashed passwords。点击 Next 后,你将看到 All done 屏幕。点击 Next 结束。

最后,你将看到 Virtualmin/Webmin 仪表板。

顶部可能会显示 Virtualmin 带有新主题。点击 Switch Themes 按钮激活新主题。页面将重新加载,但可能看起来没有样式,因为新主题的 CSS 文件可能无法正确加载。要解决此问题,请手动刷新浏览器。

你可能还会看到一条消息,指出 Virtualmin 的配置尚未经过检查。点击 Re-check and refresh configuration 按钮检查你的 Virtualmin 配置。解决检查报告的任何错误。

你的服务器现在已配置完成。让我们使用界面创建一个新的虚拟服务器。

步骤 5 —— 创建一个新的虚拟服务器

Virtualmin 可以轻松设置新的虚拟主机,以及用户来管理这些主机。

点击左侧边栏上的 Virtualmin 选项卡,显示 Virtualmin 侧边栏菜单。接下来,点击 Create Virtual Server。您将看到以下屏幕:

!New virtual host settings

在出现的表单中,输入以下内容:

  • 对于 Domain name,输入您计划为新虚拟服务器使用的域名。
  • 对于 Description,输入服务器的适当描述。
  • 对于 Administration password,输入您将用于管理此虚拟服务器的密码。它应与您将使用的其他密码不同。

将所有其他选项保留为默认值。

点击 Create Server 来创建新的虚拟服务器。屏幕将显示输出,因为 Virtualmin 为您创建各种组件。

您刚刚使用 Virtualmin 创建了一个新的虚拟服务器,以及一个可以管理该服务器的用户。用户名将显示在输出中,密码将是您设置的密码。您可以将该用户名和密码提供给另一个用户,以便他们可以通过 Virtualmin 自行管理虚拟服务器。

要退出 Virtualmin,请点击左侧边栏底部的红色退出箭头图标。

结论

在本教程中,您配置了 VirtualMin 并使用其界面创建了一个虚拟服务器和一个新的管理用户。

要了解更多关于 Virtualmin 的信息,请查看官方 Virtualmin 文档。不要忘记熟悉 Webmin 文档,因为您可以使用 Webmin 来管理服务、安装更新以及执行其他系统管理任务。

相关文章:

  • Swagger配置且添加小锁(asp.net)(笔记)
  • 遥感图像语义分割数据集制作(使用ArcGIS Pro)
  • 只申请一块sizeofimage的内存能否实现PE文件的拉伸
  • 【PyTorch】生成对抗网络
  • C++游戏开发详解:从入门到实践
  • c++primier第十二章类和动态内存
  • openKylin--安装 .net6.0
  • 锁住K8S集群版本和系统内核版本
  • 生产环境升级mysql流程及配置主从服务
  • 【深度学习】ubuntu系统下docker部署cvat的自动标注功能(yolov8 segmentation)
  • 投影算子 Projection
  • CMake构建学习笔记18-cpp-httplib库的构建
  • CC攻击和DDOS攻击的区别有哪些?
  • [单master节点k8s部署]22.构建EFK日志收集平台(一)
  • 河南人社厅:注册满两年可按条件认定副高
  • #Java异常处理
  • 《深入 React 技术栈》
  • 「前端」从UglifyJSPlugin强制开启css压缩探究webpack插件运行机制
  • 【附node操作实例】redis简明入门系列—字符串类型
  • 【跃迁之路】【585天】程序员高效学习方法论探索系列(实验阶段342-2018.09.13)...
  • 【跃迁之路】【699天】程序员高效学习方法论探索系列(实验阶段456-2019.1.19)...
  • ABAP的include关键字,Java的import, C的include和C4C ABSL 的import比较
  • Bootstrap JS插件Alert源码分析
  • Bytom交易说明(账户管理模式)
  • C++类中的特殊成员函数
  • docker容器内的网络抓包
  • Docker入门(二) - Dockerfile
  • Druid 在有赞的实践
  • es6(二):字符串的扩展
  • ES6核心特性
  • EventListener原理
  • IE报vuex requires a Promise polyfill in this browser问题解决
  • JavaScript HTML DOM
  • Material Design
  • Netty 4.1 源代码学习:线程模型
  • Otto开发初探——微服务依赖管理新利器
  • 阿里云购买磁盘后挂载
  • 安装python包到指定虚拟环境
  • 创建一种深思熟虑的文化
  • 对JS继承的一点思考
  • 诡异!React stopPropagation失灵
  • 深度解析利用ES6进行Promise封装总结
  • 事件委托的小应用
  • 问题之ssh中Host key verification failed的解决
  • 吴恩达Deep Learning课程练习题参考答案——R语言版
  • 新书推荐|Windows黑客编程技术详解
  • 优秀架构师必须掌握的架构思维
  • ​学习笔记——动态路由——IS-IS中间系统到中间系统(报文/TLV)​
  • # 学号 2017-2018-20172309 《程序设计与数据结构》实验三报告
  • #我与Java虚拟机的故事#连载02:“小蓝”陪伴的日日夜夜
  • #我与Java虚拟机的故事#连载13:有这本书就够了
  • (003)SlickEdit Unity的补全
  • (14)目标检测_SSD训练代码基于pytorch搭建代码
  • (2024)docker-compose实战 (9)部署多项目环境(LAMP+react+vue+redis+mysql+nginx)
  • (JS基础)String 类型