0

Cài đặt LAMP, deploy Laravel project trên server Ubuntu 18.4 trong 10 phút

Xin chào mọi người.

Mình nhận thấy nhiều bạn muốn đưa website lên tên miền nhưng quy trình thường deploy 1 server mới khá mất thời gian. Hôm nay nhân lúc rảnh rỗi mình sẽ hướng dẫn các bạn cài đặt LAMP trên server VPS Ubuntu 18.04 mới hoàn toàn và deploy project Laravel lên server rất nhanh chóng bằng 1 vài script có sẵn.

Nào mình cùng bắt đầu nhé

1. Install Apache2

Đầu tiên mình sẽ cài Apache2 bằng các lệnh dưới,

sudo apt install apache2

Sau khi cài đặt bạn chạy lệnh dưới để kiểm tra nhé:

sudo ufw app list

Và đây là kết quả: List apache2

2. Install MYSQL 5.7

2.1 Install

Tiếp đến mình sẽ cài Mysql 5.7 bằng lệnh dưới

sudo apt install mysql-server-5.7

Và kiểm tra version mysql đã được cài đặt thành công hay chưa?

mysql --version

2.2 Create user and grant permission

Mình sẽ tạo 1 user là admin và password là 123456, sau đó sẽ gán full quyền cho user này

mysql> CREATE USER 'admin'@'localhost' IDENTIFIED BY '123456';
mysql> GRANT ALL PRIVILEGES ON *.* TO 'admin'@'%' IDENTIFIED BY '123456' WITH GRANT OPTION;
mysql> FLUSH PRIVILEGES;

Bạn có thể test login user này bằng command:

mysql -uadmin -p123456

2.3 Bind address for access

Mở file /etc/mysql/mysql.conf.d/mysqld.cnf bằng nano và sửa như bên dưới

nano /etc/mysql/mysql.conf.d/mysqld.cnf

From: bind-address 127.0.0.1 To: bind-address 0.0.0.0

2.4 Opent port 3306

Để mở port 3306 cho bên ngoài truy cập vào, các bạn chạy command dưới:

iptables -I INPUT -p tcp -m tcp --dport 3306 -j ACCEPT

Sau khi sửa bạn đã có thể access vào database bằng tool như Navicat, Mysql Workbend, ... rùi đó

3. Install PHP 7.3

Tiếp theo mình sẽ cài PHP 7.3 lên server.

Do trên 1 số server mới tạo bây giờ không còn để mặc định các package của PHP 7.3 nên mình sẽ phải thêm các package để cài bằng các command dưới:


sudo apt-get install software-properties-common
sudo add-apt-repository -y ppa:ondrej/php
sudo apt update
sudo apt install php7.3 php7.3-fpm php7.3-common php7.3-zip php7.3-curl php7.3-xml php7.3-xmlrpc php7.3-json php7.3-mysql php7.3-pdo php7.3-gd php7.3-imagick php7.3-ldap php7.3-imap php7.3-mbstring php7.3-intl php7.3-cli php7.3-recode php7.3-tidy php7.3-bcmath php7.3-opcache

Sau đó kiểm tra version PHP vừa cài đặt

php -v

Version PHP 7.3

4. Generate SSH

Tiếp theo sẽ là generate ssh key để dùng ssh key này access vào github và clone code trên server:

ssh-keygen -t rsa -b 4096 -C "your-email@gmail.com"

Tiếp theo bạn cứ enter là xong.

Sau đó bạn có thể xem ssh public của bạn bằng command:

cat ~/.ssh/id_rsa.pub

SSH public

5. Add ssh key to github

Tiếp theo bạn login vào Github của mình, vào mục Setting -> SSH and GPG keys Click vào New key và add ssh key public của mình vào đó Add ssh key

Như vậy là trên server của bạn có thể clone được source code trên github rùi!

6. Install composer

Để cài đặt các package của laravel mình sẽ cài composer v2.1.3 mới nhất theo tài liệu ở đây :

php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');"
php -r "if (hash_file('sha384', 'composer-setup.php') === '756890a4488ce9024fc62c56153228907f1545c228516cbf63f885e036d37e9a59d27d63f46af1d4d07ee0f76181c7d3') { echo 'Installer verified'; } else { echo 'Installer corrupt'; unlink('composer-setup.php'); } echo PHP_EOL;"
php composer-setup.php
php -r "unlink('composer-setup.php');"

