ubuntu ec2 上的 Puppet apache 配置文件
Puppet apache configuration file on ubuntu ec2
我正在使用 puppet 通过加壳程序配置 AWS AMI,然后启动 AMI。
Puppet 在烘焙 AMI 时执行所有配置和包安装,包括安装和配置 apache 和 wsgi。
当我启动 AMI 时,我的应用程序(一个 Flask 应用程序)已经被 Puppet 下载和配置,我的 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>
我设置了变量 servername = $::hostname(使用 facter)和 port = 80
当我启动 AMI 并访问 ec2 实例服务器的 public IP 地址时,它会将我带到默认的 ubuntu 网页而不是我的 Web Flask 应用程序。
我将不得不通过 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>
这意味着我必须手动输入 ec2instance 的 public IP 地址,以便在浏览器上访问 public IP 地址时显示我的 Flask 网页。这当然会破坏我试图达到的自动化水平。
public IP 地址仅在我启动 AMI 后才可用,有没有一种方法可以重新配置我的 apache 配置文件,使其自动转到我的 Web 应用程序而不是默认的 ubuntu 网页?无需我通过 ssh 进入服务器并在启动后手动更改它
有一个事实ec2_public_ipv4
,用这个来设置地址
我找到了解决问题的方法。我在打包时用 puppet 创建了一个新的 apache 配置文件,此时将分配给 ec2 实例的 public IP 地址不可用。
因此,我没有创建新的 apache 配置文件,而是在 /etc/apache2/sites-available/000-default.conf 处修改了默认配置文件。我留下了变量 servername = $::fqdn 。现在,每当我启动 AMI 并访问分配给 ec2 实例的 public IP 地址时,它都会导航到我的 Flask 应用程序,而不是默认的 ubuntu 网页。
我正在使用 puppet 通过加壳程序配置 AWS AMI,然后启动 AMI。 Puppet 在烘焙 AMI 时执行所有配置和包安装,包括安装和配置 apache 和 wsgi。 当我启动 AMI 时,我的应用程序(一个 Flask 应用程序)已经被 Puppet 下载和配置,我的 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>
我设置了变量 servername = $::hostname(使用 facter)和 port = 80 当我启动 AMI 并访问 ec2 实例服务器的 public IP 地址时,它会将我带到默认的 ubuntu 网页而不是我的 Web Flask 应用程序。 我将不得不通过 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>
这意味着我必须手动输入 ec2instance 的 public IP 地址,以便在浏览器上访问 public IP 地址时显示我的 Flask 网页。这当然会破坏我试图达到的自动化水平。 public IP 地址仅在我启动 AMI 后才可用,有没有一种方法可以重新配置我的 apache 配置文件,使其自动转到我的 Web 应用程序而不是默认的 ubuntu 网页?无需我通过 ssh 进入服务器并在启动后手动更改它
有一个事实ec2_public_ipv4
,用这个来设置地址
我找到了解决问题的方法。我在打包时用 puppet 创建了一个新的 apache 配置文件,此时将分配给 ec2 实例的 public IP 地址不可用。 因此,我没有创建新的 apache 配置文件,而是在 /etc/apache2/sites-available/000-default.conf 处修改了默认配置文件。我留下了变量 servername = $::fqdn 。现在,每当我启动 AMI 并访问分配给 ec2 实例的 public IP 地址时,它都会导航到我的 Flask 应用程序,而不是默认的 ubuntu 网页。