Saat men-deploy aplikasi PHP pada instans Elastic Compute Service (ECS) Windows, Anda dapat mengintegrasikan versi PHP non-thread-safe (NTS) dengan modul Internet Information Services (IIS) FastCGI untuk memastikan performa dan keamanan website. Panduan ini menjelaskan cara mengonfigurasi izin direktori dan application pool khusus untuk situs Anda.
Cara kerja
Solusi ini mengintegrasikan modul IIS FastCGI dengan interpreter PHP untuk mengurai dan menyajikan halaman web PHP. Permintaan eksternal terlebih dahulu difilter oleh Security Group instans. Kemudian, IIS menggunakan Handler Mapping untuk meneruskan permintaan .php ke proses php-cgi.exe dalam pool proses FastCGI, lalu mengembalikan hasilnya ke klien.
Komponen inti
Browser pengguna mengirim permintaan HTTP melalui jaringan publik ke Port 80 instans ECS.
IIS menerima permintaan HTTP tersebut. Jika permintaan tersebut ditujukan ke file
.php, aturan handler mapping di IIS meneruskan permintaan tersebut ke executable CGI PHP (php-cgi.exe) melalui protokol FastCGI.Modul FastCGI mengelola pool proses
php-cgi.exeyang menerima permintaan dan mengeksekusi skrip PHP yang sesuai.Interpreter PHP mengeksekusi logika bisnis dan mengembalikan konten HTML yang dihasilkan atau data lainnya ke IIS.
IIS mengembalikan hasil akhir ke klien sebagai respons HTTP.
Prosedur
Langkah-langkah berikut menggunakan Windows Server 2022 sebagai contoh.
Langkah 1: Instal IIS dan modul CGI
Login ke instans ECS.
Buka ECS console - Instances. Pada bilah navigasi atas, pilih Wilayah dan kelompok sumber daya yang dituju.
Buka halaman detail instans yang dituju, klik Connect, lalu pilih Workbench. Atur metode koneksi ke Terminal, masukkan username dan password, lalu login ke halaman terminal grafis.
Pada kotak pencarian taskbar, masukkan Server Manager dan buka aplikasi tersebut.
Pilih Add roles and features. Pada wizard, klik Next hingga mencapai halaman Server Roles, lalu centang kotak Web Server (IIS).
Pada kotak dialog yang muncul, klik Add Features, lalu klik Next hingga mencapai halaman Role Services.
Pada daftar Role services, perluas dan centang kotak CGI. Klik Next, lalu klik Install.
Setelah instalasi selesai, klik Close.
Langkah 2: Instal lingkungan runtime PHP
Unduh dan instal Microsoft Visual C++ Redistributable yang diperlukan untuk PHP.
Buka halaman unduhan di website resmi PHP. Pilih dan unduh paket Zip VS17 x64 Non Thread Safe.
Modul IIS FastCGI menggunakan model multi-proses di mana setiap proses berjalan secara independen, sehingga tidak memerlukan thread safety. Versi Non-Thread Safe (NTS) PHP menghilangkan pengecekan keamanan tersebut, memberikan performa lebih baik dan stabilitas lebih tinggi di lingkungan IIS.
Ekstrak paket Zip yang telah diunduh ke path direktori yang tidak mengandung spasi, misalnya
C:\php. Path ini akan menjadi direktori instalasi PHP Anda.
Langkah 3: Konfigurasikan integrasi PHP dan IIS
Konfigurasikan IIS agar menggunakan protokol FastCGI untuk memanggil interpreter PHP. Hal ini memungkinkan IIS memproses file .php dengan meneruskan permintaan ke interpreter PHP.
Pada kotak pencarian taskbar, masukkan Internet Information Services (IIS) Manager dan buka aplikasi tersebut.
Pada panel navigasi kiri, klik hostname server untuk membuka tampilan fitur server.
Klik ganda Handler Mappings. Pada panel Actions di sebelah kanan, klik Add Module Mapping....
Pada kotak dialog yang muncul, konfigurasikan parameter berikut:
Request Path:
*.phpModule:
FastCgiModuleExecutable (optional):
C:\php\php-cgi.exePada dialog pemilihan file, ubah tipe file dari
.dllmenjadi.exeuntuk menemukanphp-cgi.exe.Name:
PHP via FastCGI
Klik OK. Pada kotak dialog konfirmasi yang muncul, klik Yes untuk membuat aplikasi FastCGI yang sesuai.
Langkah 4: Buat dan konfigurasikan website
Buat website baru dan konfigurasikan application pool serta izin direktori khusus untuknya.
Buat direktori dan konfigurasikan izin
Sesuai Prinsip Hak Akses Minimum (Principle of Least Privilege), IIS tidak secara otomatis memberikan izin ke direktori baru. Anda harus memberikan izin baca secara manual kepada kelompok
IIS_IUSRS. Jika tidak, Anda akan mendapatkan error 403 atau 500 saat mengakses website.Pada kotak pencarian taskbar, masukkan File Explorer dan buka aplikasi tersebut.
Buat direktori root untuk website Anda, misalnya
C:\myphp.Klik kanan direktori root website, lalu pilih .
Pada kotak Enter the object names to select, masukkan
IIS_IUSRS, lalu klik Check Names dan OK.Pilih kelompok
IIS_IUSRSyang baru ditambahkan dan berikan izin Read & execute, List folder contents, dan Read.Klik OK untuk menyimpan pengaturan izin.
Ubah port website IIS default
Website baru perlu menggunakan Port 80, yang sudah digunakan oleh website IIS default (Default Web Site).
Pada kotak pencarian taskbar, masukkan Internet Information Services (IIS) Manager dan buka aplikasi tersebut.
Pada panel navigasi kiri, perluas hostname server, lalu klik Sites.
Pilih Default Web Site. Pada panel Actions di sebelah kanan, klik Bindings....
Pilih binding port, klik Edit, ubah port ke angka lain (misalnya 8080), klik OK, lalu klik Close.
Tambahkan website
Pada panel navigasi kiri, klik kanan node Sites dan pilih Add Website....
Konfigurasikan informasi website:
Site name: Misalnya,
MyPHP.Physical path: Direktori root website, misalnya
C:\myphp.Port:
80.
Klik OK.
Langkah 5: Konfigurasikan security group dan verifikasi pengaturan
Buat halaman uji untuk memverifikasi konfigurasi lingkungan.
Konfigurasikan aturan security group
Untuk mengizinkan akses jaringan publik ke website Anda, buka port layanan web di Security Group instans.
Buka ECS console - Instances dan klik ID instans yang dituju untuk membuka halaman detailnya.
Pada halaman detail instans, klik tab Security Groups, lalu klik ID security group yang dituju untuk membuka halaman detailnya.
Pada daftar aturan inbound, klik Add Rule, konfigurasikan parameter berikut, lalu simpan aturan tersebut.
Action: Allow
Protocol: Custom TCP
Source:
0.0.0.0/0Destination (Current Instance):
80/80
Buat halaman uji
Pada direktori root website (misalnya
C:\myphp), buat file bernamaindex.phpdan tambahkan konten berikut:<?php phpinfo(); ?>Akses halaman uji
Buka browser web dan kunjungi
http://<Alamat IP publik instans>/index.php. Jika halaman tersebut menampilkan informasi detail PHP, berarti lingkungan Anda telah dikonfigurasi dengan benar.