Ini Dia Best Practice Konfigurasi Folder Permission Di Laravel - CRUDPRO

Ini Dia Best Practice Konfigurasi Folder Permission Di Laravel

Ini Dia Best Practice Konfigurasi Folder Permission Di Laravel

Jika Anda menemukan artikel ini, Anda mungkin mencari di internet untuk panduan tentang cara mengatur permision dengan benar untuk file framework Laravel. Anda beruntung! Namun sebelum kita mulai, berikut adalah kesalahan terkait permision yang paling umum dihadapi oleh pengguna framework Laravel.

  • permision Laravel ditolak
    [ErrorException] file_put_contents(/opt/bitnami/apache/htdocs/vendor/composer/installed.php) : failed to open stream: Permission denied
  • Jika saya memperbaiki permision, itu berfungsi hari ini, tetapi hari berikutnya terjadi lagi karena log harian dibuat dengan permision yang salah.
  • Kesalahan permision terkait Cronjob
  • Kesalahan permision composer
    [RuntimeException] Error Output: PHP Warning: required(../vendor/autoload.php): failed to open stream: no such file or directory
  • Kesalahan otorisasi NPM
    npm WARN checkPermissions Missing write access to /opt/bitnami/apache/htdocs/node_modules
  • Peringatan untuk menjalankan Composer sebagai root
  • Jangan jalankan Composer sebagai root/superuser! Lihat https://getcomposer.org/root untuk informasi lebih lanjut.

Saya menggunakan sudo pada setiap perintah yang ingin saya jalankan dan menyelesaikan beberapa masalah di atas, tetapi apa cara yang benar untuk menyelesaikan masalah ini?

permision requiements oleh framework Laravel

Di bawah ini adalah tabel permision Linux dasar untuk referensi Anda.

Ini Dia Best Practice Konfigurasi Folder Permission Di Laravel

Laravel mengharuskan pengguna server web untuk memiliki permision write ke dua folder.

  1. /storage
  2. /bootstrap/cache

Selain itu, pengguna SSH saat ini memiliki akses ke semua folder dan file lain untuk operasi penginstalan dan pemutakhiran COMPOSER dan NPM.

Cronjob untuk dijalankan menggunakan pengguna server web, bukan root.

Langkah pertama : Tetapkan Pengguna sebagai Owner

Catatan penting: Pengguna web server Apache adalah daemon dan NGINX adalah www-data. Bergantung pada pengaturan Anda, itu mungkin memiliki nama lain seperti ubuntu.

Dalam hal ini, saya gunakan daemon sebagai pengguna web server dan bitnami sebagai pengguna SSH. Ganti nama pengguna Anda sesuai. Dengan asumsi /home/bitnami/htdocs adalah direktori root Laravel Anda saat ini.

sudo chown -R bitnami:daemon /home/bitnami/htdocs/

Perintah di atas akan menetapkan pengguna Anda sebagai owner direktori dan file dalam htdocs dan grup server web sebagai owner grup.

Catatan tambahan: Ada pendekatan lain untuk menjadikan daemon sebagai owner semua direktori dan file, tetapi dengan pendekatan ini saya berjuang untuk memperbarui dan mengelola file menggunakan pengguna SSH saya. Jadi saya lebih suka menugaskan file ke pengguna.

Langkah kedua: Tetapkan permision yang Tepat di Semua File dan Folder

sudo find /home/bitnami/htdocs/ -type f -exec chmod 664 {} \;
sudo find /home/bitnami/htdocs/ -type d -exec chmod 775 {} \;

Perintah pertama di atas menemukan semua file dan menetapkannya sebagai 664. 664 memberikan bitnami (pengguna saya) dan daemon (pengguna server web) permision baca dan tulis. Dan hanya membaca permision untuk pengguna lain dalam sistem.

Perintah kedua mencari semua direktori dan menetapkannya sebagai 775. 775 memberikan permision baca, tulis, dan eksekusi untuk bitnami (pengguna saya) dan daemon (pengguna server web). Juga, berikan hanya permision baca dan eksekusi kepada pengguna lain di sistem.

Langkah ketiga: Berikan permision Baca dan Tulis Pengguna Server Web pada Folder yang Diperlukan

Mari berikan keowneran kepada pengguna server web sesuai dengan persyaratan permision kami.

cd /home/bitnami/htdocs
sudo chown -R daemon:daemon storage
sudo chown -R daemon:daemon bootstrap/cache

Untuk menghindari kerumitan, berikan keowneran folder ini kepada pengguna server web dan tambahkan pengguna ke grup server web sehingga pengguna dapat mengakses penyimpanan dan bootstrap/cache melalui permision grup.

sudo usermod -a -G daemon bitnami

Sekarang, saat menjalankan perintah seperti php artisan atau composer, saya tidak lagi memiliki masalah permision di folder log.

Langkah keempat: Siapkan pengguna yang sesuai untuk CRONJOB

Saya menggunakan tumpukan LAMP Bitnami dalam panduan ini. Buat file di folder ini /etc/cron. d.

* * * * * daemon cd /opt/bitnami/apache2/htdocs && /opt/bitnami/php/bin/php artisan schedule:run >> /opt/bitnami/apache2/htdocs/storage/logs/cron.log 2>&1

Cronjob ini akan dijalankan setiap menit dengan menggunakan daemon sebagai penggunanya. Langkah 3 mengatasi masalah ini karena cronjob memerlukan akses baca dan tulis ke file log. Simpan file ini dan secara otomatis akan berlaku di menit berikutnya.

Kiat Pro: Tulis jalur lengkap folder, binari PHP, dan lokasi keluaran log sehingga pekerjaan cron Anda berfungsi dengan benar.

ringkasan

Langkah-langkah di atas adalah metode paling terkenal yang telah saya kumpulkan dan pahami dari berbagai sumber di internet. Setelah mengatur ini dengan benar, kesalahan terkait permision tidak akan muncul lagi. Juga, Anda dapat menjalankan perintah composer, npm, atau php artisan tanpa menggunakan sudo.

Beri tahu kami di komentar bagian mana dari manajemen dan keamanan pengguna Linux yang dapat ditingkatkan lebih lanjut. Juga, jika Anda memiliki pertanyaan, silakan tinggalkan. saya akan melakukan yang terbaik untuk membantu.