Menjalankan Aplikasi CI

Aplikasi CodeIgniter 4 dapat dijalankan dengan sejumlah cara berbeda: di hosting di server web, menggunakan virtualisasi, atau menggunakan alat baris perintah CodeIgniter untuk pengujian.

Dalam hal ini, kita akan membahas implementasi di hosting web-server

Konfigurasi Awal

Konfigurasikan untuk URI Situs

Buka file app/Config/App.php dengan editor teks (contoh nano)

  1. $baseURL

    Tetapkan URL dasar Anda ke $baseURL. Jika Anda memerlukan fleksibilitas lebih, baseURL dapat ditetapkan dalam file .env sebagai app.baseURL = 'http://example.com/'. Selalu gunakan garis miring di akhir URL dasar Anda!

  2. $indexPage

    Jika Anda tidak ingin menyertakan index.php di URI situs Anda, tetapkan $indexPage ke ''. Pengaturan ini akan digunakan saat framework membuat URI situs Anda.

Konfigurasikan Pengaturan Koneksi dataBase

Jika Anda ingin menggunakan database, buka file app/Config/Database.php dengan editor teks dan atur pengaturan database Anda. Atau, pengaturan ini dapat diatur dalam file .env Anda. Lihat Konfigurasi Database untuk detailnya.

Atur ke Mode Pengembangan

Jika tidak ada di server produksi, tetapkan CI_ENVIRONMENT ke development dalam file .env untuk memanfaatkan alat debugging yang disediakan. Lihat Menetapkan Mode Pengembangan untuk detailnya.

Tetapkan Writable Folder Permission

Jika Anda akan menjalankan situs Anda menggunakan server web (misalnya, Apache atau nginx), Anda perlu mengubah izin untuk folder writable di dalam proyek Anda, sehingga dapat ditulis oleh pengguna atau akun yang digunakan oleh server web Anda.

Hosting dengan Apache

Aplikasi web CodeIgniter4 biasanya dihosting di server web. Apache HTTP Server adalah platform “standar”, dan diasumsikan dalam sebagian besar dokumentasi ini.

Konfigurasikan File Konfigurasi Utama

Aktifkan mod_rewrite

Modul “mod_rewrite” mengaktifkan URL tanpa “index.php” di dalamnya, dan diasumsikan dalam panduan pengguna kami.

Pastikan modul penulisan ulang diaktifkan dengan perintah:

sudo a2enmod rewrite

Set Document Root

Pastikan juga bahwa elemen <Directory> dari root dokumen default mengaktifkan ini juga, dalam pengaturan AllowOverride:

<Directory "/var/www/html/">
    Options Indexes FollowSymLinks
    AllowOverride All
    Require all granted
</Directory>

Hosting dengan VirtualHost

Kami merekomendasikan penggunaan "virtual hosting” untuk menjalankan aplikasi Anda. Anda dapat mengatur alias yang berbeda untuk setiap aplikasi yang Anda kerjakan,

Aktifkan vhost_alias_module

$ sudo a2enmod vhost_alias

Menambahkan Host Alias

Tambahkan alias host di file “hosts” Anda, biasanya /etc/hosts pada platform unix/linux.

127.0.0.1 myproject.local

Setting VirtualHost

Tambahkan elemen <VirtualHost> untuk aplikasi web Anda di dalam konfigurasi hosting virtual, misalnya, apache2/sites-available/myproject-vhost.conf:

<VirtualHost *:80>
    DocumentRoot "/var/www/myproject/public"
    ServerName   myproject.local
    ErrorLog     "logs/myproject-error_log"
    CustomLog    "logs/myproject-access_log" common

    <Directory "/var/www/myproject/public">
        AllowOverride All
        Require all granted
    </Directory>
</VirtualHost>

Konfigurasi di atas mengasumsikan folder proyek berada sebagai berikut:

/var/www/
   ├── myproject/      (Project Folder)
   │      └── public/  (DocumentRoot for myproject.local)
   └── html/

Restart Apache

Testing

Dengan konfigurasi di atas, aplikasi web Anda akan diakses dengan URL http://myproject.local/ di browser Anda.

Apache perlu di-restart setiap kali Anda mengubah konfigurasinya.

Hosting dengan Subfolder

Jika Anda menginginkan baseURL seperti http://localhost/myproject/ dengan subfolder, ada tiga cara.

Menggunakan Alias

Tempatkan folder proyek Anda sebagai berikut, di mana html adalah akar dokumen Apache:

├── myproject/ (project folder)
│      └── public/
└── html/

Add the following in the main configuration file, e.g., apache2/conf/httpd.conf:

Alias /myproject /var/www/myproject/public
<Directory "/var/www/myproject/public">
    AllowOverride All
    Require all granted
</Directory>

Restart Apache

Menambahkan .htaccess

Jalan keluar terakhir adalah menambahkan .htaccess ke root proyek.

