Konfigurasi PHP untuk Aplikasi Berat?

Yang paling sulit dalam implementasi software adalah bagaimana server dikonfigurasi? Ini adalah bagian paling rumit. Banyak variabel yang saling mempengaruhi. Beberapa kali saya melakukan tune-up server dan ya seperti coba-coba. Untuk menghasilkan konfigurasi optimal tentu tidak mudah.

Saya mencoba bertanya kepada chatgpt untuk konfigurasi awal yang bisa dicoba. Saya sebenarnya tidak yakin juga, tapi daripada toidak ada referensi sama sekali 🙂

Untuk aplikasi berat seperti LimeSurvey, yang membutuhkan konfigurasi PHP yang lebih kuat dan optimal, Anda harus memastikan bahwa server web Anda dapat menangani beban tersebut dengan efisien. LimeSurvey adalah aplikasi survei yang kompleks dan memerlukan konfigurasi yang baik untuk performa yang optimal.

Berikut adalah beberapa pengaturan dan praktik terbaik untuk mengonfigurasi server PHP dan server web Anda untuk menjalankan aplikasi berat seperti LimeSurvey:

1. Konfigurasi PHP (php.ini)

Ubah file php.ini untuk meningkatkan batas memori, waktu eksekusi, dan pengaturan lainnya yang diperlukan untuk aplikasi berat:

; Memory limit
memory_limit = 1G

; Maximum execution time of each script, in seconds
max_execution_time = 300

; Maximum amount of time each script may spend parsing request data
max_input_time = 300

; Maximum number of input variables
max_input_vars = 10000

; Maximum size of POST data that PHP will accept
post_max_size = 128M

; Maximum allowed size for uploaded files
upload_max_filesize = 128M

; The number of seconds a script is allowed to wait for input data
default_socket_timeout = 60

; Maximum amount of memory a script may consume
realpath_cache_size = 4096k
realpath_cache_ttl = 120

; Error handling and logging
log_errors = On
error_log = /var/log/php_errors.log

; Opcache settings (for performance improvement)
opcache.enable = 1
opcache.memory_consumption = 256
opcache.interned_strings_buffer = 16
opcache.max_accelerated_files = 10000
opcache.revalidate_freq = 2
opcache.fast_shutdown = 1

2. Konfigurasi Apache (VirtualHost)

Jika Anda menggunakan Apache, tambahkan pengaturan PHP dalam blok VirtualHost:

<VirtualHost *:80>
    ServerName example.com
    DocumentRoot /var/www/html/limesurvey

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

        # PHP settings
        php_value memory_limit 1G
        php_value max_execution_time 300
        php_value max_input_time 300
        php_value max_input_vars 10000
        php_value post_max_size 128M
        php_value upload_max_filesize 128M
        php_value default_socket_timeout 60
        php_value realpath_cache_size 4096k
        php_value realpath_cache_ttl 120

        # Opcache settings
        php_flag opcache.enable 1
        php_value opcache.memory_consumption 256
        php_value opcache.interned_strings_buffer 16
        php_value opcache.max_accelerated_files 10000
        php_value opcache.revalidate_freq 2
        php_flag opcache.fast_shutdown 1
    </Directory>
</VirtualHost>

3. Konfigurasi MySQL/MariaDB

LimeSurvey juga sangat bergantung pada database. Berikut adalah beberapa pengaturan dasar untuk MySQL/MariaDB:

[mysqld]
max_connections = 500
innodb_buffer_pool_size = 1G
innodb_log_file_size = 256M
innodb_file_per_table = 1
innodb_flush_log_at_trx_commit = 2
max_allowed_packet = 64M
query_cache_type = 1
query_cache_limit = 1M
query_cache_size = 64M

4. Konfigurasi Nginx (Jika Menggunakan Nginx)

Jika Anda menggunakan Nginx sebagai server web, Anda bisa menambahkan pengaturan berikut di file konfigurasi Nginx:

