Cara Memasang Laravel pada Ubuntu 20.04

Semua yang anda perlu ketahui untuk menggunakan aplikasi web Laravel pada mesin Ubuntu 20.04 LTS

Laravel ialah rangka kerja PHP sumber terbuka yang sangat popular dengan sintaks ekspresif dan elegan yang digunakan untuk mereka bentuk aplikasi web yang moden dan cantik. Laravel bertujuan untuk menghilangkan kesakitan pembangunan web dan menjadikannya pengalaman yang menyeronokkan dan kreatif, menjadikan pembangun web menjadi tukang web.

Dalam panduan ini, anda akan belajar cara memasang Laravel dengan tindanan LAMP pada pelayan Ubuntu 20.04 untuk membolehkan aplikasi web anda berfungsi & berjalan.

Prasyarat

Untuk mengikuti panduan ini, anda memerlukan pelayan Ubuntu 20.04 LTS dan dilog masuk sebagai a sudo pengguna. Sebelum kita mula, kemas kini dan tingkatkan pakej Ubuntu 20.04 dengan menjalankan:

kemas kini sudo apt && peningkatan sudo apt

Memasang LAMP Stack

LAMP ialah akronim untuk L sistem pengendalian inux, A pelayan web pache, M pangkalan data ySQL dan P bahasa pengaturcaraan HP. Kami sudah pun menggunakan Ubuntu 20.04 yang menandakan Linux dalam tindanan LAMP. Jadi kami akan memasang baki tiga pakej untuk melengkapkan tindanan LAMP untuk aplikasi Laravel kami.

Tiada pakej meta tersedia untuk memasang tindanan LAMP dalam repositori Ubuntu 20.04. Tetapi kita boleh menggunakan ciri kecil yang kemas apt pengurus pakej dipanggil tugas. Tugas dilambangkan menggunakan nama tugas yang ada dengan kadet (^) dilampirkan kepadanya.

sudo apt install lamp-server^

Perintah ini akan mencari fail senarai pakej untuk semua medan "Tugas:" dan memasang semua pakej dengan "pelayan lampu" dalam medan tugasnya. Jadi tindanan LAMP yang terdiri daripada pakej Apache, MySQL dan PHP dengan semua kebergantungan mereka akan dipasang pada pelayan Ubuntu anda.

Konfigurasi Firewall

Sebaik sahaja anda telah memasang tindanan LAMP, anda juga perlu mengkonfigurasi tembok api tidak rumit (UFW) dan menukar peraturannya supaya anda boleh mengakses pelayan Apache dari internet.

UFW menyediakan profil aplikasi mudah yang boleh digunakan untuk menukar peraturan dan menogol trafik pada port rangkaian. Jalankan arahan berikut untuk menyenaraikan semua aplikasi yang mengakses port rangkaian:

senarai apl sudo ufw

Anda akan melihat output seperti ini:

Aplikasi yang tersedia: Apache Apache Full Apache Secure OpenSSH

Port rangkaian yang dibuka oleh profil ini pada pelayan Ubuntu 20.04 anda disenaraikan di bawah:

  • Apache: Profil ini hanya membuka port 80 (membenarkan trafik HTTP)
  • Apache Full: Profil ini membuka kedua-duanya 80 & 443 port (membenarkan trafik HTTP & HTTPS)
  • Apache Secure: Profil ini hanya membuka port 443 (membenarkan trafik HTTPS)
  • OpenSSH: Profil ini membuka port 22 yang membenarkan protokol SSH

Anda perlu mendayakan profil 'Apache Full' yang akan membenarkan trafik ke pelayan web Apache dari internet. Selain itu, anda juga perlu mendayakan profil 'OpenSSH' yang membenarkan trafik pada port 22 (SSH) pada pelayan Ubuntu 20.04 anda. Jika anda mendayakan UFW tanpa membenarkan profil 'OpenSSH' anda tidak akan dapat menyambung ke pelayan anda menggunakan SSH.

Untuk menukar peraturan UFW dan membenarkan trafik pada port 80 dan 22, jalankan:

sudo ufw benarkan 'Apache Full' sudo ufw benarkan 'OpenSSH'

Kemudian dayakan tembok api UFW menggunakan arahan berikut:

sudo ufw enable