Tidak disarankan untuk meletakkan folder proyek di root dokumen. Namun, jika Anda tidak punya pilihan lain, seperti di server bersama, Anda dapat menggunakan ini.

Letakkan folder proyek Anda sebagai berikut, di mana htdocs adalah root dokumen Apache, dan buat file .htaccess:

└── htdocs/
    └── myproject/ (project folder)
        ├── .htaccess
        └── public/

Dan edit .htaccess seperti:

<IfModule mod_rewrite.c>
    RewriteEngine On
    RewriteRule ^(.*)$ public/$1 [L]
</IfModule>

<FilesMatch "^\.">
    Require all denied
    Satisfy All
</FilesMatch>

And remove the redirect settings in public/.htaccess:

--- a/public/.htaccess
+++ b/public/.htaccess
@@ -16,16 +16,6 @@ Options -Indexes
    # http://httpd.apache.org/docs/current/mod/mod_rewrite.html#rewritebase
    # RewriteBase /

- # Redirect Trailing Slashes...
- RewriteCond %{REQUEST_FILENAME} !-d
- RewriteCond %{REQUEST_URI} (.+)/$
- RewriteRule ^ %1 [L,R=301]
- -   # Rewrite "www.example.com -> example.com"
- RewriteCond %{HTTPS} !=on
- RewriteCond %{HTTP_HOST} ^www\.(.+)$ [NC]
- RewriteRule ^ http://%1%{REQUEST_URI} [R=301,L]
- # Checks to see if the user is attempting to access a valid file,
    # such as an image or css document, if this isn't true it sends the
    # request to the front controller, index.php

Hosting dengan mod_userdir (Shared Hosts)

Praktik umum dalam lingkungan shared hosting adalah menggunakan modul Apache “mod_userdir” untuk mengaktifkan Virtual Host per pengguna secara otomatis. Konfigurasi tambahan diperlukan untuk memungkinkan CodeIgniter4 dijalankan dari direktori per pengguna ini.

Karena CodeIgniter4 mengharapkan server menemukan pengontrol depan kerangka kerja di public/index.php secara default, Anda harus menentukan lokasi ini sebagai alternatif untuk mencari permintaan (bahkan jika CodeIgniter4 diinstal dalam direktori web per pengguna).

Direktori web pengguna default ~/public_html ditentukan oleh direktif UserDir, biasanya di apache2/mods-available/userdir.conf atau apache2/conf/extra/httpd-userdir.conf:

UserDir public_html

Jadi Anda perlu mengonfigurasi Apache untuk mencari direktori publik CodeIgniter terlebih dahulu sebelum mencoba menyajikan default:

UserDir "public_html/public" "public_html"

Pastikan untuk menentukan opsi dan izin untuk direktori publik CodeIgniter juga. userdir.conf mungkin terlihat seperti ini:

<IfModule mod_userdir.c>
    UserDir "public_html/public" "public_html"
    UserDir disabled root

    <Directory /home/*/public_html>
        AllowOverride All
        Options MultiViews Indexes FollowSymLinks
        <Limit GET POST OPTIONS>
            # Apache <= 2.2:
            # Order allow,deny
            # Allow from all

            # Apache >= 2.4:
            Require all granted
        </Limit>
        <LimitExcept GET POST OPTIONS>
            # Apache <= 2.2:
            # Order deny,allow
            # Deny from all

            # Apache >= 2.4:
            Require all denied
        </LimitExcept>
    </Directory>

    <Directory /home/*/public_html/public>
        AllowOverride All
        Options MultiViews Indexes FollowSymLinks
        <Limit GET POST OPTIONS>
            # Apache <= 2.2:
            # Order allow,deny
            # Allow from all

            # Apache >= 2.4:
            Require all granted
        </Limit>
        <LimitExcept GET POST OPTIONS>
            # Apache <= 2.2:
            # Order deny,allow
            # Deny from all

            # Apache >= 2.4:
            Require all denied
        </LimitExcept>
    </Directory>
</IfModule>

Removing the index.php

See CodeIgniter URLs.

Setting Environment

See Handling Multiple Environments.

Bootstrapping the App

Dalam beberapa skenario, Anda mungkin ingin memuat kerangka kerja tanpa benar-benar menjalankan seluruh aplikasi. Hal ini khususnya berguna untuk pengujian unit proyek Anda, tetapi mungkin juga berguna untuk menggunakan alat pihak ketiga guna menganalisis dan mengubah kode Anda. Kerangka kerja dilengkapi dengan skrip bootstrap terpisah yang khusus untuk skenario ini: system/Test/bootstrap.php.

Sebagian besar jalur ke proyek Anda ditetapkan selama proses bootstrap. Anda dapat menggunakan konstanta yang telah ditetapkan sebelumnya untuk menggantinya, tetapi saat menggunakan default, pastikan jalur Anda selaras dengan struktur direktori yang diharapkan untuk metode instalasi Anda.