Sau đó để gõ được lệnh composer ở mọi nơi, mình sẽ dùng lệnh này:

sudo mv composer.phar /usr/local/bin/composer

7. Setup project laravel

Tiếp theo đến mục cài đặt cho project.

  • Di chuyển vào thư mục html
cd /var/www/html/
  • Clone source code từ github
git clone git@github.com:xxx/xxx.git newdomain

Copy đoạn script ngắn này lưu thành script_deploy.shvào thư mục $ROOT/deploy trong project

#Setup new domain
newdomain=$1

cd /var/www/html/$newdomain
composer install

#Config .env
cp .env.example .env && mkdir -p bootstrap/cache storage/framework/{sessions,views,cache}
chmod -R 777 storage bootstrap/cache
git reset --hard

#Replace APP info in .env file
sed -i -s "s/APP_URL=http:\/\/localhost/APP_URL=https:\/\/www.${newdomain}/gI" /var/www/html/$newdomain/.env
sed -i -s "s/APP_ENV=local/APP_ENV=prod/gI" /var/www/html/$newdomain/.env
sed -i -s "s/APP_DEBUG=true/APP_DEBUG=false/gI" /var/www/html/$newdomain/.env
sed -i -s "s/LOG_CHANNEL=stack/LOG_CHANNEL=single/gI" /var/www/html/$newdomain/.env

#Setup database in .env file
sed -i -s "s/DB_DATABASE=homestead/DB_PASSWORD=${newdomain}/gI" /var/www/html/$newdomain/.env
sed -i -s "s/DB_USERNAME=homestead/DB_USERNAME=admin/gI" /var/www/html/$newdomain/.env
sed -i -s "s/DB_PASSWORD=secret/DB_PASSWORD=123456/gI" /var/www/html/$newdomain/.env

#Generate key Laravel
php artisan key:generate

#Config apache
cp deploy/apache.conf /etc/apache2/sites-available/$newdomain.conf
sed -i -s "s/domain/${newdomain}/gI" /etc/apache2/sites-available/$newdomain.conf
sudo a2ensite $newdomain.conf

echo "All done! :D"

** Lưu ý: **

  • Bạn nên sửa lại thông tin DB cho đúng trước khi chạy script nhé

Tiếp theo copy config apache2 vào file apache2.conf vào thư mục $ROOT/deploy

<VirtualHost *:80>
        ServerName www.domain

        ServerAdmin admin@domain
        DocumentRoot /var/www/html/domain/public

        <Directory /var/www/html/domain/public>
                Options FollowSymLinks
                AllowOverride All
                DirectoryIndex index.php
                Require all granted
        </Directory>

#       ErrorLog ${APACHE_LOG_DIR}/error.log
#       CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>
<VirtualHost *:80>
      ServerName domain
      ServerAlias *.domain
      Redirect permanent / https://www.domain/
</VirtualHost>

File config apache2 trên đây là mình config cho cả https bằng cloud flare, nếu bạn nào quan tâm bạn có thể đọc bài viết trước của mình tại đây

Chạy command để run script;

#Thêm quyền excute script
chmod +x deploy/script_deploy.sh

#Run script
./deploy/script_deploy.sh domain-of-you.com

All done! 😄

8. Kết quả

Sau khi chạy command deploy trên, project của bạn đã cài đặt xong, đã config sẵn apache cho domain mới và đã enable domain.

Giờ bạn chỉ việc vào nhà cung cấp tên miền trỏ IP vào server của bạn là xong! Sau đó truy cập vào domain của bạn và thưởng thức!

Bonus

Mình đã dùng qua 2 nhà cung cấp VPS sau và đã thấy nó có các ưu điểm:

  • Dễ sử dụng,
  • Ổn định
  • Giá rẻ
  • Scale bằng 1 click
  • Support rất nhanh! Bạn nào có nhu cầu thì có thể sử dụng qua xem nhé!
  1. Digital Ocean

Digital Ocean

  1. Vultr

Vultr

Thanks for reading!


All rights reserved

Viblo
Hãy đăng ký một tài khoản Viblo để nhận được nhiều bài viết thú vị hơn.
Đăng kí