Pada artikel sebelumnya, kami telah menjelaskan cara upload Laravel ke cPanel hosting. Dalam artikel ini, kami akan berbagi tutorial tentang cara upload Laravel ke VPS Ubuntu dengan Nginx sebagai Web server.
Sebelum mengupload Laravel di VPS Ubuntu, pastikan bahwa Anda telah menyiapkan VPS dengan sistem operasi Ubuntu 20.04 atau 22.04. Setelah itu, ada beberapa konfigurasi awal yang perlu dilakukan untuk persiapan sistemnya. Berikut langkah-langkahnya.
Step 1. Mempersiapkan VPS Ubuntu
Berikut adalah beberapa hal yang perlu anda lakukan, sebelum mengupload file laravel ke VPS Ubuntu. Dalam artikel ini, kami menggunakan VPS KVM dari Rumahweb Indonesia.
1. Install Nginx
Silakan menginstall Nginx di Ubuntu 20.04 Anda terlebih dahulu. Anda dapat mengikuti panduan instalasinya disini.
2. Konfigurasi tambahan UFW
Cek Status UFW dengan perintah berikut:
sudo ufw status
Apabila Anda belum mengaktifkan “Nginx HTTPS” dan “OpenSSH”, silakan diaktifkan terlebih dahulu. Contoh perintah untuk mengaktifkannya adalah sebagai berikut.
sudo ufw allow 'Nginx HTTPS'
sudo ufw allow 'OpenSSH'
Aktifkan UFW menggunakan perintah berikut:
sudo ufw enable
Untuk memastikan bahwa service Nginx telah berjalan, kita bisa melakukan pengecekan status dengan perintah berikut ini:
systemctl status nginx
Jika semuanya berjalan, maka akan tampil informasi berikut ini:
Output
? nginx.service - A high performance web server and a reverse proxy server
Loaded: loaded (/lib/systemd/system/nginx.service; enabled; vendor preset: enabled)
Active: active (running) since Fri 2020-02-20 16:08:19 UTC; 3 days ago
Docs: man:nginx(8)
Main PID: 2369 (nginx)
Tasks: 2 (limit: 1153)
CGroup: /system.slice/nginx.service
??2369 nginx: master process /usr/sbin/nginx -g daemon on; master_process on;
??2380 nginx: worker process
3. Konfigurasi Virtual Host
Setelah menginstal Nginx web server, Anda perlu melakukan konfigurasi virtual host Nginx. Virtual host ini diperlukan untuk memetakan domain yang sudah Anda pointing sebelumnya ke IP address server.
Untuk membuat konfigurasi virtual host Nginx, jalankan perintah berikut:
nano /etc/nginx/sites-available/namadomain.com
Ubah namadomain.com pada perintah diatas menjadi nama domain yang Anda setting. Kemudian isikan baris konfigurasi berikut:
server {
listen 80;
root /var/www/namadomain.com;
index index.html index.htm; #
server_name namadomain.com www.namadomain.com; # Domain name of this site
location / {
try_files $uri $uri/ =404;
}
}
Simpan file dengan menekan tombol Ctrl+X, ketik Y, Enter. Pada bagian root bisa disesuaikan dengan lokasi yang Anda sukai. Semisal, ingin diarahkan ke /var/www/namadomain.com, maka Anda harus membuat terlebih dahulu direktori tersebut:
mkdir /var/www/namadomain.com
Buat file sampel, dan isi dengan tulisan apapun yang Anda suka
nano /var/www/namadomain.com/index.html
Aktifkan konfigurasi virtual host yang sudah dibuat dengan menjalankan perintah berikut:
ln -s /etc/nginx/sites-available/namadomain.com /etc/nginx/sites-enabled/
Terakhir, reload servis Nginx dengan menjalankan perintah berikut:
sudo systemctl reload nginx
4. Install Database MySQL
Untuk install database mysql, Anda bisa menggunakan perintah berikut:
sudo apt install mysql-server
Saat diminta konfirmasi instalasi, silakan klik Y. Kemudian klik ENTER. Setelah instalasi selesai, Anda akan diminta untuk menjalankan skrip keamanan yang sudah diinstall. Skrip ini akan menghapus beberapa pengaturan default yang tidak aman.
Perintah instalasinya sebagai berikut:
sudo mysql_secure_installation
Setelah itu ada tawaran untuk membuat password MySQL, tekan Y.
VALIDATE PASSWORD COMPONENT can be used to test passwords
and improve security. It checks the strength of password
and allows the users to set only those passwords which are
secure enough. Would you like to setup VALIDATE PASSWORD component?
Press y|Y for Yes, any other key for No: Y
Setelah itu akan ada parameter level kekuatan password. Pilih 1 untuk yang Medium, 2 untuk yang strong.
There are three levels of password validation policy:
LOW Length >= 8
MEDIUM Length >= 8, numeric, mixed case, and special characters
STRONG Length >= 8, numeric, mixed case, special characters and dictionary file
Please enter 0 = LOW, 1 = MEDIUM and 2 = STRONG: 1
Hapus pengaturan standar dengan tekan Y.
By default, a MySQL installation has an anonymous user,
allowing anyone to log into MySQL without having to have
a user account created for them. This is intended only for
testing, and to make the installation go a bit smoother.
You should remove them before moving into a production
environment.
Remove anonymous users? (Press y|Y for Yes, any other key for No) : Y
Lanjutkan tekan Y.
Normally, root should only be allowed to connect from
'localhost'. This ensures that someone cannot guess at
the root password from the network.
Disallow root login remotely? (Press y|Y for Yes, any other key for No) : Y
Lanjutkan tekan Y.
Normally, root should only be allowed to connect from
'localhost'. This ensures that someone cannot guess at
the root password from the network.
Disallow root login remotely? (Press y|Y for Yes, any other key for No) : Y
Success.
Hapus tables, tekan Y.
Reloading the privilege tables will ensure that all changes
made so far will take effect immediately.
Reload privilege tables now? (Press y|Y for Yes, any other key for No) : Y
Bila sudah menjumpai tampilan All done! , maka sudah selesai setup MySQLnya.
5. Install PHP dan dependensi tambahan
Langkah selanjutnya, Anda dapat melakukan install php dan dependensi tambahan. Pada perintah berikut, kami akan menginstall php 8.2. Berikut perintah lengkapnya untuk update package manager dan upgradenya.
# sudo apt update && sudo apt upgrade -y
# sudo apt install software-properties-common
# sudo add-apt-repository ppa:ondrej/php
# sudo apt update
# sudo apt install php8.2-fpm
# php-fpm8.2 -v
# sudo apt install php8.2-sqlite3
Selanjutnya, Anda perlu menginstall versi php dengan modul ekstensi yang dibutuhkan dengan perintah:
sudo apt install php8.2-common php8.2-mysql php8.2-xml php8.2-xmlrpc php8.2-curl php8.2-gd php8.2-imagick php8.2-cli php8.2-dev php8.2-imap php8.2-mbstring php8.2-opcache php8.2-soap php8.2-zip php8.2-redis php8.2-intl php8.2-fpm php8.2-bcmath -y
6. Membuat Database dan User Database
Untuk membuat database dan usernya, silakan anda login terlebih dahulu ke database server Anda dengan perintah berikut:
sudo mysql
Buat database baru dari MySQL Console. Ganti example_database dengan nama database yang akan Anda gunakan.
CREATE DATABASE example_database;
Membuat user databases. Ganti example_user dengan nama user database yang akan Anda gunakan. Untuk bagian password, silakan ditulis password user database Anda.
CREATE USER 'example_user'@'%' IDENTIFIED WITH mysql_native_password BY 'password';
Memberi permission pada database. Ganti example_database dan example_user menjadi nama database dan user database Anda.
GRANT ALL ON example_database.* TO 'example_user'@'%';
Sampai tahap ini, proses pembuatan database dan usernya telah selesai. Selanjutnya, Anda dapat keluar dari MySQL dengan perintah:
exit
Pastikan Anda telah mencatat nama database, user database, dan password yang telah dibuat di perintah sebelumnya.
Step 2. Download dan Install Composer
Tahap selanjutnya adalah melakukan download dan install composer di VPS. Caranya, masuk ke Home Directory Website Anda. (Ganti namadomain.com dengan nama domain Anda).
# cd /var/www/namadomain.com
Install Composer menggunakan perintah Curl berikut:
# curl -sS https://getcomposer.org/installer -o /tmp/composer-setup.php
Untuk menginstal composer secara global, gunakan perintah berikut yang akan mendownload dan menginstal Composer sebagai perintah seluruh sistem bernama composer, di /usr/local/bin:
# sudo php /tmp/composer-setup.php --install-dir=/usr/local/bin --filename=composer
Test Instalasi
composer
Step 3. Create Project Laravel
Langkah selanjutnya Anda membuat project Laravel di VPS.
- Masuk ke folder kerja Laravel Anda.
# cd /var/www/namadomain.com
- Hapus file index.html yang telah dibuat tadi.
# rm index.html
- Buat Projek Laravel.
# composer create-project --prefer-dist laravel/laravel .
- Set Permission chwon dan chmod pada folder dan file laravelnya.
# sudo chown -R www-data:www-data /var/www/namadomain.com
# sudo chmod -R 755 /var/www/namadomain.com/storage
- Edit file hosts.
# nano /etc/nginx/sites-available/namadomain.com
Ubah menjadi berikut:
server {
listen 80;
server_name namadomain.com;
root /var/www/namadomain.com/public;
add_header X-Frame-Options "SAMEORIGIN";
add_header X-XSS-Protection "1; mode=block";
add_header X-Content-Type-Options "nosniff";
index index.html index.htm index.php;
charset utf-8;
location / {
try_files $uri $uri/ /index.php?$query_string;
}
location = /favicon.ico { access_log off; log_not_found off; }
location = /robots.txt { access_log off; log_not_found off; }
error_page 404 /index.php;
location ~ \.php$ {
fastcgi_pass unix:/var/run/php/php8.2-fpm.sock;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $realpath_root$fastcgi_script_name;
include fastcgi_params;
}
location ~ /\.(?!well-known).* {
deny all;
}
}
- Cek Syntaks konfigurasi dengan perintah:
sudo nginx -t
Output yang diharapkan adalah sebagai berikut:
Outputnginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful
- Reload service NGINX.
sudo systemctl reload nginx
- Tes Akses websitenya menggunakan url namadomain.com.
Sampai disini server Ubuntu dengan web server Nginx sudah siap digunakan untuk laravel. Langkah selanjutnya adalah upload laravel ke VPS Ubuntu yang telah Anda siapkan.
Step 4. Upload Laravel ke VPS Ubuntu
Berikut adalah cara upload file Laravel dari localhost ke server. Pastikan bahwa Anda telah membuat project laravel di localhost terlebih dahulu. Jika belum, pelajari panduan berikut untuk membuat project laravel di localhost.
Setelah itu, ikuti langkah berikut:
1. Upload project Laravel
Silakan upload semua file projek laravel Anda beserta databasenya ke Google Drive. Silakan di zip dahulu supaya tidak ada file yang tertinggal.
2. Kosongkan Directory /var/www/namadomain.com
Directory /var/www/namadomain.com adalah directory letak file laravel yang akan diupload di server. Sebelum upload file laravelnya disana, silakan hapus semua file dan folder di directory tersebut. Langkahnya Masuk ke directory /var/www/ dengan perintah.
cd /var/www/
Hapus namadomain.com Anda sebelumnya.
rm -rf namadomain.com
Buat folder nama domain Anda kembali.
mkdir namadomain.com
Masuk ke folder nama domain Anda.
cd /var/www/namadomain.com
Set permission dengan perintah:
sudo chown -R www-data:www-data /var/www/namadomain.com
3. Download File Laravel Anda
Masuk ke folder nama domain Anda.
cd /var/www/namadomain.com
Download file laravel dari Google Drive. Panduannya bisa dicek di link cara download file Google Drive ke hosting.
4. Lakukan Konfigurasi Laravel
Extract file laravel Anda.
unzip namafileAnda.zip
Pastikan file website Laravel berada tepat di dalam direktory /var/www/namadomain.com
Edit file .env kemudian sesuaikan konfig databasenya
nano .env
Sesuaikan nama database, user database, dan passwordnya sesuai yang telah dibuat pada langkah Membuat Database dan User Database.
5. Akses website Anda
Selamat sampai disini langkah upload file Laravel di Ubuntu 20.04 dengan web server Nginx sudah selesai diproses. Akses website Anda melalui browser.
Sampai tahap ini, proses upload laravel ke VPS Ubuntu telah selesai. Selanjutnya, Anda bisa mengelola file project laravel Anda di VPS.
Demikian tadi panduan kami tentang cara upload Laravel ke VPS Ubuntu 20.04, semoga bermanfaat.