一家跨国公司的销售部门聘请我担任软件顾问,为他们构建一个网络应用程序。
该网络应用程序根据其内部业务流程生成 Excel 文件。
这个 Web 应用程序已经完成,我告诉他们我需要在服务器上部署它。
他们的 IT 部门位于另一个国家,我们花了 6 个月的时间才获得服务器许可。经过大量文书工作和繁琐手续后,我们仍然没有看到任何服务器的迹象。
我们的解决办法是,销售部门会根据我的建议购买一台 1U 服务器。销售部门还在他们办公室所在楼层的实验室里找到了一个位置。实验室负责人允许我们在里面放置一台 1U 机架式服务器。
但是,我们有两个问题我无法回答。因此,我在这里寻求服务器管理专家的建议。
1) 实验室只允许机器连接到其内部内联网。我的 Web 应用程序可以通过 Web 浏览器访问,需要一个 URL。我考虑获取一个静态 IP 地址,以便销售部门可以通过http://some-static-ip/webapp
这意味着我们需要 IT 部门的帮助。经过过去 6 个月的繁琐手续,销售部门对于向他们索要静态内部 IP 地址感到不安。
我们能采取什么解决方法来避免向 IT 部门寻求帮助?
更新
我将采纳@MichaelHampton 的建议,并向 IT 部门咨询有关静态 IP 地址的问题。我现在的重点是第二个问题。
2)假设我们已经成功地在位于内部网内的这台服务器上部署了我的 Web 应用程序。
我们需要定期更新 Web 应用程序和操作系统。(我们可能会使用 ubuntu 12.04 服务器版本)
该服务器将没有互联网连接,因为其所在的实验室仅连接到内部网络。
我的代码放在 github 上,我已经准备好每月去一次,使用拇指驱动器更新 Web 应用程序的代码库。
但是,我不知道在没有互联网访问的情况下该怎么做才能更新操作系统。
是否有我可以考虑的硬件/软件解决方案来解决这个问题?如果合理的话,我相信我可以说服销售部门为这样的解决方案付费。
例如,我购买某种可以连接到服务器的移动宽带加密狗?
每当我去实验室时,我都需要将服务器从内部网络中断开,将加密狗连接到服务器,这样服务器现在就可以通过加密狗访问互联网。然后我可以轻松更新服务器操作系统和代码库。
完成后,我将断开加密狗,然后将服务器重新挂接到内部网络。
更新
对于第二个问题,我希望向 IT 部门或 IT 部门上级管理层提出任何建议。
更新1
我们最终与 IT 团队找到了一种方法,通过代理打开连接来更新服务器。
谢谢。
答案1
回答您的第一个问题,正如 Michael Hampton 所建议的那样,您需要通过 IT 组获取静态 IP。为了方便起见,如果可能的话,您应该与他们讨论如何创建 DNS 记录。服务器或应用程序的主机名令人难忘,这将使应用程序的用户更容易使用。
回答你的第二个问题。对于操作系统,你可以使用apt-offline
(文档在这里)。您无需将 3G 加密狗连接到服务器或断开任何连接,只需一个 USB 密钥即可。我会谨慎地将 3G 连接连接到实验室环境中的系统,因为您可能会违反实验室环境中的安全控制。
第一步,您需要前往客户站点并生成一个签名文件,该文件通过对机器上已安装的软件包版本进行分类,为 apt-offline 提供工作基准。将该签名文件保存到 USB 密钥上并随身携带。
例如,要生成签名文件并将其保存到安装在 上的 USB 密钥上/media/USB
,您可以运行apt-offline set /media/USB/updates.sig
。您可以将 updates.sig 替换为任何文件名,以便于您识别签名文件所代表的服务器。
第二步,一旦您有了签名文件,您就可以在具有互联网连接的机器上运行 apt-offline,为其提供签名文件,它将下载所有必需的更新。apt-offline
将生成一个 zip 文件,您可以将其复制到您的 USB 密钥上。
要根据安装在/media/USB
名为 updates.sig 的 USB 密钥上的签名文件下载更新服务器所需的软件包,使用五个下载线程(以加快速度),下载到同一 USB 密钥上名为 updates.zip 的 zip 文件中,您需要运行apt-offline get -t 5 --bundle /media/USB/updates.zip /media/USB/updates.sig
。
最后一步,您可以将包含 updates.zip 文件的 USB 密钥带到客户机上,然后在 ubuntu 服务器上,apt-offline install /media/USB/updates.zip
从 /media/USB 上安装的 USB 密钥中的存档 updates.zip 运行安装所有更新。完成后,不要忘记再次按照第一步生成新的签名文件。这样就省去了您前往客户站点生成新签名文件的麻烦。
要更新应用程序,最简单的方法(无需知道客户实验室的服务器上是否有 git 存储库)是使用 将最新代码从 git 存储库导出到存档git archive
。这将在更深入的讨论中这里。
例如,第一步是将本地签出的代码副本存档到 Bzip2 压缩的 tar 存档中,然后git archive master | bzip2 > /media/USB/latest-code.tar.bz2
从存储库目录运行。这会将代码保存到安装在 /media/USB 上的 USB 密钥上的 latest-code.tar.bz2。
第二步是在客户网络的服务器上备份旧代码,以防您需要撤消更新。您可以通过运行 备份代码(假设它存储在 /var/www/application 中)tar cpjfv /media/USB/code-backup.tar.bz2 /var/www/application
。这将创建一个 Bzip2 压缩的 tar 存档,保留权限,并将其保存到挂载在 /media/USB 上的 USB 密钥上名为 code-backup.tar.bz2 的文件中。
最后,您可以使用 从 USB 密钥中提取包含新代码tar jxfv /media/USB/latest-code.tar.bz2
的存档。这会将存档内容latest-code.tar.bz2
从安装在 上的 USB 密钥中提取/media/USB
到当前目录中。使用上一步中的示例,您将cd /var/www/application
首先使用 将目录更改为托管应用程序的文件夹。
希望有帮助!