

Setting up LAMP stack and deployment on a VPS
Laravel Deployment Setup
ပြီးခဲ့တဲ့အဆင့်တွေအတိုင်းလုပ်ပြီးပြီဆိုရင် PHP, MySQL သုံးတဲ့ ပရောဂျက်တွေ deploy လုပ်လို့ရပါပြီ။ Laravel project တွေအတွက်ဆိုရင်တော့ configure ဆက်လုပ်ရမှာလေးတွေရှိပါတယ်။
Laravel သုံးဖို့လိုအပ်တဲ့ PHP modules တွေ ထပ်ထည့်ပါမယ်။ အသုံးများတဲ့ PHP module တွေထည့်ထားပြီးသားဆိုရင် ထပ်ထည့်ဖို့မလိုတော့ပါဘူး။
sudo apt install php-bcmath php-xml php-fpm php-zip php-intl php-mbstring php-curl php-mysql php-cli unzip -y
PHP ရဲ့ package manager ဖြစ်တဲ့ Composer သွင်းပါမယ်။
curl -sS https://getcomposer.org/installer | phpsudo mv composer.phar /usr/local/bin/composer
Git Installation
Project repo ကို clone လုပ်ဖို့ Git လိုအပ်ပါတယ်။
sudo apt install git -y
Enable Apache rewrite module
Apache server ရဲ့ rewrite module ကိုဖွင့်ပေးပါမယ်။ ပြီးရင် ဆားဗစ် restart လုပ်ပေးပါ
sudo a2enmod rewritesudo systemctl restart apache2
Cloning your Laravel project
ဒီနမူနာမှာတော့ မိမိ Github က ရှိပြီးသား Laravel project တစ်ခုကို clone လုပ်တဲ့အပိုင်းကိုဖော်ပြသွားပါမယ်။
Document root ကိုသွားပြီး clone လုပ်ပါ။ yourusername
နဲ့ your-repo.git
မှာ မိမိ git username နဲ့ repo address အစားထိုးပေးပါ။
cd /var/www/yourdomain.comgit clone https://github.com/yourusername/your-repo.git public_html
Git repo က public မဟုတ်ဘဲ private ဖြစ်နေမယ်ဆိုရင် HTTPS နဲ့ clone တဲ့အခါ email နဲ့ password တောင်းပါလိမ့်မယ်။ အဲဒီအခါ password မှာ github account ရဲ့ password မဟုတ်ဘဲ github account authentication token ကိုထည့်ပေးရမှာပါ
Git repo ကို SSH နဲ့ clone မယ်ဆိုရင်တော့ git operation တိုင်းမှာ login လုပ်ဖို့မလိုတော့ပါဘူး။ SSH နဲ့ clone လို့ရအောင် ကိုယ့်ကွန်ပြူတာမှာ SSH key pair generate လုပ်တုန်းကလိုပဲ VPS ပေါ်မှာ generate လုပ်လို့ရပါတယ်။ VPS ရဲ့ public key ကို github account settings ထဲက SSH and GPG keys မှာသွားထည့်လိုက်ရင် နောက်ပိုင်းအလုပ်မရှုပ်တော့ပါဘူး။
Environment setup
Laravel ပရောဂျက်ရဲ့ .gitignore
ထဲကအတိုင်းပဲ Git repo မှာတင်ထားလိုက်ပြီဆိုရင် .env
၊ node_modules
နဲ့ vendor
folder တွေမပါလာတော့ပါဘူး။ clone လုပ်ယူလိုက်တဲ့နေရာအသစ်မှာ ပြန် install လုပ်ယူရပါမယ်။
အရင်ဆုံး .env.example
ကို .env
အဖြစ် ကော်ပီယူပါမယ်။
cd /var/www/yourdomain.com/public_htmlcp .env.example .env
ပြီးရင် .env file ကိုဖွင့်ပြီး database settings တွေပြင်ဆင်ပါမယ်။
nano .env
အဓိကပြောင်းရမှာတွေက အောက်ပါအတိုင်းဖြစ်ပါတယ်။ ကိုယ့်ဆာဗာရဲ့တန်ဖိုးတွေနဲ့ပြန်အစားထိုးပေးပါ။ လောလောဆယ် MySQL မှာ Laravel project အတွက်သီးသန့် database နဲ့ user မလုပ်ပေးရသေးပေမယ့် database နာမည်အသစ်နဲ့ user, password အသစ်တစ်ခုစီအရင်ထည့်ပေးထားပါ။ ခဏနေရင် mysql cli မှာဆက်လုပ်ပါမယ်။
APP_NAME="Your App Name"APP_ENV=productionAPP_DEBUG=falseAPP_URL=https://yourdomain.com
DB_CONNECTION=mysqlDB_HOST=127.0.0.1DB_PORT=3306DB_DATABASE=yourdatabaseDB_USERNAME=dbusernameDB_PASSWORD=dbpassword
Creating a database and user for Laravel project
Laravel project သုံးဖို့ database တစ်ခုတည်ဆောက်ပေးပါမယ်။ အဲဒီ database အတွက်လည်း db user တစ်ယောက်ထပ်လုပ်ပေးပါမယ်။ mysql root db user ရှိပြီးသားဆိုပေမယ့် best practice တွေအရ နေရာတိုင်းမှာ root user မသုံးဘဲ database တစ်လုံးကို user တစ်ယောက်စီထားတာ ပိုကောင်းပါတယ်။
အရင်ဆုံး MySQL login ဝင်ပါမယ်။
sudo mysql -u root -p
password တောင်းရင် myql root user password ထည့်ပေးပါ။ VPS root user password မဟုတ်ပါဘူး။
ပြီးရင် database နဲ့ user တွေလုပ်ပါမယ်။ yourdatabase
, dbusername
, dbpassword
တွေမှာ တန်ဖိုးအသစ်တွေထည့်ပေးပါ။
CREATE DATABASE yourdatabase;CREATE USER 'dbusername'@'localhost' IDENTIFIED BY 'dbpassword';GRANT ALL PRIVILEGES ON yourdatabase.* TO 'dbusername'@'localhost';FLUSH PRIVILEGES;EXIT;
Installing composer dependencies
cd /var/www/yourdomain.com/public_htmlcomposer install --no-dev --optimize-autoloader
Generate App key
php artisan key:generate
Prapare Laravel storage
php artisan storage:link
Database Migration
php artisan migrate
Laravel Permissions
Laravel project ရဲ့ asset file ၊ cache file တွေကို apache server ကခေါ်သုံးခွင့်ရှိအောင် permission ဖွင့်ပေးရပါမယ်။
sudo chown -R www-data:www-data /var/www/yourdomain.com/public_html/storagesudo chown -R www-data:www-data /var/www/yourdomain.com/public_html/bootstrap/cachesudo chmod -R 775 /var/www/yourdomain.com/public_html/storagesudo chmod -R 775 /var/www/yourdomain.com/public_html/bootstrap/cache
Configure Apache to serve public folder
လောလောဆယ်မှာ project folder တစ်ခုလုံးကို public_html နာမည်နဲ့ clone ထားတာဖြစ်ပါတယ်။ ဒါပေမယ့် browser မှာဖွင့်လိုက်မယ်ဆိုရင် public folder ထဲက ဖိုင်တွေကိုပဲ serve လုပ်ပေးချင်တာဖြစ်ပါတယ်။ ဒါကြောင့် apache configuration မှာ project ထဲက public folder ကို serve လုပ်ပေးဖို့ညွှန်ပြပေးရပါမယ်။
sudo nano /etc/apache2/sites-available/yourdomain.com.conf
ပြီးရင် public ဖိုလ်ဒါကို point လုပ်အောင် ပြင်ဆင်ပါမယ်။
<VirtualHost *:80> ServerName yourdomain.com ServerAlias www.yourdomain.com DocumentRoot /var/www/yourdomain.com/public_html/public
<Directory /var/www/yourdomain.com/public_html/public> Options Indexes FollowSymLinks AllowOverride All Require all granted </Directory>
ErrorLog /var/www/yourdomain.com/log/error.log CustomLog /var/www/yourdomain.com/log/access.log combined</VirtualHost>
ပြီးရင် Apache ကို reload လုပ်ပါမယ်။
sudo systemctl reload apache2
Laravel Caching
Optimization အတွက် caching လုပ်ပါမယ်။
php artisan config:cachephp artisan route:cachephp artisan view:cache
Set server timezone
နောက်ပိုင်းမှာ cron job တွေ run ဖို့ရှိတာ၊ time-sensitive ဖြစ်တဲ့စာမျက်နှာတွေထည့်ချင်တာမျိုးမှာ ဆာဗာနာရီကို မိမိ target user အများစုသုံးတဲ့ timezone အတိုင်းချိန်ညှိပေးဖို့လိုပါတယ်။
sudo timedatectl set-timezone Asia/Yangon
← Back to blog