Anda mungkin mendapat gesaan yang mengatakan "perintah mungkin mengganggu sambungan ssh sedia ada. Teruskan dengan operasi (y|n)?”. Tekan Y untuk meneruskan kerana kami telah menambah peraturan untuk membenarkan SSH dalam UFW.

Kini anda boleh mengakses halaman web lalai Apache menggunakan alamat IP pelayan Ubuntu anda dari internet. Untuk berbuat demikian, buka penyemak imbas anda dan taip alamat IP pelayan Ubuntu 20.04 anda dalam bar URL dan tekan enter.

//Your_ubuntu_server_ip

Halaman ini mengesahkan bahawa pelayan web Apache berjalan dengan betul dan peraturan UFW disediakan dengan betul.

Menyediakan Pangkalan Data MySQL untuk Laravel

Laravel 7 menjadikan interaksi dengan pangkalan data sangat mudah merentasi pelbagai bahagian belakang pangkalan data yang disokongnya seperti MySQL versi 5.6+, PostgreSQL 9.4+, SQLite 3.8.8+ dan SQL Server 2017+. Kami sudah mempunyai pakej MySQL terkini yang dipasang dengan lampu-pemutus^ tugasan. Jadi dalam bahagian ini, kami akan mengkonfigurasi pelayan MySQL dan kemudian melihat bagaimana untuk menyediakan pengguna dan pangkalan data MySQL baharu untuk aplikasi Laravel.

Konfigurasikan MySQL

Pangkalan data MySQL disertakan dengan skrip keselamatan yang diprapasang yang boleh digunakan untuk mengalih keluar beberapa tetapan lalai yang tidak selamat. Adalah disyorkan agar anda menjalankan skrip ini sebelum anda menggunakan aplikasi Laravel anda.

sudo mysql_secure_installation

Perintah di atas akan melaksanakan skrip keselamatan yang akan meminta anda beberapa siri soalan untuk mengkonfigurasi pelayan MySQL.

Pertama, anda akan ditanya sama ada anda ingin menyediakan SAHKAN KATA LALUAN pasangkan. Pemalam ini menyemak kata laluan anda dan meletakkannya sebagai selamat atau tidak selamat berdasarkan tahap dasar pengesahan kata laluan yang akan anda pilih tidak lama lagi. Jadi tekan Y jika anda ingin mendayakan pemalam ini.

Pengeluaran: Menjamin penggunaan pelayan MySQL. Menyambung ke MySQL menggunakan kata laluan kosong. SAHKAN KOMPONEN KATA LALUAN boleh digunakan untuk menguji kata laluan dan meningkatkan keselamatan. Ia menyemak kekuatan kata laluan dan membenarkan pengguna menetapkan hanya kata laluan yang cukup selamat. Adakah anda ingin menyediakan komponen SAHKAN KATA LALUAN? Tekan y|Y untuk Ya, sebarang kekunci lain untuk Tidak: Y

Kemudian tetapkan tahap dasar pengesahan kata laluan dengan sama ada memasukkan 0, 1 atau 2 bergantung pada seberapa kuat anda ingin mencipta kata laluan anda untuk pangkalan data anda.

Pengeluaran: Terdapat tiga peringkat dasar pengesahan kata laluan: Panjang RENDAH >= 8 Panjang SEDERHANA >= 8, angka, huruf besar bercampur dan aksara khas Panjang KUAT >= 8, angka, huruf besar bercampur, aksara khas dan fail kamus Sila masukkan 0 = RENDAH, 1 = SEDERHANA dan 2 = KUAT: 2

Seterusnya, anda akan diminta memasukkan kata laluan baharu untuk pengguna root MySQL. Masukkan kata laluan yang sesuai untuk akar MySQL anda. Pemalam VALIDATE PASSWORD akan memberikan anda anggaran kekuatan kata laluan anda mengikut tahap pengesahan kata laluan anda. Tekan Y untuk meneruskan kata laluan yang anda berikan.

Pengeluaran: Sila tetapkan kata laluan untuk root di sini. Kata laluan baharu: Masukkan semula kata laluan baharu: Anggaran kekuatan kata laluan: 100 Adakah anda ingin meneruskan kata laluan yang disediakan? (Tekan y|Y untuk Ya, sebarang kekunci lain untuk Tidak) : Y

