LAMP ในที่นี้เราหมายถึง Linux, Apache2, MySQL และ PHP ที่จะทำการติดตั้งบน OS Ubuntu 17.10 และ Yii2 ในที่นี้เราหมายถึง Basic Project Template

เริ่มจากติดตั้ง Apache2:

$ sudo apt update
$ sudo apt install apache2

ตรวจสอบการติดตั้ง:
ถ้าเราเปิด browser แล้วเรียก localhost ก็จะพบกับความพร้อมของ Apache2 ในทันที

$ which apache2
$ apache2 -v

ติดตั้ง MySQL Server:

$ sudo apt install mysql-server

ตรวจสอบการติดตั้ง:

$ mysql --version

เพิ่มความปลอดภัยสำหรับการติดตั้ง ‣ ดูรายละเอียดได้ที่ dev.mysql.com

$ sudo mysql_secure_installation
Would you like to setup VALIDATE PASSWORD plugin? - Y
There are three levels of password validation policy: - เลือกเป็น level 1 หรือ 2 แล้วใช้ password ที่ซับซ้อนตามระดับที่เลือก
Remove anonymous users? - Y
Disallow root login remotely? - Y
Remove test database and access to it? - Y
Reload privilege tables now? - Y

ติดตั้ง PHP:

$ sudo apt install php libapache2-mod-php php-mysql

ตรวจสอบการติดตั้ง:

$ php -v
$ php -i

ตัวอย่างไฟล์ info.php

<?php
phpinfo();
?>

ติดตั้ง phpMyAdmin:

$ sudo apt install phpmyadmin
Web server to reconfigure automatically: - [*] apache2
Configure database for phpmyadmin with dbconfig-common? - Yes

ข้อสำคัญ: กด SPACE BAR เพื่อเลือก Apache2 ด้วยนะครับ ต้องมีดอกจันอยู่ในตัวเลือกสีแดงนั้นด้วย - ลองใช้ SPACE BAR และ TAB ดูจะเข้าใจ แต่ถ้าต้องแก้ไขการเรียกใช้ก็ทำได้เองตามนี้:

(พิเศษ) แก้ไขการเรียกใช้ phpMyAdmin:

$ echo 'Include /etc/phpmyadmin/apache.conf' | sudo tee -a /etc/apache2/apache2.conf
$ sudo systemctl restart apache2.service

ติดตั้ง Composer

ในแบบ Global

$ cd ~
$ php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');"
$ php -r "if (hash_file('SHA384', 'composer-setup.php') === '544e09ee996cdf60ece3804abc52599c22b1f40f4323403c44d44fdfdd586475ca9813a858088ffbc1f233e9b180f061') { echo 'Installer verified'; } else { echo 'Installer corrupt'; unlink('composer-setup.php'); } echo PHP_EOL;"
$ php composer-setup.php
$ php -r "unlink('composer-setup.php');"
$ sudo mv composer.phar /usr/local/bin/composer

ติดตั้ง Plugin:

$ composer global require "fxp/composer-asset-plugin:~1.3"

เปลี่ยนในส่วนของ /var/www

$ sudo chown -R www-data:www-data /var/www
$ sudo chmod -R 775 /var/www
$ sudo adduser $USER www-data

ข้อสำคัญ: adduser จะมีผลต้อง logout ก่อนแล้ว login กลับเข้ามาใหม่นะครับ

ติดตั้ง Yii2:

ใช้ Basic Template สร้างโปรเจคชื่อ hello

$ cd /var/www
$ composer create-project --prefer-dist yiisoft/yii2-app-basic hello

ปรับเปลี่ยน Apache

$ sudo nano /etc/apache2/sites-available/hello.conf
<VirtualHost *:80>
 ServerName yourdomain.com
# Set document root to be "basic/web"
DocumentRoot "/var/www/hello/web"
<Directory "/var/www/hello/web">
    # use mod_rewrite for pretty URL support
    RewriteEngine on
    # If a directory or a file exists, use the request directly
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    # Otherwise forward the request to index.php
    RewriteRule . index.php
</Directory>
</VirtualHost>
$ sudo a2enmod rewrite
$ sudo a2ensite hello.conf
$ sudo a2dissite 000-default.conf
$ sudo systemctl reload apache2

(พิเศษ) ใช้ Pretty URL : ที่ไฟล์ hello/config/web.php ให้เอา comment ในส่วนนี้ออก

'urlManager' => [
    'enablePrettyUrl' => true,
    'showScriptName' => false,
    'rules' => [
    ],
],

จากขั้นตอนที่ว่ามานี่ก็จะทำให้เราพร้อมที่จะไปต่อกันกับ Yii2 แล้วนะครับ ‣ ขอให้มีความสุขและสนุกกับการพัฒนาแอปและเขียนโค้ดนะครับทุก ๆ คน