server {
    listen 80;
    server_name example.com;

    root /var/www/html/limesurvey;
    index index.php index.html index.htm;

    location / {
        try_files $uri $uri/ /index.php?$args;
    }

    location ~ \.php$ {
        include snippets/fastcgi-php.conf;
        fastcgi_pass unix:/var/run/php/php7.4-fpm.sock;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        include fastcgi_params;

        # PHP settings
        fastcgi_param PHP_VALUE "
            memory_limit = 1G
            max_execution_time = 300
            max_input_time = 300
            max_input_vars = 10000
            post_max_size = 128M
            upload_max_filesize = 128M
            default_socket_timeout = 60
            realpath_cache_size = 4096k
            realpath_cache_ttl = 120
        ";

        # Opcache settings
        fastcgi_param PHP_VALUE "
            opcache.enable = 1
            opcache.memory_consumption = 256
            opcache.interned_strings_buffer = 16
            opcache.max_accelerated_files = 10000
            opcache.revalidate_freq = 2
            opcache.fast_shutdown = 1
        ";
    }

    location ~ /\.ht {
        deny all;
    }
}

5. Praktik Terbaik

  • Caching: Gunakan mekanisme caching seperti Redis atau Memcached untuk mengurangi beban pada server database.
  • Load Balancing: Pertimbangkan untuk menggunakan load balancer jika Anda mengharapkan jumlah pengguna yang sangat tinggi.
  • Scaling: Skala aplikasi secara horizontal dengan menambahkan lebih banyak server untuk membagi beban.
  • Monitoring: Implementasikan alat monitoring seperti New Relic, Datadog, atau Grafana untuk memantau kinerja server dan aplikasi.

Dengan mengikuti panduan ini, Anda dapat memastikan bahwa LimeSurvey berjalan dengan lancar dan efisien bahkan di bawah beban pengguna yang tinggi. Pastikan untuk menguji konfigurasi ini secara menyeluruh di lingkungan staging sebelum menerapkannya di lingkungan produksi.

Control Panel dan Docker

Kemarin mencoba install Hestia CP di processor Arm. Harapannya saya lebih mudah mengelola aplikasi-aplikasi berbasis web yang sudah banyak. Saya males pakai aaPanel di Arm karena tidak ada file binarinya, semuanya berbasis sources code yang harus dicompile. Butuh waktu lamma.

Karena Linux punya sistem sendiri dan panel-panelan juga punya sistem dengan fungsi yang sama,  maka ada resiko crash lah. Linux saya crash dan tidak bisa masuk console.

Akhirnya saya melakukan instalasi lagi dengan armbian basis Ubuntu 22 (jammy). Ubuntu 22 termasuk Ubuntu LTS yang akan di dukung sampai tahun 2027.

Kalau butuh Armbian 22 buat STB HG680P bisa download disini ya om.

Kesimpulan saya, kalau ingin pakai cara manual ya manuals ekalian seperti yang saya lakukan di server situs ini ya, atau yang lebih aman pakai docker aja biar tidak konflik dengan Linux hostnya. Bisa pakai casa OS atau install Docker + Portainer.

CasaOS, Docker Manager yang Simpel

Docker adalah penemuan menarik dalam virtualisasi. Sebelumnya kita mengenal VMWare, VirtualBox dan semacamnya. Sekarang kita mengenal Docker.

Antara VMWare dan Docker memang tidak bisa dibandingkan. VMWare adalah sistem operasi virtual yang berjalan diatas sistem operasi lain, namun pada Docker, “virtualisasinya” hanya pada level aplikasi. Ya dari sisi penggunaan resources, Docker tentu jauh lebih efisien.

Sebelumnya, saya belajar Docker dengan perintah “command line”. Tapi penyakit command line adalah perintahnya gampang terlupakan.

Akhirnya saya menemukan Portainer sebagai Docker Manager yang berjalan dengan antarmuka web.

Terakhir saya menemukan CasaOS. Walaupun belakangnya ada tulisan OS, namun casaos ini bukan operating system, namun hanya Docker Manager seperti Portainer. Lebih sederhana, tapi memang kurang advanced sebagaimana Portainer. Hebatnya, CasaOS mendukung proccessor arm juga.

