

Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.

# Resep Pengaturan
<a name="create-custom-setup"></a>

**penting**  
 AWS OpsWorks Stacks Layanan ini mencapai akhir masa pakai pada 26 Mei 2024 dan telah dinonaktifkan untuk pelanggan baru dan yang sudah ada. Kami sangat menyarankan pelanggan untuk memindahkan beban kerja mereka ke solusi lain sesegera mungkin. Jika Anda memiliki pertanyaan tentang migrasi, hubungi AWS Dukungan Tim di [AWS re:Post](https://repost.aws/) atau melalui [AWS Dukungan](https://aws.amazon.com/support) Premium.

Resep penyiapan ditetapkan ke acara [siklus hidup](workingcookbook-events.md) Pengaturan lapisan dan dijalankan setelah instance boot. Mereka melakukan tugas-tugas seperti menginstal paket, membuat file konfigurasi, dan memulai layanan. Setelah resep Pengaturan selesai berjalan, OpsWorks Stacks menjalankan [resep Deploy](create-custom-deploy.md) untuk menerapkan aplikasi apa pun ke instance baru.

**Topics**
+ [tomcat: :pengaturan](#create-custom-setup-setup)
+ [tomcat: :instal](#create-custom-setup-install)
+ [kucing jantan: :layanan](#create-custom-setup-service)
+ [kucing jantan: :container\$1config](#create-custom-setup-config)
+ [kucing jantan: :apache\$1tomcat\$1bind](#create-custom-setup-bind)

## tomcat: :pengaturan
<a name="create-custom-setup-setup"></a>

`tomcat::setup`Resep ini dimaksudkan untuk ditetapkan ke acara siklus hidup Pengaturan lapisan.

```
include_recipe 'tomcat::install'
include_recipe 'tomcat::service'

service 'tomcat' do
  action :enable
end

# for EBS-backed instances we rely on autofs
bash '(re-)start autofs earlier' do
  user 'root'
  code <<-EOC
    service autofs restart
  EOC
  notifies :restart, resources(:service => 'tomcat')
end

include_recipe 'tomcat::container_config'
include_recipe 'apache2'
include_recipe 'tomcat::apache_tomcat_bind'
```

`tomcat::setup`resep sebagian besar merupakan metarecipe. Ini termasuk satu set resep dependen yang menangani sebagian besar rincian menginstal dan mengkonfigurasi Tomcat dan paket terkait. Bagian pertama `tomcat::setup` menjalankan resep berikut, yang dibahas nanti: 
+ [tomcat: :instal](#create-custom-setup-install)Resepnya menginstal paket server Tomcat.
+ [kucing jantan: :layanan](#create-custom-setup-service)Resepnya mengatur layanan Tomcat.

Bagian tengah `tomcat::setup` mengaktifkan dan memulai layanan Tomcat:
+ [Sumber daya layanan](https://docs.chef.io/chef/resources.html#service) Chef memungkinkan layanan Tomcat saat boot.
+ [Sumber daya Chef bash](https://docs.chef.io/chef/resources.html#bash) menjalankan skrip Bash untuk memulai daemon otomatis, yang diperlukan untuk instance yang didukung Amazon EBS. Sumber daya kemudian memberi tahu `service` sumber daya untuk memulai ulang layanan Tomcat.

  Untuk informasi selengkapnya, lihat: [autofs](https://access.redhat.com/site/documentation/en-US/Red_Hat_Enterprise_Linux/6/html/Storage_Administration_Guide/s2-nfs-config-autofs.html) (untuk Amazon Linux) atau [Autofs](https://help.ubuntu.com/community/Autofs) (untuk Ubuntu).

Bagian terakhir dari `tomcat::setup` membuat file konfigurasi dan menginstal dan mengkonfigurasi server Apache front-end:
+ [kucing jantan: :container\$1config](#create-custom-setup-config)Resep membuat file konfigurasi.
+ `apache2`Resep (yang merupakan singkatan dari`apache2::default`) adalah resep bawaan OpsWorks Stacks yang menginstal dan mengonfigurasi server Apache.
+ [kucing jantan: :apache\$1tomcat\$1bind](#create-custom-setup-bind)Resep mengkonfigurasi server Apache untuk berfungsi sebagai front-end untuk server Tomcat.

**catatan**  
Anda sering dapat menghemat waktu dan tenaga dengan menggunakan resep bawaan untuk melakukan beberapa tugas yang diperlukan. Resep ini menggunakan `apache2::default` resep bawaan untuk menginstal Apache daripada menerapkannya dari awal. Untuk contoh lain tentang cara menggunakan resep bawaan, lihat[Menyebarkan Resep](create-custom-deploy.md).

Bagian berikut menjelaskan resep Pengaturan buku masak Tomcat secara lebih rinci. Untuk informasi lebih lanjut tentang `apache2` resep, lihat [opsworks-cookbooks/apache2](https://github.com/aws/opsworks-cookbooks/tree/release-chef-11.4/apache2).

## tomcat: :instal
<a name="create-custom-setup-install"></a>

`tomcat::install `Resep menginstal server Tomcat, OpenJDK, dan pustaka konektor Java yang menangani koneksi ke server MySQL.

```
tomcat_pkgs = value_for_platform(
  ['debian', 'ubuntu'] => {
    'default' => ["tomcat#{node['tomcat']['base_version']}", 'libtcnative-1', 'libmysql-java']
  },
  ['centos', 'redhat', 'fedora', 'amazon'] => {
    'default' => ["tomcat#{node['tomcat']['base_version']}", 'tomcat-native', 'mysql-connector-java']
  },
  'default' => ["tomcat#{node['tomcat']['base_version']}"]
)

tomcat_pkgs.each do |pkg|
  package pkg do
    action :install
  end
end

link ::File.join(node['tomcat']['lib_dir'], node['tomcat']['mysql_connector_jar']) do
  to ::File.join(node['tomcat']['java_dir'], node['tomcat']['mysql_connector_jar'])
  action :create
end

# remove the ROOT webapp, if it got installed by default
include_recipe 'tomcat::remove_root_webapp'
```

Resep melakukan tugas-tugas berikut:

1. Membuat daftar paket yang akan diinstal, tergantung pada sistem operasi instans.

1. Menginstal setiap paket dalam daftar.

   [Sumber daya paket](https://docs.chef.io/chef/resources.html#id146) Chef menggunakan penyedia yang sesuai — `yum` untuk Amazon Linux dan `apt-get` untuk Ubuntu — untuk menangani instalasi. Penyedia paket menginstal OpenJDK sebagai ketergantungan Tomcat, tetapi pustaka konektor MySQL harus diinstal secara eksplisit.

1. Menggunakan [sumber daya tautan](https://docs.chef.io/chef/resources.html#link) Chef untuk membuat symlink di direktori lib server Tomcat ke pustaka konektor MySQL di JDK.

   Menggunakan nilai atribut default, direktori lib Tomcat `/usr/share/tomcat6/lib` dan pustaka konektor MySQL () ada di. `mysql-connector-java.jar` `/usr/share/java/`

`tomcat::remove_root_webapp`Resep menghapus aplikasi web ROOT (secara `/var/lib/tomcat6/webapps/ROOT` default) untuk menghindari beberapa masalah keamanan.

```
ruby_block 'remove the ROOT webapp' do
  block do
    ::FileUtils.rm_rf(::File.join(node['tomcat']['webapps_base_dir'], 'ROOT'), :secure => true)
  end
  only_if { ::File.exists?(::File.join(node['tomcat']['webapps_base_dir'], 'ROOT')) && !::File.symlink?(::File.join(node['tomcat']['webapps_base_dir'], 'ROOT')) }
end
```

`only_if`Pernyataan tersebut memastikan bahwa resep menghapus file hanya jika ada.

**catatan**  
Versi Tomcat ditentukan oleh `['tomcat']['base_version']` atribut, yang diatur ke 6 dalam file atribut. Untuk menginstal Tomcat 7, Anda dapat menggunakan atribut JSON khusus untuk mengganti atribut. Cukup [edit pengaturan tumpukan Anda](workingstacks-edit.md) dan masukkan JSON berikut di kotak **Custom Chef JSON**, atau tambahkan ke JSON kustom yang ada:  

```
{
  'tomcat' : {
    'base_version' : 7
  }
}
```
Atribut JSON kustom mengganti atribut default dan menetapkan versi Tomcat ke 7. Untuk informasi selengkapnya tentang atribut utama, lihat[Mengesampingkan Atribut](workingcookbook-attributes.md).

## kucing jantan: :layanan
<a name="create-custom-setup-service"></a>

`tomcat::service`Resepnya menciptakan definisi layanan Tomcat.

```
service 'tomcat' do
  service_name "tomcat#{node['tomcat']['base_version']}"

  case node[:platform]
  when 'centos', 'redhat', 'fedora', 'amazon'
    supports :restart => true, :reload => true, :status => true
  when 'debian', 'ubuntu'
    supports :restart => true, :reload => false, :status => true
  end

  action :nothing
end
```

Resep menggunakan [sumber daya layanan](https://docs.chef.io/chef/resources.html#service) Chef untuk menentukan nama layanan Tomcat (tomcat6, secara default) dan menetapkan `supports` atribut untuk menentukan bagaimana Chef mengelola perintah restart, reload, dan status layanan pada sistem operasi yang berbeda.
+ `true`menunjukkan bahwa Chef dapat menggunakan skrip init atau penyedia layanan lain untuk menjalankan perintah
+ `false`menunjukkan bahwa Chef harus mencoba menjalankan perintah dengan cara lain.

Perhatikan bahwa `action` diatur ke`:nothing`. Untuk setiap peristiwa siklus hidup, OpsWorks Stacks memulai proses [Chef untuk mengeksekusi set](https://docs.chef.io/chef_client_overview.html#the-chef-client-run) resep yang sesuai. Buku masak Tomcat mengikuti pola umum memiliki resep yang membuat definisi layanan, tetapi tidak memulai ulang layanan. Resep lain di Chef run menangani restart, biasanya dengan memasukkan `notifies` perintah dalam `template` sumber daya yang digunakan untuk membuat file konfigurasi. Pemberitahuan adalah cara mudah untuk memulai ulang layanan karena mereka melakukannya hanya jika konfigurasi telah berubah. Selain itu, jika Chef run memiliki beberapa notifikasi restart untuk suatu layanan, Chef memulai ulang layanan paling banyak sekali. Praktik ini menghindari masalah yang dapat terjadi ketika mencoba memulai kembali layanan yang tidak sepenuhnya beroperasi, yang merupakan sumber umum kesalahan Tomcat.

 Layanan Tomcat harus ditentukan untuk setiap Chef run yang menggunakan notifikasi restart. `tomcat::service`Oleh karena itu termasuk dalam beberapa resep, untuk memastikan bahwa layanan ditentukan untuk setiap Chef menjalankan. Tidak ada penalti jika Chef run menyertakan beberapa contoh `tomcat::service` karena Chef memastikan bahwa resep dijalankan hanya sekali per run, terlepas dari berapa kali itu disertakan.

## kucing jantan: :container\$1config
<a name="create-custom-setup-config"></a>

`tomcat::container_config`Resep membuat file konfigurasi dari file template buku masak.

```
include_recipe 'tomcat::service'

template 'tomcat environment configuration' do
  path ::File.join(node['tomcat']['system_env_dir'], "tomcat#{node['tomcat']['base_version']}")
  source 'tomcat_env_config.erb'
  owner 'root'
  group 'root'
  mode 0644
  backup false
  notifies :restart, resources(:service => 'tomcat')
end

template 'tomcat server configuration' do
  path ::File.join(node['tomcat']['catalina_base_dir'], 'server.xml')
  source 'server.xml.erb'
  owner 'root'
  group 'root'
  mode 0644
  backup false
  notifies :restart, resources(:service => 'tomcat')
end
```

Resep panggilan pertama`tomcat::service`, yang mendefinisikan layanan jika perlu. Sebagian besar resep terdiri dari dua [sumber template](https://docs.chef.io/chef/resources.html#template), yang masing-masing membuat file konfigurasi dari salah satu file template buku masak, menetapkan properti file, dan memberi tahu Chef untuk memulai ulang layanan.

### File Konfigurasi Lingkungan Tomcat
<a name="create-custom-setup-config-env"></a>

`template`Sumber daya pertama menggunakan file `tomcat_env_config.erb` template untuk membuat file konfigurasi lingkungan Tomcat, yang digunakan untuk mengatur variabel lingkungan seperti`JAVA_HOME`. Nama file default adalah argumen `template` sumber daya. `tomcat::container_config`menggunakan `path` atribut untuk mengganti nilai default dan memberi nama file konfigurasi `/etc/sysconfig/tomcat6` (Amazon Linux) atau `/etc/default/tomcat6` (Ubuntu). `template`Sumber daya juga menentukan pemilik file, grup, dan pengaturan mode dan mengarahkan Chef untuk tidak membuat file cadangan.

Jika Anda melihat kode sumber, sebenarnya ada tiga versi`tomcat_env_config.erb`, masing-masing dalam subdirektori yang berbeda dari `templates` direktori. `amazon`Direktori `ubuntu` dan berisi template untuk sistem operasi masing-masing. `default`Folder berisi template dummy dengan satu baris komentar, yang hanya digunakan jika Anda mencoba menjalankan resep ini pada instance dengan sistem operasi yang tidak didukung. `tomcat::container_config`Resepnya tidak perlu menentukan mana yang `tomcat_env_config.erb` akan digunakan. Chef secara otomatis memilih direktori yang sesuai untuk sistem operasi instans berdasarkan aturan yang dijelaskan dalam [Kekhususan File](http://docs.chef.io/templates.html#file-specificity).

`tomcat_env_config.erb`File untuk contoh ini sebagian besar terdiri dari komentar. Untuk mengatur variabel lingkungan tambahan, hapus komentar pada baris yang sesuai dan berikan nilai pilihan Anda.

**catatan**  
Pengaturan konfigurasi apa pun yang mungkin berubah harus didefinisikan sebagai atribut daripada di-hardcode dalam template. Dengan begitu, Anda tidak perlu menulis ulang template untuk mengubah pengaturan, Anda cukup mengganti atribut.

Template Amazon Linux hanya menetapkan satu variabel lingkungan, seperti yang ditunjukkan dalam kutipan berikut.

```
...
# Use JAVA_OPTS to set java.library.path for libtcnative.so
#JAVA_OPTS="-Djava.library.path=/usr/lib"

JAVA_OPTS="${JAVA_OPTS} <%= node['tomcat']['java_opts'] %>"

# What user should run tomcat
#TOMCAT_USER="tomcat"
...
```

JAVA\$1OPTS dapat digunakan untuk menentukan opsi Java seperti jalur perpustakaan. Menggunakan nilai atribut default, template tidak menetapkan opsi Java untuk Amazon Linux. Anda dapat mengatur opsi Java Anda sendiri dengan mengganti `['tomcat']['java_opts']` atribut, misalnya, dengan menggunakan atribut JSON kustom. Sebagai contoh, lihat [Membuat Tumpukan](create-custom-stack.md#create-custom-stack-stack).

Template Ubuntu menetapkan beberapa variabel lingkungan, seperti yang ditunjukkan dalam kutipan template berikut.

```
# Run Tomcat as this user ID. Not setting this or leaving it blank will use the
# default of tomcat<%= node['tomcat']['base_version'] %>.
TOMCAT<%= node['tomcat']['base_version'] %>_USER=tomcat<%= node['tomcat']['base_version'] %>
...
# Run Tomcat as this group ID. Not setting this or leaving it blank will use
# the default of tomcat<%= node['tomcat']['base_version'] %>.
TOMCAT<%= node['tomcat']['base_version'] %>_GROUP=tomcat<%= node['tomcat']['base_version'] %>
...
JAVA_OPTS="<%= node['tomcat']['java_opts'] %>"

<% if node['tomcat']['base_version'].to_i < 7 -%>
# Unset LC_ALL to prevent user environment executing the init script from
# influencing servlet behavior.  See Debian bug #645221
unset LC_ALL
<% end -%>
```

Menggunakan nilai atribut default, template menetapkan variabel lingkungan Ubuntu sebagai berikut:
+ `TOMCAT6_USER`dan`TOMCAT6_GROUP`, yang mewakili pengguna dan grup Tomcat, keduanya disetel ke`tomcat6`.

  Jika Anda menyetel ['tomcat'] ['base\$1version'] ke`tomcat7`, nama variabel diselesaikan ke `TOMCAT7_USER` dan`TOMCAT7_GROUP`, dan keduanya disetel ke. `tomcat7`
+ `JAVA_OPTS`diatur ke`-Djava.awt.headless=true -Xmx128m -XX:+UseConcMarkSweepGC`:
  + Pengaturan `-Djava.awt.headless` untuk `true` menginformasikan mesin grafis bahwa instance tanpa kepala dan tidak memiliki konsol, yang membahas perilaku yang salah dari aplikasi grafis tertentu.
  + `-Xmx128m`memastikan bahwa JVM memiliki sumber daya memori yang memadai, 128MB untuk contoh ini.
  + `-XX:+UseConcMarkSweepGC`menentukan pengumpulan sampah sapuan tanda bersamaan, yang membantu membatasi jeda yang disebabkan oleh pengumpulan sampah.

    Untuk informasi lebih lanjut, lihat: [Penyempurnaan Kolektor Sapu Tanda Bersamaan](http://docs.oracle.com/javase/6/docs/technotes/guides/vm/cms-6.html).
+ Jika versi Tomcat kurang dari 7, template tidak disetel`LC_ALL`, yang membahas bug Ubuntu.

**catatan**  
Dengan atribut default, beberapa variabel lingkungan ini hanya diatur ke nilai default mereka. Namun, secara eksplisit menyetel variabel lingkungan ke atribut berarti Anda dapat menentukan atribut JSON khusus untuk mengganti atribut default dan memberikan nilai khusus. Untuk informasi selengkapnya tentang atribut utama, lihat[Mengesampingkan Atribut](workingcookbook-attributes.md).

Untuk file template lengkap, lihat [kode sumber](https://github.com/amazonwebservices/opsworks-example-cookbooks/tree/master/tomcat).

### File Konfigurasi Server.xml
<a name="create-custom-setup-config-server"></a>

`template`Sumber daya kedua digunakan `server.xml.erb` untuk membuat [file `system.xml` konfigurasi](http://tomcat.apache.org/tomcat-7.0-doc/config/), yang mengkonfigurasi servlet/JSP wadah. `server.xml.erb`tidak berisi pengaturan khusus sistem operasi, sehingga ada di subdirektori `template` direktori. `default`

Template menggunakan pengaturan standar, tetapi dapat membuat `system.xml` file untuk Tomcat 6 atau Tomcat 7. Misalnya, kode berikut dari bagian server template mengonfigurasi pendengar dengan tepat untuk versi yang ditentukan.

```
<% if node['tomcat']['base_version'].to_i > 6 -%>
  <!-- Security listener. Documentation at /docs/config/listeners.html
  <Listener className="org.apache.catalina.security.SecurityListener" />
  -->
<% end -%>
  <!--APR library loader. Documentation at /docs/apr.html -->
  <Listener className="org.apache.catalina.core.AprLifecycleListener" SSLEngine="on" />
  <!--Initialize Jasper prior to webapps are loaded. Documentation at /docs/jasper-howto.html -->
  <Listener className="org.apache.catalina.core.JasperListener" />
  <!-- Prevent memory leaks due to use of particular java/javax APIs-->
  <Listener className="org.apache.catalina.core.JreMemoryLeakPreventionListener" />
<% if node['tomcat']['base_version'].to_i < 7 -%>
  <!-- JMX Support for the Tomcat server. Documentation at /docs/non-existent.html -->
  <Listener className="org.apache.catalina.mbeans.ServerLifecycleListener" />
<% end -%>
  <Listener className="org.apache.catalina.mbeans.GlobalResourcesLifecycleListener" />
<% if node['tomcat']['base_version'].to_i > 6 -%>
  <Listener className="org.apache.catalina.core.ThreadLocalLeakPreventionListener" />
<% end -%>
```

Template menggunakan atribut sebagai pengganti pengaturan hardcode sehingga Anda dapat dengan mudah mengubah pengaturan dengan mendefinisikan atribut JSON kustom. Contoh:

```
<Connector port="<%= node['tomcat']['port'] %>" protocol="HTTP/1.1"
           connectionTimeout="20000"
           URIEncoding="<%= node['tomcat']['uri_encoding'] %>"
           redirectPort="<%= node['tomcat']['secure_port'] %>" />
```

Untuk informasi selengkapnya, lihat [kode sumber](https://github.com/amazonwebservices/opsworks-example-cookbooks/tree/master/tomcat).

## kucing jantan: :apache\$1tomcat\$1bind
<a name="create-custom-setup-bind"></a>

`tomcat::apache_tomcat_bind`Resepnya memungkinkan server Apache untuk bertindak sebagai front end Tomcat, menerima permintaan masuk dan meneruskannya ke Tomcat dan mengembalikan tanggapan ke klien. Contoh ini menggunakan [mod\$1proxy sebagai proxy/gateway](https://httpd.apache.org/docs/2.2/mod/mod_proxy.html) Apache.

```
execute 'enable mod_proxy for apache-tomcat binding' do
  command '/usr/sbin/a2enmod proxy'
  not_if do
    ::File.symlink?(::File.join(node['apache']['dir'], 'mods-enabled', 'proxy.load')) || node['tomcat']['apache_tomcat_bind_mod'] !~ /\Aproxy/
  end
end

execute 'enable module for apache-tomcat binding' do
  command "/usr/sbin/a2enmod #{node['tomcat']['apache_tomcat_bind_mod']}"
  not_if {::File.symlink?(::File.join(node['apache']['dir'], 'mods-enabled', "#{node['tomcat']['apache_tomcat_bind_mod']}.load"))}
end

include_recipe 'apache2::service'

template 'tomcat thru apache binding' do
  path ::File.join(node['apache']['dir'], 'conf.d', node['tomcat']['apache_tomcat_bind_config'])
  source 'apache_tomcat_bind.conf.erb'
  owner 'root'
  group 'root'
  mode 0644
  backup false
  notifies :restart, resources(:service => 'apache2')
end
```

Untuk mengaktifkan`mod_proxy`, Anda harus mengaktifkan `proxy` modul dan modul berbasis protokol. Anda memiliki dua opsi untuk modul protokol: 
+ HTTP: `proxy_http`
+ [ JServ Protokol Apache](http://tomcat.apache.org/connectors-doc/ajp/ajpv13a.html) (AJP): `proxy_ajp`

  AJP adalah protokol Tomcat internal.

Kedua [sumber daya eksekusi](https://docs.chef.io/chef/resources.html#execute) resep menjalankan `a2enmod` perintah, yang memungkinkan modul yang ditentukan dengan membuat symlink yang diperlukan:
+ `execute`Sumber daya pertama memungkinkan `proxy` modul.
+ `execute`Sumber daya kedua memungkinkan modul protokol, yang diatur ke secara `proxy_http` default.

  Jika Anda lebih suka menggunakan AJP, Anda dapat menentukan JSON khusus untuk mengganti `apache_tomcat_bind_mod` atribut dan mengaturnya ke. `proxy_ajp` 

`apache2::service`Resepnya adalah resep bawaan OpsWorks Stacks yang mendefinisikan layanan Apache. Untuk informasi lebih lanjut, lihat [resep](https://github.com/aws/opsworks-cookbooks/blob/release-chef-11.4/apache2/recipes/service.rb) di GitHub repositori OpsWorks Stacks. 

Sumber `template` daya digunakan `apache_tomcat_bind.conf.erb` untuk membuat file konfigurasi, dinamai secara `tomcat_bind.conf` default. Ini menempatkan file di `['apache']['dir']/.conf.d` direktori. `['apache']['dir']`Atribut didefinisikan dalam file `apache2` atribut bawaan, dan diatur secara default ke `/etc/httpd` (Amazon Linux), atau `/etc/apache2` (Ubuntu). Jika `template` sumber daya membuat atau mengubah file konfigurasi, `notifies` perintah menjadwalkan restart layanan Apache.

```
<% if node['tomcat']['apache_tomcat_bind_mod'] == 'proxy_ajp' -%>
ProxyPass <%= node['tomcat']['apache_tomcat_bind_path'] %> ajp://localhost:<%= node['tomcat']['ajp_port'] %>/
ProxyPassReverse <%= node['tomcat']['apache_tomcat_bind_path'] %> ajp://localhost:<%= node['tomcat']['ajp_port'] %>/
<% else %>
ProxyPass <%= node['tomcat']['apache_tomcat_bind_path'] %> http://localhost:<%= node['tomcat']['port'] %>/
ProxyPassReverse <%= node['tomcat']['apache_tomcat_bind_path'] %> http://localhost:<%= node['tomcat']['port'] %>/
<% end -%>
```

Template menggunakan [ProxyPassReverse](https://httpd.apache.org/docs/2.0/mod/mod_proxy.html#proxypassreverse)arahan [ProxyPass](https://httpd.apache.org/docs/2.0/mod/mod_proxy.html#proxypass)dan untuk mengkonfigurasi port yang digunakan untuk melewati lalu lintas antara Apache dan Tomcat. Karena kedua server berada pada instance yang sama, mereka dapat menggunakan URL localhost dan keduanya disetel secara default ke. `http://localhost:8080`