Penjelasan Laravel
Laravel adalah kerangka kerja web open source PHP yang dirancang untuk membuat tugas pengembangan web umum, seperti otentikasi, routing, dan caching, lebih mudah. Deployer adalah alat deployment PHP open-source dengan dukungan out-of-the-box untuk sejumlah kerangka kerja populer, termasuk Laravel, CodeIgniter, Symfony, dan Zend Framework.
Introduction
Deployer mengotomatiskan penerapan dengan menggandakan aplikasi dari repositori Git ke server, menginstal dependensi dengan Composer, dan mengonfigurasi aplikasi sehingga Anda tidak perlu melakukannya secara manual. Ini memungkinkan Anda menghabiskan lebih banyak waktu untuk pengembangan, alih-alih upload dan konfigurasi, dan memungkinkan Anda menerapkan lebih sering.
Dalam tutorial ini, Anda akan menggunakan aplikasi Laravel secara otomatis tanpa downtime apa pun. Untuk melakukan ini, Anda akan mempersiapkan lingkungan pengembangan lokal dari mana Anda akan menyebarkan kode dan kemudian mengkonfigurasi server produksi dengan Nginx dan database MySQL untuk melayani aplikasi.
Prerequisites
Sebelum memulai panduan ini, Anda memerlukan hal-hal berikut:
Satu server Ubuntu 16.04 dengan pengguna non-root dengan hak akses sudo seperti yang dijelaskan dalam Pengaturan Server Awal dengan tutorial Ubuntu 16.04.
Tumpukan LEMP diinstal seperti yang dijelaskan dalam Cara Menginstal Linux, Nginx, MySQL, PHP (LEMP stack) di tutorial Ubuntu 16.04.
PHP, Komposer, dan Git yang diinstal di server Anda dengan mengikuti Langkah 1 dan 2 tentang Cara Menginstal dan Menggunakan Komposer pada Ubuntu 16.04.
Paket php-xml dan php-mbstring diinstal di server Anda. Instal ini dengan menjalankan: sudo apt-get install php7.0-mbstring php7.0-xml.
Server Git
. Anda dapat menggunakan layanan seperti GitLab, Bitbucket atau GitHub. GitLab dan Bitbucket menawarkan repositori pribadi secara gratis, dan GitHub menawarkan repositori pribadi mulai dari $ 7 / bulan. Sebagai alternatif, Anda dapat membuat server Git pribadi dengan mengikuti tutorial Cara Mengatur Server Git Pribadi pada VPS.Nama domain yang mengarah ke server Anda. Cara Mengatur Nama Inang dengan tutorial DigitalOcean dapat membantu Anda mengonfigurasi ini.
Komposer dan Git yang terpasang di komputer lokal Anda juga. Metode pemasangan yang tepat tergantung pada sistem operasi lokal Anda. Petunjuk untuk menginstal Git tersedia di halaman Unduhan proyek Git dan Anda dapat mengunduh Komposer langsung dari situs web proyek Composer.
Step 1 — Menyiapkan Laravel Aplikasi di Lokal
Karena Anda akan membuat dan menerapkan aplikasi Anda dari komputer lokal Anda, mulailah dengan mengkonfigurasi lingkungan pengembangan lokal Anda. Deployer akan mengontrol seluruh proses penerapan dari mesin lokal Anda, jadi mulailah dengan menginstalnya
Note: If you use Windows on your local machine you should use a BASH emulator (like Git bash) to run all local commands.
{: .alert .alert--info}
curl -LO https://deployer.org/deployer.phar
Lalu Masukan Perintah
php -r "if (hash_file('sha1', 'deployer.phar') === '35e8dcd50cf7186502f603676b972065cb68c129') { echo 'Installer verified'; } else { echo 'Installer corrupt'; unlink('deployer.phar'); } echo PHP_EOL;"
Dan Outputnya adalah :
Installer verified
Buat sistem Penyebar tersedia luas. Perhatikan bahwa jika Anda menjalankan Windows atau macOS pada komputer lokal Anda, Anda mungkin perlu membuat direktori /usr/local/bin/dep
sebelum menjalankan perintah ini:
sudo mv deployer.phar /usr/local/bin/dep
Buatlah agar file deployer.phar
bisa di eksekusi :
sudo chmod +x /usr/local/bin/dep
Selanjutnya anda harus membuat aplikasi Laravel di Local
Computer / PC atau MAC.
Contoh disini menginstall Laravel Versi 5.5
composer create-project --prefer-dist laravel/laravel laravel-app "5.5.*"
Anda telah menginstal semua Aplikasi Laravel yang diperlukan di Komputer Local atau Mac
Anda. Dengan itu di tempat, kita akan beralih ke menciptakan repositori Git
untuk aplikasi.
Menghubungkan ke Remote Git Repository Anda
Deployer dirancang untuk memungkinkan pengguna menyebarkan kode dari mana saja. Untuk memungkinkan fungsi ini, diperlukan pengguna untuk memasukkan kode ke repositori di Internet dari mana Penyebar kemudian menyalin kode ke server produksi. Kami akan menggunakan Git, sistem kontrol versi open-source, untuk mengelola kode sumber aplikasi Laravel. Anda dapat terhubung ke server Git menggunakan protokol SSH, dan untuk melakukan ini dengan aman, Anda perlu membuat kunci SSH. Ini lebih aman daripada otentikasi berbasis kata sandi dan biarkan Anda menghindari mengetik kata sandi sebelum setiap penerapan.
Jalankan perintah berikut pada local machine
Anda untuk menghasilkan kunci SSH. Perhatikan bahwa -f menentukan nama file dari file kunci, dan Anda dapat mengganti gitkey
dengan nama file Anda sendiri. Ini akan menghasilkan sepasang kunci SSH (bernama gitkey
dan gitkey.pub
) ke folder ~/.ssh/
.
ssh-keygen -t rsa -b 4096 -f ~/.ssh/gitkey
Ada kemungkinan bahwa Anda memiliki kunci SSH lebih banyak di komputer lokal Anda, jadi konfigurasikan klien SSH untuk mengetahui kunci privat SSH yang akan digunakan ketika tersambung ke server Git Anda.
Buat file konfigurasi SSH di Komputer Lokal Anda:
touch ~/.ssh/config
Buka file dan tambahkan pintasan ke server Git Anda. Ini harus berisi direktif HostName
(menunjuk ke nama host server Git Anda) dan direktif IdentityFile
(menunjuk ke jalur file dari kunci SSH yang baru Anda buat:
Host mygitserver.com
HostName mygitserver.com
IdentityFile ~/.ssh/gitkey
Simpan dan tutup file, lalu batasi izinnya:
chmod 600 ~/.ssh/config
Sekarang klien SSH Anda akan tahu kunci pribadi mana yang digunakan untuk terhubung ke server Git.
Tampilkan konten file kunci publik Anda dengan perintah berikut:
cat ~/.ssh/gitkey.pub
Salin hasilnya dan tambahkan kunci publik ke server Git Anda.
Jika Anda menggunakan layanan hosting Git, baca dokumentasinya tentang cara menambahkan kunci SSH ke akun Anda:
Sekarang Anda akan dapat terhubung ke server Git Anda dengan mesin lokal Anda. Uji koneksi dengan perintah berikut:
ssh -T git@mygitserver.com
Jika perintah ini menghasilkan kesalahan, periksa bahwa Anda telah menambahkan kunci SSH Anda dengan benar dengan merujuk pada dokumentasi layanan hosting Git Anda dan coba hubungkan lagi.
Sebelum mendorong aplikasi ke repositori Git jarak jauh dan menerapkannya, pertama-tama konfigurasikan server produksi.
Mengkonfigurasi Pengguna Penggambaran
Deployer menggunakan protokol SSH untuk secara aman menjalankan perintah di server. Karena alasan ini, langkah pertama yang akan kita ambil untuk mengonfigurasi server produksi adalah membuat pengguna yang dapat digunakan Deployer untuk masuk dan menjalankan perintah di server Anda melalui SSH.
Masuk ke server LEMP Anda dengan pengguna non-root sudo dan buat pengguna baru bernama "deployer" dengan perintah berikut:
sudo adduser deployer
Laravel memerlukan beberapa direktori yang dapat ditulis untuk menyimpan file dan upload yang di-cache, sehingga direktori yang dibuat oleh pengguna deployer harus dapat ditulis oleh server web Nginx. Tambahkan pengguna ke grup www-data
untuk melakukan ini:
sudo usermod -aG www-data deployer
Izin default untuk file yang dibuat oleh pengguna deployer harus 644
untuk file dan 755
untuk direktori. Dengan cara ini, pengguna deployer akan dapat membaca dan menulis file, sementara grup dan pengguna lain akan dapat membacanya.
Lakukan ini dengan mengatur umask default deploy ke 022:
sudo chfn -o umask=022 deployer
Kami akan menyimpan aplikasi di direktori /var/www/html/
, jadi ubah kepemilikan direktori ke pengguna deployer dan grup www-data.
sudo chown deployer:www-data /var/www/html
Pengguna deployer harus dapat memodifikasi file dan folder dalam direktori /var/www/html
. Karena itu, semua file dan subdirektori baru yang dibuat dalam direktori /var/www/html
harus mewarisi id grup folder (www-data). Untuk mencapai ini, atur ID grup pada direktori ini dengan perintah berikut:
sudo chmod g+s /var/www/html
Deployer akan mengkloning repo Git ke server produksi menggunakan SSH, jadi Anda ingin memastikan bahwa koneksi antara server LEMP Anda dan server Git aman. Kami akan menggunakan pendekatan yang sama yang kami gunakan untuk komputer lokal kami, dan kami akan menghasilkan kunci SSH untuk pengguna deployer.
Beralih ke pengguna deployer di server Anda:
su - deployer
Selanjutnya, buat pasangan kunci SSH sebagai pengguna deployer. Kali ini, Anda dapat menerima nama file default dari kunci SSH:
ssh-keygen -t rsa -b 4096
Tampilkan kunci publik:
cat ~/.ssh/id_rsa.pub
Salin kunci publik dan tambahkan ke server Git seperti yang Anda lakukan pada langkah sebelumnya.
Mesin lokal Anda akan berkomunikasi dengan server menggunakan SSH juga, jadi Anda harus menghasilkan kunci SSH untuk pengguna deployer di komputer lokal Anda dan menambahkan kunci publik ke server.
Di Komputer Lokal Anda jalankan perintah berikut. Jangan ragu untuk mengganti deployerkey
dengan nama file pilihan Anda:
ssh-keygen -t rsa -b 4096 -f ~/.ssh/deployerkey
Salin keluaran perintah berikut yang berisi kunci publik:
cat ~/.ssh/deployerkey.pub
Di Server Anda saat pengguna deployer menjalankan yang berikut:
nano ~/.ssh/authorized_keys
Tempel kunci publik ke editor dan tekan CTRL-X
, Y
, lalu ENTER
untuk menyimpan dan keluar.
Batasi izin file:
chmod 600 ~/.ssh/authorized_keys
Sekarang beralih kembali ke pengguna sudo:
exit
Sekarang server Anda dapat terhubung ke server Git dan Anda dapat masuk ke server dengan pengguna deployer dari komputer lokal Anda.
Masuk dari komputer lokal Anda ke server Anda sebagai pengguna deployer untuk menguji koneksi:
ssh deployer@your_server_ip -i ~/.ssh/deployerkey
Setelah Anda masuk sebagai deployer, uji koneksi antara server Anda dan server Git
juga:
ssh -T git@mygitserver.com
Akhirnya, keluar dari server:
exit
Dari sini, kita dapat melanjutkan untuk mengkonfigurasi Nginx dan MySQL di server web kami.
Mengkonfigurasi Nginx
Kami sekarang siap untuk mengkonfigurasi server web yang akan melayani aplikasi. Ini akan melibatkan konfigurasi akar dokumen dan struktur direktori yang akan kita gunakan untuk menyimpan file Laravel. Kami akan mengatur Nginx untuk melayani file kami dari direktori /var/www/laravel
.
Pertama, kita perlu membuat file konfigurasi blok server untuk situs baru.
Masuk ke server sebagai pengguna sudo Anda dan buat file konfigurasi baru. Ingat untuk mengganti example.com dengan nama domain Anda sendiri:
sudo nano /etc/nginx/sites-available/example.com
Tambahkan blok server ke bagian atas file konfigurasi:
#example.com '>/etc/nginx/sites-available/example.com
server {
listen 80;
listen [::]:80;
root /var/www/html/laravel-app/current/public;
index index.php index.html index.htm index.nginx-debian.html;
server_name example.com www.example.com;
}
Kedua listen
arahan di bagian atas memberitahu Nginx port mana untuk didengarkan, dan direktif root
mendefinisikan document root tempat Laravel akan diinstal. current/public
di jalur direktori root adalah tautan simbolik yang menunjuk ke rilis terbaru dari aplikasi. Dengan menambahkan direktif index
, kami memberi tahu Nginx untuk melayani file index.php
terlebih dahulu sebelum mencari rekan HTML mereka saat meminta lokasi direktori. Direktif server_name
harus diikuti oleh domain Anda dan alias apa pun.
Kami juga harus memodifikasi cara Nginx menangani permintaan. Ini dilakukan melalui direktif try_files
. Kami ingin mencoba melayani permintaan sebagai file terlebih dahulu dan, jika tidak dapat menemukan file dengan nama yang benar, harus mencoba untuk melayani file indeks default untuk direktori yang sesuai dengan permintaan. Kegagalan ini, harus melewati permintaan ke file index.php
sebagai parameter query.
server {
listen 80;
listen [::]:80;
root /var/www/html/laravel-app/current/public;
index index.php index.html index.htm index.nginx-debian.html;
server_name example.com www.example.com;
location / {
try_files $uri $uri/ /index.php?$query_string;
}
}
Selanjutnya, kita perlu membuat blok yang menangani eksekusi sebenarnya dari setiap file PHP. Ini akan berlaku untuk semua file yang diakhiri dengan .php. Ini akan mencoba file itu sendiri dan kemudian mencoba untuk meneruskannya sebagai parameter ke file index.php
.
Kami akan mengatur arahan fastcgi
untuk memberi tahu Nginx untuk menggunakan jalur aplikasi yang sebenarnya (diselesaikan setelah mengikuti tautan simbolis), alih-alih tautan simbolis. Jika Anda tidak menambahkan baris ini ke konfigurasi, jalur tempat tautan simbolik akan di-cache, artinya versi lama aplikasi Anda akan dimuat setelah penyebaran. Tanpa arahan ini, Anda harus membersihkan cache secara manual setelah setiap penerapan dan permintaan ke aplikasi Anda berpotensi gagal. Selain itu, fastcgi_pass
directive akan memastikan bahwa Nginx menggunakan soket yang digunakan php7-fpm untuk komunikasi dan file index.php
digunakan sebagai indeks untuk operasi ini.
# example.com '>/etc/nginx/sites-available/example.com
server {
listen 80;
listen [::]:80;
root /var/www/html/laravel-app/current/public;
index index.php index.html index.htm index.nginx-debian.html;
server_name example.com www.example.com;
location / {
try_files $uri $uri/ /index.php?$query_string;
}
location ~ \.php$ {
include snippets/fastcgi-php.conf;
fastcgi_param SCRIPT_FILENAME $realpath_root$fastcgi_script_name;
fastcgi_param DOCUMENT_ROOT $realpath_root;
fastcgi_pass unix:/run/php/php7.0-fpm.sock;
}
}
Akhirnya, kami ingin memastikan bahwa Nginx tidak mengizinkan akses ke file .htaccess
tersembunyi. Kami akan melakukan ini dengan menambahkan satu blok lokasi tambahan yang disebut location ~ / \ an.ht
dan, dalam blok itu, direktif yang menentukan deny all;
.
Setelah menambahkan blok lokasi terakhir ini, file konfigurasi akan terlihat seperti ini:
server {
listen 80;
listen [::]:80;
root /var/www/html/laravel-app/current/public;
index index.php index.html index.htm index.nginx-debian.html;
server_name example.com www.example.com;
location / {
try_files $uri $uri/ /index.php?$query_string;
}
location ~ \.php$ {
include snippets/fastcgi-php.conf;
fastcgi_param SCRIPT_FILENAME $realpath_root$fastcgi_script_name;
fastcgi_param DOCUMENT_ROOT $realpath_root;
fastcgi_pass unix:/run/php/php7.0-fpm.sock;
}
location ~ /\.ht {
deny all;
}
}
Simpan dan tutup file (CTRL-X
, Y
, lalu ENTER
), dan kemudian aktifkan blok server baru dengan membuat tautan simbolis ke direktori yang sites-enabled
:
sudo ln -s /etc/nginx/sites-available/example.com /etc/nginx/sites-enabled/
Uji file konfigurasi Anda untuk kesalahan sintaks:
sudo nginx -t
Jika Anda melihat kesalahan apa pun, kembali dan periksa kembali file Anda sebelum melanjutkan. Mulai ulang Nginx untuk mendorong perubahan yang diperlukan:
sudo systemctl restart nginx
Server Nginx sekarang dikonfigurasi. Selanjutnya, kita akan mengkonfigurasi database MySQL aplikasi.
Mengkonfigurasi MySQL
Setelah instalasi, MySQL menciptakan pengguna root secara default. Pengguna ini memiliki hak yang tidak terbatas, jadi ini adalah praktik keamanan yang buruk untuk menggunakan pengguna root untuk database aplikasi Anda. Sebagai gantinya, kami akan membuat database untuk aplikasi dengan pengguna yang berdedikasi.
Masuk ke konsol MySQL sebagai root:
Top comments (0)