Kemenangan CasaOS ada pada tampilannya yang ciamik soro, dan proses managemen dan instalasi aplikasi yang sangat mudah.

Namun kelemahannya adalah fasilitas pengelolaan Docker yang sangat terbatas. Misalnya tidak ada fasilitas untuk menghentikan aplikasi yang berjalan pada Docker (container). Tidak ada fasilitas untuk menduplikat container, tidak ada fasilitas backup dan sebagainya.

Terpaksa pada akhirnya install Portainer pada CasaOS. Install docker manager pada docker manager hahaha.

Semua Portainer pada CasaOS dikenali sebagai bagian dari Docker, namun sebaliknya container yang kita install pada Portainer tidak dianggap sebagai aplikasi CasaOS.

Ada baiknya apabila kita ingin menduplikasi aplikasi pada CasaOS, simpan docker composenya, edit-edit dikit dan install kembali. Dan apabila ingin menghentikan container tertentu, masuk portainer dan stop container.

Ya, mudah-mudahan casaOS versi berikutnya menyediakan start stop container dan clone container.

Happy

 

Ollama, AI di Mesin Lokal

Ollama AI adalah sebuah platform atau layanan yang memanfaatkan kecerdasan buatan (Artificial Intelligence/AI) untuk berbagai tujuan, seperti analisis data, automasi, pengembangan aplikasi, dan peningkatan produktivitas.

Kehebatan Ollama dibanding platform AI lain tak lain adalah karena Ollama bisa diinstall pada komputer /serverlokal.

Ollama hanyalah sebuah platform AI, dimana modelnya sendiri bisa diganti-ganti. Sudah banyak pengembang yang membuat model library untuk berbagai macam keperluan dan tingkat kecerdasan.

Semakin banyak parameter, semakin besar spesifikasi GPU, CPU yang dibutuhkan  yang dibutuhkan. Kalau kamu pengin coba-coba, ya coba yang kecil dulu dan dilihat penggunaan resourcesnya.

Huruf “B” yang ada pada parameter menunjukkan billion (milyard). Artinya kalau sebuah model 2B artinya dia mempunyai 2 miliar parameter. Daftar Library/Model bisa kamu dapatkan disini

Contoh model misalnya deepseek-coder. Dikatakan bahwa “DeepSeek Coder is a capable coding model trained on two trillion code and natural language tokens”.

Btw, karena ollama ini mempunyai API, maka bisa diintegrasikan dengan antar muka sesuai dengan keinginan.

Saya sebenarnya tertarik, tapi karena belum ada kebutuhan dan menjalankannya butuh resources gede. maka biarlah pengetahuan ini menjadi catatan dulu. Kita cari uang buat bayar UKT dulu om hehehe…

ARM Server Nggak Panel-Panelan

Saya mengelola arm server (server-serveran) dan server utama saya menggunakan prosesor arm. Mayoritas server menggunakan prosesor intel sehingga mayoritas aplikasi dicompile dalam arsitektur intel.

Lebih baik mana arm dan intel? Saya tak ingin membandingkannya. Saya menggunakan arm karena murah dan hemat energi. Dan server yang saya gunakan hanya server rumahan saja.

Nah, saya pernah mencoba melakukan instalasi aaPanel di server arm. Berjalan dengan baik walaupun instalasinya harus dengan cara compile satu-satu. Tapi kemarin waktu saya upgrade dari versi 6 ke 7 terjadi crash, yang saya capek memperbaikinya dan akhirnya saya hapusssss….

Lalu saya ingin mencoba menggunakan panel lain, cyber panel, Mmm ternyata nggak sesederhana itu. Ubuntu arm 21 tidak disupport dan ada informasi cyberpanel versi arm tidak akan dilanjutkan.

Akhirnya, gunakan cara manual saja. Tapi, memang menggunakan cara manual itu walaupun hemat resources, namun capekkk. Saran saya jika ingin lebih enak, gunakan docker aja.

Saya sudah mencoba menggunakan CasaOS untuk mengelola file docker saya, dan hasilnya mantabbb!