Setting up LAMP stack and deployment on a VPS
User ထည့်ပြီးရင် LAMP stack သွင်းလို့ရပါပြီ
LAMP Stack Setup
LAMP = Linux + Apache + MySQL + PHP ဆိုတဲ့ stack ကို ထည့်ပါမယ်။ ဒီစာအုပ်မှာ Laravel project ကို နမူနာအနေနဲ့ deploy လုပ်ကြည့်ပါမယ်။ Linux Server က VPS မှာတခါတည်းပါလာပြီးသားဖြစ်တာကြောင့် သွင်းစရာမလိုတော့ပါဘူး။
Apache Installation
Apache2 server, documentation နဲ့ utility program တွေသွင်းပါမယ်
sudo apt install apache2 apache2-doc apache2-utils -yInstall လုပ်တာပြီးတာနဲ့ apache2 service အလုပ် လုပ်/မလုပ် စစ်ကြည့်ပါမယ်
systemctl status apache2Active (running) ဆိုရင် apache2 သွင်းတာအဆင်ပြေပါပြီ။
Apache configuration ဆက်မလုပ်ခင် Ubuntu ရဲ့ Uncomplicated Firewall (UFW) ကို အရင် setup လုပ်ပါမယ်။ ufw Firewall အလုပ်လုပ်နေလား အရင်စစ်ကြည့်ရအောင်
sudo ufw statusStatus: inactiveစစချင်းမှာ inactive လို့ပြနေပါလိမ့်မယ်။ ဒါကြောင့် Firewall setup လုပ်ပေးရပါမယ်။ လက်ရှိရနိုင်တဲ့ Firewall option တွေ ဘာတွေရှိလဲအရင်ခေါ်ကြည့်ပါမယ်
sudo ufw app list- Apache- Apache Full- Apache Secure- OpenSSH
- Apache က Port 80 (HTTP) ကို ဖွင့်ထားပေးတာ
- Apache Full က Port 80 (HTTP) နဲ့ port 443 (HTTPS) နှစ်ခုလုံးကို ဖွင့်ထားပေးတာ
- Apache Secure က Port 443 (HTTPS) ကိုပဲဖွင့်ထားပေးတာ
- OpenSSH က Port 22 (SSH) ကို ဖွင့်ထားပေးတာ
လောလောဆယ်တော့ SSL certificate မသွင်းရသေးတာကြောင့် “Apache” (HTTP port 80 only) ကိုပဲဖွင့်ထားလိုက်ပါမယ်။ Terminal ကနေ SSH နဲ့ဝင်တာကိုလည်း ခွင့်ပြုပေးအောင် OpenSSH ကိုလည်းဖွင့်ထားပါမယ်။
sudo ufw allow in "Apache"sudo ufw allow in "OpenSSH"ပြီးရင် Firewall ကို enable လုပ်ပါမယ်
sudo ufw enableအလုပ် လုပ်/မလုပ် စစ်ကြည့်ပါမယ်
sudo ufw statusApache နဲ့ OpenSSH run နေတာကိုတွေ့နိုင်ပါတယ်။ ဒီအဆင့်ထိပြီးသွားရင် server ip ကို browser ကနေ ဝင်ကြည့်လို့ရပါပြီ။ Browser မှာ http://server_ip ရိုက်ထည့်ပြီးဝင်ကြည့်ပါ။ Apache2 Ubuntu Default Page မြင်ရပါမယ်။
server_ip ကို VPS panel နဲ့ Welcome email မှာပြန်ရှာကြည့်လို့ရပါတယ်။ SSL certificate မသွင်းရသေးလို့ HTTPS နဲ့ ဝင်လို့မရသေးပါဘူး
MySQL Installation
sudo apt install mysql-server -yMySQL server သွင်းပြီးရင် root user password သတ်မှတ်ပေးရပါမယ်။ ဒီမှာပေးရတဲ့ password ဟာ VPS password နဲ့မဆိုင်ဘဲ mysql root user အတွက်သီးသန့် password ဖြစ်ပါတယ်။
VPS password နဲ့ MySQL root password ကိုမတူအောင်ပေးသင့်ပါတယ်။
sudo mysqlဝင်ပြီးရင် root user ကို password အသစ်ထည့်ပါမယ်။ password မှာ လုံခြုံမှုရှိတဲ့ password တစ်ခုနဲ့အစားထိုးပေးပါ
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'password';exitပြီးရင် mysql_secure_installation script ကို run ပါမယ်။
sudo mysql_secure_installationmysql_secure_installation run လိုက်ရင် password တောင်းပါမယ်။ ဒီမှာထည့်ရတဲ့ password က VPS password ဖြစ်ပါတယ်။ mysql password မဟုတ်ပါဘူး။ script သွင်းလိုက်ရင် VALIDATE PASSWORD PLUGIN ကိုသုံးမလားမေးပါလိမ့်မယ်။
- Level 0 = Low အနည်းဆုံး စာလုံး ၈ လုံး
- Level 1 = Medium အနည်းဆုံး စာလုံး ၈ လုံး၊ ဂဏန်းတွေပါ၊ စာလုံးအကြီးအသေးရော၊ special character ပါရမယ်
- Level 2 = Strong level 1 နဲ့တူတူပဲ၊ တခုပိုသွားတာက dictionary ထဲက word ဖြစ်လို့မရဘူး
အခုတော့ 1 ရိုက်ထည့်ပါမယ်။
လက်ရှိ password strength ကို 0 ကနေ 100 scale နဲ့ပြပေးပါမယ်။ Y နှိပ်ပြီးဆက်သွားပါ။
anonymous user remove လုပ်မလားမေးရင် y နှိပ်ပါ။
disable root login remotely မှာ y နှိပ်ပါ။
remove test database မှာ y နှိပ်ပါ။
reload privilege table မှာ y နှိပ်ပါ။
ဒါဆိုရင် MySQL server setup ပြီးပါပြီ။
PHP Installation
sudo apt install php libapache2-mod-php php-mysql -yအသုံးများတဲ့ PHP extension တွေထပ်ထည့်ထားချင်ရင်
sudo apt install php-curl php-json php-cgi php-gd php-mbstring php-xml php-xmlrpc php-zip -yphp install လုပ်ပြီးပြီဆိုရင် အောက်ပါ command နဲ့ version စစ်ကြည့်လို့ရပါတယ်။
php -vApache Virtual Host Setup
Apache က default အနေနဲ့ /var/www/html directory ကို serve လုပ်ပေးပါတယ်။ ဥပမာ index.html ကို /var/www/html/index.html ဆိုပြီးထားလိုက်ရင် website စာမျက်နှာအနေနဲ့မြင်ရပါပြီ။ Website တစ်ခုထဲအတွက်ဆိုရင် အဆင်ပြေပေမယ့် website အများအပြားအတွက်ဆိုရင် virtual hosting ဆိုတဲ့ Apache ရဲ့ feature ကိုသုံးရပါမယ်။
ပထမဆုံး ကိုယ့် website folder ကိုလုပ်ပါမယ်။ yourdomain.com နေရာမှာ ကိုယ့် website domain ထည့်နိုင်ပါတယ်။ လောလောဆယ် domain name မရှိသေးဘူး၊ ဒါမှမဟုတ် DNS record မထည့်ရသေးဘူးဆိုရင်တောင်မှ ရည်ရွယ်ထားတဲ့ domain name အတိုင်း folder ဆောက်လို့ရပါတယ်။
sudo mkdir -p /var/www/yourdomain.com/public_htmlတချို့က directory name မှာ period
.ပါနေတာမကြိုက်ကြဘဲ/var/www/domaincomလို့ပေးတတ်ကြပါတယ်။ အလုပ်လုပ်ပုံချင်းအတူတူပဲမို့ ကိုယ့်အကြိုက်နဲ့ကိုယ် နာမည်ပေးလို့ရပါတယ်။
Log နဲ့ backups folder တွေလည်းလုပ်ထားပါမယ်။
sudo mkdir -p /var/www/yourdomain.com/logsudo mkdir -p /var/www/yourdomain.com/backupsပြီးရင် folder ownership ကို ပြောင်းပါမယ်။
sudo chown -R $USER:$USER /var/www/yourdomain.comဒါဆိုရင် ဒီ folder ထဲမှာ run တဲ့ command တွေကို sudo အမြဲထည့်ဖို့မလိုတော့ပါဘူး။ ဆက်ပြီး Apache ရဲ့ sites-available မှာ yourdomain.com.conf ဆိုတဲ့ file ကိုလုပ်ပါမယ်။
sudo nano /etc/apache2/sites-available/yourdomain.com.confအောက်ပါအတိုင်းထည့်ပါ။ yourdomain.com တွေမှာ ကိုယ့် domain name အစားထိုးပေးပါ။ လောလောဆယ် domain name နဲ့မချိတ်ရသေးလည်း ထည့်ထားလို့ရပါတယ်။
<VirtualHost *:80> ServerName yourdomain.com ServerAlias www.yourdomain.com DocumentRoot /var/www/yourdomain.com/public_html ErrorLog /var/www/yourdomain.com/log/error.log CustomLog /var/www/yourdomain.com/log/access.log combined</VirtualHost>အခုဖန်တီးလိုက်တဲ့ Virtual host ကို enable လုပ်ပါမယ်။
sudo a2ensite yourdomain.com.confမူလ default site ကိုပိတ်ပါမယ်။ Apache သွင်းပြီးပြီးချင်း browser မှာ server ipaddress ရိုက်ထည့်လိုက်ရင် တွေ့ရတဲ့ default စာမျက်နှာကို ပိတ်ဖို့ဖြစ်ပါတယ်။
sudo a2dissite 000-default.confကျွန်တော်တို့ လက်ရှိလုပ်ပြီးသလောက် Apache config တွေမှာ error ရှိမရှိ test လုပ်ပါမယ်။
sudo apache2ctl configtestSyntax OKError မရှိရင် apache ကို reload ပြန်လုပ်ပေးပါမယ်။
sudo systemctl reload apache2ဒီအဆင့်ရောက်ပြီဆို html ရေးပြီးစမ်းကြည့်လို့ရပါပြီ။ document root မှာ HTML ဖိုင်တစ်ခုထည့်လိုက်ပါမယ်။
echo '<h1>Hello</h1>' > /var/www/yourdomain.com/public_html/index.htmlBrowser ကနေ server IP address ကိုဝင်ကြည့်ရင် Hello ဆိုတာကိုမြင်ရပါလိမ့်မယ်။ လောလောဆယ် SSL certificate မသွင်းရသေးလို့ HTTPS နဲ့ဖွင့်လို့ရမှာမဟုတ်သေးပါဘူး။
← Back to blog