开发者社区> 问答> 正文

如何为自动创建的ECS实例自动化部署应用?

弹性伸缩如何为自动创建的ECS实例自动化部署应用?

展开
收起
小天使爱美 2020-03-21 23:39:39 1756 0
1 条回答
写回答
取消 提交回答
  • 本文以在CentOS中自动执行shell脚本为例,介绍如何通过弹性伸缩和脚本自动化部署应用。

    背景信息 Linux系统中,共有7个启动级别: 等级0:关机。 等级1:单用户模式。 等级2:无网络连接的多用户命令行模式。 等级3:有网络连接的多用户命令行模式。 等级4:不可用。 等级5:带图形界面的多用户模式。 等级6:重新启动。 在弹性伸缩自动创建ECS实例后,如您需要自动安装、更新程序和自动加载代码,可以在自定义镜像中存放执行脚本,并设置命令在操作系统启动后自动执行该脚本。然后在伸缩配置中使用该自定义镜像,自动创建ECS实例后即会自动执行脚本,完成自动化部署。

    由于CentOS 6及以下系统采用system V init作为初始化进程,但CentOS 7采用了systemd作为初始化进程,两者的工作原理有较大差别。本文分别针对CentOS 6以及CentOS 7进行说明。

    CentOS 6及以下系统自动执行脚本 本节演示如何在CentOS 6及以下系统自动执行脚本。

    创建shell测试脚本。 #!/bin/sh

    chkconfig: 6 10 90

    description: Test Service

    echo "hello world!" 其中,6是默认启动级别,具体含义请参见背景信息。10是启动优先级,90是停止优先级,优先级范围是0-100,数字越大,优先级越低。

    说明 如您需要确保ECS实例上的任务处理完成才允许弹性伸缩释放该ECS实例,将脚本中的启动级别改为0即可。 将测试文件放在/etc/rc.d/init.d/目录下,然后执行chkconfig --level 6 test on,以后每次开机启动都会执行该测试脚本。 说明 如您需要确保ECS实例上的任务处理完成才允许弹性伸缩释放该ECS实例,将脚本中的启动级别改为0即可,每次关机时都会执行该测试脚本。 例如,您可以通过脚本执行phpwind安装程序(数据库密码仍需要您自己输入),示例脚本如下,请根据实际情况修改。 cd /tmp echo "phpwind" yum install -y
    unzip
    wget
    httpd
    php
    php-fpm
    php-mysql
    php-mbstring
    php-xml
    php-gd
    php-pear
    php-devel chkconfig php-fpm on
    && chkconfig httpd on wget http://pwfiles.oss-cn-hangzhou.aliyuncs.com/com/soft/phpwind_v9.0_utf8.zip
    && unzip -d pw phpwind_v9.0_utf8.zip
    && mv pw/phpwind_v9.0_utf8/upload/* /var/www/html
    && wget http://ess.oss-cn-hangzhou.aliyuncs.com/ossupload_utf8.zip -O ossupload_utf8.zip
    && unzip -d ossupload ossupload_utf8.zip
    && /bin/cp -rf ossupload/ossupload_utf8/* /var/www/html/src/extensions/
    && chown -R apache:apache /var/www/html service httpd start && service php-fpm start echo "安装云监控" wget http://update2.aegis.aliyun.com/download/quartz_install.sh chmod +x quartz_install.sh bash quartz_install.sh echo "安装完成" CentOS 7系统自动化部署应用 本节演示如何在CentOS 7系统自动执行脚本。按照以下步骤,使用systemd时,在系统关闭状态仍能运行脚本。

    创建需要运行的脚本。 在/etc/systemd/system下创建一个文件run-script-when-shutdown.service。 请把ExecStop变量的值,修改为您需要运行脚本的绝对路径: [Unit] Description=service to run script when shutdown After=syslog.target network.target

    [Service] Type=simple ExecStart=/bin/true ExecStop=/path/to/script/to/run RemainAfterExit=yes

    [Install] WantedBy=default.target 执行命令启动新创建的服务。 systemctl enable run-script-when-shutdown systemctl start run-script-when-shutdown 说明 您可以配置run-script-when-shutdown运行固定的脚本,并在需要时修改更换该脚本,使其更加灵活实用。 无需运行上述服务时,执行systemctl disable run-script-when-shutdown。

    2020-03-23 09:44:24
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
如何运维千台以上游戏云服务器 立即下载
网站/服务器取证 实践与挑战 立即下载
ECS快储存加密技术 立即下载