Tekan Y untuk selebihnya gesaan, mereka akan mengalih keluar beberapa pengguna tanpa nama dan pangkalan data ujian, melumpuhkan log masuk akar jauh dan memuat semula tetapan baharu untuk pelayan MySQL. Apabila anda selesai, uji pangkalan data anda dengan menjalankan:

sudo mysql

Perintah di atas akan membuka konsol MySQL, menyambung ke pangkalan data MySQL sebagai akar pengguna. Anda akan melihat output seperti ini:

Pengeluaran: Selamat datang ke monitor MySQL. Perintah berakhir dengan ; atau \g. Id sambungan MySQL anda ialah 10 versi Pelayan: 8.0.20-0ubuntu0.20.04.1 (Ubuntu) Hak Cipta (c) 2000, 2020, Oracle dan/atau ahli gabungannya. Hak cipta terpelihara. Oracle ialah tanda dagangan berdaftar Oracle Corporation dan/atau ahli gabungannya. Nama lain mungkin merupakan tanda dagangan pemilik masing-masing. Taip 'help;' atau '\h' untuk mendapatkan bantuan. Taip '\c' untuk mengosongkan penyata input semasa. mysql>

Anda mungkin perasan bahawa anda tidak perlu memasukkan kata laluan yang telah anda tetapkan untuk pengguna root MySQL. Ini kerana kaedah pengesahan lalai untuk pengguna akar MySQL pentadbiran ialah caching_sha2_authentication bukannya mysql_native_password kaedah yang menggunakan kata laluan untuk log masuk.

Jadi secara lalai, anda hanya boleh log masuk sebagai pengguna root MySQL dengan sudo membolehkan pengguna yang bertindak sebagai keselamatan tambahan untuk pelayan MySQL. Tetapi perpustakaan MySQL PHP tidak menyokong caching_sha2_authentication kaedah. Oleh itu kita perlu menggunakan mysql_native_password kaedah apabila kami mencipta pengguna baharu untuk Laravel kerana ia menggunakan kata laluan untuk menyambung & berinteraksi dengan pangkalan data.

Cipta Pengguna & Pangkalan Data MySQL Baharu

Ia sentiasa menjadi amalan yang baik untuk mencipta pengguna baharu dan pangkalan data khusus untuk aplikasi anda dan bukannya menggunakan pangkalan data pengguna akar MySQL dan pangkalan data ujian. Jadi kami akan menyediakan pengguna MySQL baharu yang dipanggil pengguna_laravel dan pangkalan data dipanggil laravel. Jika anda telah mengikuti tutorial hingga ke tahap ini, anda harus membuka konsol MySQL. Untuk mencipta pengguna dipanggil pengguna_laravel jalankan pertanyaan berikut dalam konsol MySQL:

Nota: Gantikan pas ujian dalam pertanyaan MySQL di bawah dengan kata laluan yang kuat.

CIPTA PENGGUNA 'laravel_user'@'%' DIKENALPASTI DENGAN mysql_native_password OLEH 'testpass';

Seterusnya, buat pangkalan data yang dipanggil laravel untuk aplikasi Laravel kami dengan menjalankan pertanyaan ini:

CIPTA PANGKALAN DATA laravel;

Hanya pengguna akar MySQL mempunyai kebenaran ke laravel pangkalan data yang baru dibuat. Berikan semua kebenaran ke atas laravel pangkalan data kepada pengguna_laravel dengan berlari:

BERIKAN SEMUA PADA laravel.* KEPADA 'laravel_user'@'%';

Jadi, kami kini mempunyai pengguna MySQL baharu dan pangkalan data, keluar dari konsol MySQL dengan menjalankan:

KELUAR;

Uji pengguna MySQL baharu anda dengan log masuk ke konsol MySQL dengannya, untuk berbuat demikian jalankan arahan ini dalam terminal:

mysql -u laravel_user -p

Perhatikan -hlm bendera dalam arahan, ia akan meminta anda untuk kata laluan yang anda gunakan semasa mencipta pengguna_laravel (pas ujian dalam pertanyaan). Selepas anda log masuk ke konsol MySQL sebagai pengguna_laravel, sahkan bahawa pengguna mempunyai akses kepada laravel pangkalan data dengan menjalankan:

TUNJUKKAN PANGKALAN DATA;
Pengeluaran: +--------------------+ | Pangkalan Data | +--------------------+ | laravel | | skema_maklumat | +---------------------+ 2 baris dalam set (0.01 saat)

Output di atas mengesahkan bahawa pengguna MySQL pengguna_laravel mempunyai kebenaran ke pangkalan data laravel. Keluar dari konsol MySQL menggunakan KELUAR; pertanyaan supaya kami boleh meneruskan untuk mencipta aplikasi DemoApp Laravel.

Memasang Laravel

Rangka kerja Laravel menggunakan Komposer untuk memuat turun dan mengurus kebergantungannya. Jadi, kami perlu memasang Komposer pada mesin Ubuntu 20.04 kami sebelum kami boleh mencipta aplikasi Laravel.

Pasang Komposer

Komposer ialah alat pengurus pergantungan untuk PHP, yang menjadikan pemasangan dan pengemaskinian rangka kerja dan perpustakaan PHP lebih mudah. Kami akan melihat cara memasang Komposer dengan cepat dalam tutorial ini supaya kami boleh menggunakannya untuk memuat turun dan mengurus rangka kerja Laravel.

Anda perlu memasang beberapa pakej tambahan yang diperlukan oleh Komposer untuk berfungsi seperti php-cli untuk menjalankan skrip PHP dalam terminal dan buka zip untuk membantu Komposer mengekstrak pakej. Pasang kedua-duanya dengan menjalankan:

sudo apt install php-cli unzip

Kemudian untuk memasang Komposer secara global, muat turun skrip pemasangan Komposer dengan keriting dan pasangkannya menggunakan arahan berikut:

curl -sS //getcomposer.org/installer | sudo php -- --install-dir=/usr/local/bin --filename=composer

Akhir sekali, sahkan bahawa komposer dipasang dengan betul dengan menjalankan:

