Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/amazon-web-services/14.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
ubuntu ec2上的木偶apache配置文件_Apache_Amazon Web Services_Ubuntu 14.04_Puppet_Packer - Fatal编程技术网

ubuntu ec2上的木偶apache配置文件

ubuntu ec2上的木偶apache配置文件,apache,amazon-web-services,ubuntu-14.04,puppet,packer,Apache,Amazon Web Services,Ubuntu 14.04,Puppet,Packer,我正在使用puppet使用packer提供AWS AMI,然后启动AMI。 Puppet在烘焙AMI时执行所有配置和包安装,包括安装和配置apache和wsgi。 当我启动AMI时,Puppet已经下载并配置了我的应用程序(Flask应用程序)以及我的apache配置文件/etc/apache2/sites available/xxxx.conf。我使用Puppet模板来配置apache配置文件,因此它是一个Ruby模板(xxxx.conf.erb),apache配置模板文件如下所示:

我正在使用puppet使用packer提供AWS AMI,然后启动AMI。 Puppet在烘焙AMI时执行所有配置和包安装,包括安装和配置apache和wsgi。 当我启动AMI时,Puppet已经下载并配置了我的应用程序(Flask应用程序)以及我的apache配置文件/etc/apache2/sites available/xxxx.conf。我使用Puppet模板来配置apache配置文件,因此它是一个Ruby模板(xxxx.conf.erb),apache配置模板文件如下所示:

    <VirtualHost *:<%= @port -%>>
        ServerName <%= @servername %>

        ServerAdmin admin@example.com   WSGIScriptAlias / /var/www/Porfolio/xxxxx.wsgi

        <Directory /var/www/Porfolio/>    Order allow,deny    Allow from all    </Directory>    Alias /static /var/www/Porfolio/static  <Directory /var/www/Porfolio/static/>     Order allow,deny    Allow from all    </Directory>     

        ErrorLog ${APACHE_LOG_DIR}/error.log
        LogLevel warn
        CustomLog ${APACHE_LOG_DIR}/access.log combined 
</VirtualHost>

服务器名
服务器管理员admin@example.comWSGIScriptAlias//var/www/Porfolio/xxxxx.wsgi
订单允许,拒绝来自所有别名的允许/static/var/www/Porfolio/static订单允许,拒绝来自所有别名的允许
ErrorLog${APACHE_LOG_DIR}/error.LOG
日志级别警告
CustomLog${APACHE\u LOG\u DIR}/access.LOG组合
我已经设置了变量servername=$::hostname(使用facter)和port=80 当我启动AMI并访问ec2实例服务器的公共IP地址时,它会将我带到默认的ubuntu网页,而不是我的web应用程序。 我将不得不ssh到我的服务器上,并在服务器上更改apache配置文件 /etc/apache2/sites available/xxxx.conf将成为:

<VirtualHost *:<%= @port -%>>
    ServerName 52.91.143.90

    ServerAdmin admin@example.com
    WSGIScriptAlias / /var/www/Porfolio/culturely.wsgi

    <Directory /var/www/Porfolio/>
      Order allow,deny
      Allow from all
    </Directory>
    Alias /static /var/www/Porfolio/static
    <Directory /var/www/Porfolio/static/>
      Order allow,deny
      Allow from all
    </Directory>     

    ErrorLog ${APACHE_LOG_DIR}/error.log
    LogLevel warn
    CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>

服务器名52.91.143.90
服务器管理员admin@example.com
WSGIScriptAlias//var/www/Porfolio/culturely.wsgi
命令允许,拒绝
通融
别名/static/var/www/Porfolio/static
命令允许,拒绝
通融
ErrorLog${APACHE_LOG_DIR}/error.LOG
日志级别警告
CustomLog${APACHE\u LOG\u DIR}/access.LOG组合
这意味着我必须手动输入ec2instance的公共IP地址,以便在浏览器上访问公共IP地址时显示我的Flask网页。这当然会破坏我试图实现的自动化水平。
公共IP地址只有在我启动AMI后才可用,有没有办法重新配置我的apache配置文件,使其自动转到我的web应用程序而不是默认的ubuntu网页?无需我将ssh连接到服务器并在启动后手动更改它

有一个事实
ec2\u public\u ipv4
,使用此设置地址

我找到了解决问题的方法。我在打包时使用puppet创建了一个新的apache配置文件,此时将分配给ec2实例的公共IP地址不可用。
因此,我没有创建新的apache配置文件,而是在/etc/apache2/sites available/000 default.conf中修改了默认配置文件。我留下了变量servername=$::fqdn。现在,每当我启动AMI并访问ec2实例的指定公共IP地址时,它就会导航到我的Flask应用程序,而不再是默认的ubuntu网页

hi@vorspring我通过分配变量servername=$::ec2\u public\u ipv4来解决这个问题。但是在启动AMI之后,AWS上ec2实例的公共Ip地址与apache配置文件中puppet分配的不同,因此在访问公共Ip地址时仍然显示默认的ubuntu网页。也许我不理解您是如何做到这一点的。你在“打包时间”用木偶制作AMI吗?在这种情况下,事实当然是错误的。这个事实需要在实例出现后用来制作模板。嗨@vorspring是的,我在“打包时间”使用puppet来制作AMI。如何确保在实例出现后使用事实?