ubuntu ec2上的木偶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配置模板文件如下所示: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配置模板文件如下所示:
<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。如何确保在实例出现后使用事实?