komposer
 ______ / ____/___ ____ ___ ____ ____ ________ _____ / / / __ \/ __ `__ \/ __ \/ __ \/ ___/ _ \/ ___/ / /___/ /_/ / / / / / /_ / / /_/ (__ ) __/ / \____/\____/_/ /_/ /_/ .___/\____/____/\___/_/ /_/ Versi komposer 1.10.8 2020-06- 24 21:23:30 Penggunaan: perintah [pilihan] [argumen]

Output ini mengesahkan bahawa Komposer berfungsi dengan betul pada pelayan Ubuntu 20.04 anda, anda boleh mula menggunakannya untuk memasang dan mengurus rangka kerja dan perpustakaan PHP.

Buat Aplikasi Laravel

Kami mempunyai segala-galanya yang diperlukan untuk mencipta aplikasi Laravel pada pelayan Ubuntu 20.04 kami kecuali untuk beberapa sambungan PHP. Pasang sambungan yang hilang ini menggunakan arahan berikut:

sudo apt install php-mbstring php-xml php-bcmath php-zip php-json

Kini, kita boleh memasang Laravel dan mencipta aplikasi Laravel baharu dengan bantuan Komposer. Mula-mula, pastikan anda berada dalam direktori rumah pengguna anda:

cd ~

Kemudian buat projek Laravel baharu menggunakan Komposer cipta-projek perintah:

komposer create-project --prefer-dist laravel/laravel LaravelApp

Perintah di atas akan mencipta projek baharu yang dipanggil sebagai LaravelApp dan ia juga akan memasang dan mengkonfigurasi Rangka Kerja Laravel untuk anda. Anda akan melihat output yang serupa dengan ini:

Pengeluaran: Mencipta projek "laravel/laravel" di "./LaravelApp" Memasang laravel/laravel (v7.12.0) Memasang laravel/laravel (v7.12.0): Memuat turun (100%) Projek yang dibuat dalam /home/ath/LaravelApp @php - r "fail_wujud('.env') || copy('.env.example', '.env');" Memuatkan repositori komposer dengan maklumat pakej Mengemas kini kebergantungan (termasuk memerlukan-dev) Operasi pakej: 97 pemasangan, 0 kemas kini, 0 pengalihan keluar Memasang voku/portable-ascii (1.5.2): Memuat turun (100%) Memasang symfony/polyfill-ctype (v1 .17.1): Memuat turun (100%) Memasang phpoption/phpoption (1.7.4): Memuat turun (100%) Memasang vlucas/phpdotenv (v4.1.7): Memuat turun (100%) Memasang symfony/css-selector (v5.1.2) : Memuat turun (100%) ....

Apabila pemasangan selesai, pergi ke direktori akar aplikasi dan kemudian jalankan Laravel tukang arahan untuk mengesahkan bahawa semua komponen dipasang dengan betul:

cd LaravelApp/ php artisan
Pengeluaran: Rangka Kerja Laravel 7.18.0 Penggunaan: arahan [options] [argumen] Pilihan: -h, --help Paparkan mesej bantuan ini -q, --quiet Jangan keluarkan sebarang mesej -V, --version Paparkan versi aplikasi ini --ansi Paksa keluaran ANSI --no-ansi Lumpuhkan keluaran ANSI -n, --no-interaction Jangan tanya sebarang soalan interaktif --env[=ENV] Persekitaran arahan harus dijalankan di bawah -v|vv|vvv, --verbose Increase verbositi mesej: 1 untuk keluaran biasa, 2 untuk keluaran lebih bertele-tele dan 3 untuk nyahpepijat ....

Output ini mengesahkan bahawa pemasangan telah berjaya dan semua fail telah disediakan dan alat baris arahan Laravel berfungsi dengan baik. Walau bagaimanapun, kami masih perlu mengkonfigurasi aplikasi untuk menyediakan pangkalan data dan beberapa tetapan lain.

Konfigurasi Aplikasi Laravel

Fail konfigurasi Laravel terletak dalam direktori yang dipanggil konfigurasi di dalam direktori akar aplikasi. Selain itu, apabila kami memasang Laravel melalui Komposer, ia mencipta fail persekitaran yang dipanggil '.env' dalam direktori akar aplikasi. Fail persekitaran termasuk konfigurasi khusus persekitaran dan ia diutamakan berbanding tetapan dalam fail konfigurasi biasa yang terletak di dalam direktori konfigurasi.

Nota: Fail konfigurasi persekitaran mengandungi maklumat sensitif tentang pelayan anda seperti kata laluan pangkalan data, kekunci aplikasi Laravel dll. Oleh itu, ia tidak boleh dikongsi secara terbuka.

Kami kini akan mengedit .env fail untuk menukar konfigurasi dan menambah bukti kelayakan pangkalan data kepadanya. Buka fail menggunakan editor nano dengan menjalankan:

nano .env

Terdapat banyak pembolehubah konfigurasi dalam ini .env fail. Kami tidak perlu menukar setiap satu daripadanya, kerana Komposer telah mengkonfigurasi kebanyakan tetapan secara automatik. Jadi, berikut ialah senarai beberapa pembolehubah konfigurasi utama yang mesti anda ketahui:

  • APP_NAME: Nama aplikasi yang digunakan untuk pemberitahuan dan mesej, jadi kami akan menetapkannya kepada 'LaravelApp'.
  • APP_ENV: Pembolehubah ini digunakan untuk menunjukkan persekitaran aplikasi semasa. Ia boleh ditetapkan kepada persekitaran tempatan, pembangunan, ujian atau pengeluaran. Kami akan menetapkannya kepada persekitaran pembangunan buat masa ini.
  • APP_KEY: Kunci aplikasi unik yang digunakan untuk mencipta garam dan cincang untuk apl web. Ia dijana secara automatik apabila anda memasang Laravel melalui Komposer, jadi tidak perlu mengubahnya.
  • APP_DEBUG: Ia boleh ditetapkan kepada sama ada benar atau salah, bergantung pada jika anda ingin memaparkan ralat pada sisi klien. Tetapkannya kepada palsu apabila anda beralih ke persekitaran pengeluaran.
  • APP_URL: URL atau IP asas untuk aplikasi, tukarkannya kepada nama domain anda jika anda mempunyai satu untuk apl Laravel anda atau biarkan ia tidak disentuh buat masa ini.
  • DB_DATABASE: Nama pangkalan data yang anda ingin gunakan dengan aplikasi Laravel. Kami akan menggunakan pangkalan data MySQL 'laravel' yang kami buat semasa mengkonfigurasi MySQL.
  • DB_USERNAME: Nama pengguna untuk menyambung ke pangkalan data. Kami akan menggunakan pengguna MySQL 'laravel_user' yang kami buat.
  • DB_PASSWORD: Kata laluan untuk menyambung ke pangkalan data.
 APP_NAME= LaravelApp APP_ENV= pembangunan APP_KEY= base64:Application_unique_key APP_DEBUG=benar APP_URL= //domain_atau_IP LOG_CHANNEL=tindanan DB_CONNECTION=mysql DB_HOST=127.0.0.1 DB_PORT=3306 DB_DATABASE=laravel DB_USERNAME= pengguna_laravel DB_PASSWORD= pas ujian

Buat perubahan pada .env fail dengan sewajarnya dan apabila anda selesai mengedit, simpan dan keluar fail dengan menggunakan CTRL+X kemudian tekan Y dan tekan enter untuk mengesahkan. Kini, yang tinggal hanyalah mengkonfigurasi pelayan Apache dan mencipta hos maya untuk aplikasi Laravel kami.

Menyediakan Pelayan Web Apache

Kami telah memasang Laravel dalam folder tempatan direktori rumah pengguna. Walaupun ini berfungsi dengan baik untuk pembangunan tempatan, amalan disyorkan untuk menempatkan direktori aplikasi web /var/www. Sebab mengapa kami tidak memasang Laravel /var/www secara langsung adalah kerana ia dimiliki oleh root dan Komposer tidak boleh digunakan dengan sudo.

Jadi gunakan mv arahan untuk mengalihkan folder aplikasi Laravel dan kandungannya ke /var/www:

sudo mv ~/Laravel/ /var/www

Direktori LaravelApp dimiliki oleh pengguna, jadi anda masih boleh mengedit dan membuat perubahan pada fail tanpa menggunakan sudo perintah. Tetapi pelayan web Apache memerlukan akses kepada cache dan direktori storan aplikasi kerana Laravel menyimpan fail yang dijana aplikasi di dalamnya. Tukar pemilik folder ini kepada www-data pengguna menggunakan chown perintah:

sudo chown -R www-data.www-data /var/www/LaravelApp/storage sudo chown -R www-data.www-data /var/www/LaravelApp/bootstrap/cache

Selepas menukar pemilik direktori ini, dayakan Apache mod_rewrite kerana ia dikehendaki oleh Laravel untuk mengubah URL dengan betul untuk ditafsirkan oleh fungsi penghalaannya melalui .htaccess fail.

sudo a2enmod tulis semula

Seterusnya, kita perlu menyediakan hos maya untuk aplikasi Laravel. Konfigurasi hos maya terletak di /etc/apache2/sites-available. Kami akan mengedit fail hos maya lalai untuk menggunakan aplikasi Laravel. Buka fail konfigurasi hos maya lalai menggunakan editor nano:

sudo nano /etc/apache2/sites-available/000-default.conf

Tukar akar dokumen daripada /var/www/html kepada /var/www/LaravelApp/public dan tambahkan coretan berikut di bawah baris DocumentRoot:

 AllowOverride Semua 

awak 000-default.conf sepatutnya kelihatan seperti ini sekarang dengan sedikit ulasan.

 ServerAdmin webmaster@localhost DocumentRoot /var/www/LaravelApp/public AllowOverride All ErrorLog ${APACHE_LOG_DIR}/error.log CustomLog ${APACHE_LOG_DIR}/access.log digabungkan 

Mulakan semula pelayan web Apache dengan menjalankan arahan berikut:

sudo systemctl mulakan semula apache2

Sekarang pergi ke penyemak imbas anda dan taip alamat IP pelayan Ubuntu 20.04 anda. Anda akan melihat halaman mula Laravel dan bukannya halaman alu-aluan Apache lalai.

Dengan mengandaikan anda telah mengikuti panduan ini setakat ini, anda sepatutnya mempunyai aplikasi Laravel yang berfungsi dengan pangkalan data MySQL dipanggil laravel untuk ia. Dari sudut ini, anda boleh mula membangunkan aplikasi Laravel anda sendiri. Untuk mengetahui lebih lanjut tentang rangka kerja Laravel dan penggunaannya, lawati halaman dokumen Laravel.