Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/bash/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Bash 安装脚本的正确组件?_Bash_Installation - Fatal编程技术网

Bash 安装脚本的正确组件?

Bash 安装脚本的正确组件?,bash,installation,Bash,Installation,我正在编写一个bash脚本来设置生产服务器。手头的任务包括编译软件、创建用户和目录、复制文件等 我想知道我还应该做些什么。也许是登录到一个文件?是否正在检查0退出状态?我可以添加什么来真正让这个脚本变得很棒,而不仅仅是“它工作”?也许您应该重新考虑如何将软件部署到生产服务器: 编译软件应该在开发环境中完成,而不是在生产服务器上。无需在生产服务器上安装编译器。还有很多理由不这么做(主要是出于安全原因) 使用包管理系统部署软件。如果您在linux上,请使用deb、rpm或发行版使用的任何包管理器。这

我正在编写一个bash脚本来设置生产服务器。手头的任务包括编译软件、创建用户和目录、复制文件等


我想知道我还应该做些什么。也许是登录到一个文件?是否正在检查0退出状态?我可以添加什么来真正让这个脚本变得很棒,而不仅仅是“它工作”?

也许您应该重新考虑如何将软件部署到生产服务器:

  • 编译软件应该在开发环境中完成,而不是在生产服务器上。无需在生产服务器上安装编译器。还有很多理由不这么做(主要是出于安全原因)

  • 使用包管理系统部署软件。如果您在linux上,请使用deb、rpm或发行版使用的任何包管理器。这将使您能够完全控制安装的版本,并提供依赖项功能

  • 安装软件的软件包应附带软件所需的所有文件(除非这些文件可以由其他软件包提供),还应设置用户、目录、权限以及软件所需的任何其他内容

  • 基本上,您可以在包的post-install和post-remove部分编写bash脚本

  • 确保安装后,软件包带来并创建运行程序所需的一切,卸载软件包、删除所有文件并撤消安装后脚本所做的操作

  • 确保将程序包从版本X升级到X+1的工作符合预期

  • 关于脚本本身。当然,您应该检查您运行的命令的退出状态。您可以使用,这样就不必为每个命令重复退出代码检查和日志记录


    祝你好运

    也许您应该重新考虑如何将软件部署到生产服务器:

  • 编译软件应该在开发环境中完成,而不是在生产服务器上。无需在生产服务器上安装编译器。还有很多理由不这么做(主要是出于安全原因)

  • 使用包管理系统部署软件。如果您在linux上,请使用deb、rpm或发行版使用的任何包管理器。这将使您能够完全控制安装的版本,并提供依赖项功能

  • 安装软件的软件包应附带软件所需的所有文件(除非这些文件可以由其他软件包提供),还应设置用户、目录、权限以及软件所需的任何其他内容

  • 基本上,您可以在包的post-install和post-remove部分编写bash脚本

  • 确保安装后,软件包带来并创建运行程序所需的一切,卸载软件包、删除所有文件并撤消安装后脚本所做的操作

  • 确保将程序包从版本X升级到X+1的工作符合预期

  • 关于脚本本身。当然,您应该检查您运行的命令的退出状态。您可以使用,这样就不必为每个命令重复退出代码检查和日志记录


    祝你好运

    在我的工作中,我们有shell脚本,可以在构建服务器时将几乎所有事情自动化。操作系统的安装是完全自动化的,基于一些配置文件和诸如此类的东西。修补、添加用户等都是为了让生活更轻松

    然而,当我们需要部署企业应用程序时,这些服务器就是“应用程序服务器”,这是一个完全不同的过程。我们处理的是一组完全不同的管理员和中间件。我们向他们提供二进制文件,这些二进制文件通过从开发人员升级到qa,然后再升级到prod


    自动化机箱的设置是完全正常的,但您不希望在生产机箱上“构建”应用程序。如果出于任何原因,性能受到影响,那么任何一个实时应用程序都会在编译过程中遇到麻烦D

    在我的工作中,我们有shell脚本,可以在构建服务器时将几乎所有事情自动化。操作系统的安装是完全自动化的,基于一些配置文件和诸如此类的东西。修补、添加用户等都是为了让生活更轻松

    然而,当我们需要部署企业应用程序时,这些服务器就是“应用程序服务器”,这是一个完全不同的过程。我们处理的是一组完全不同的管理员和中间件。我们向他们提供二进制文件,这些二进制文件通过从开发人员升级到qa,然后再升级到prod

    自动化机箱的设置是完全正常的,但您不希望在生产机箱上“构建”应用程序。如果出于任何原因,性能受到影响,那么任何一个实时应用程序都会在编译过程中遇到麻烦汤姆: 稳定而成功的Linux发行版的一个例子是Gentoo,在安装之前,所有二进制文件都在服务器上编译(发行版中不存在二进制文件)。它已被大型生产服务器使用,如isohunt.com

    在服务器上构建二进制文件是一个好主意,因为只要安装程序向编译器提供正确的标志,就可以确保二进制文件在某种程度上针对主机平台进行了优化

    在服务器上安装GCC不会伤害任何人(IMO:)

    @拉尔斯:

    你应该-

    保留一个日志文件,并添加纠正错误和前进所需的步骤

    在开发过程开始时,通过发送给stdout的消息处理异常,并在测试脚本时提供处理程序

    总的来说,尽量简化用户的工作,因为用户可能不知道脚本执行的微观管理(复制文件、安装守护程序、创建文件系统)