Deploy laravel lên AWS ubuntu instance(p1)

Hôm nay mình sẽ chia sẻ với các bạn cách deploy Laravel project lên AWS ubuntu instance. Trong phần này mình sẽ giới thiệu với các bạn các thao tác trên server, ok bắt đầu nhé.

Chuẩn bị

Các bạn cần có 1 tài khoản aws, trong bài viết này mình sẽ sử dụng tài khoản aws free 1 năm, các bạn cũng có thể đăng ký tại trang chủ của AWS, đăng ký rất đơn giản chỉ cần nhập thông tin và thẻ visa. Sau khi đăng ký các bạn xong thì hãy tạo 1 instance(ubuntu) trong EC2 service, mình sẽ không đi chi tiết vào phần này.

Chú ý: khi tạo instance nhớ add thêm rule http trong tab Configure Security Group và khi tạo instance aws sẽ cấp chúng ta 1 private key bằng 1 file .pem

SSH vào server tạo tài khoản và thiết lập SSH

Đầu tiên kết nối với EC2 instance bằng cách sử dụng private key mà aws cung cấp cho chúng ta.

ssh -i mykey.pem [email protected]

Tiếp theo, chúng ta sẽ tạo user. Chúng ta sẽ chỉ định rõ đường dẫn home, shell mặc định sẽ sử dụng bash và thêm user vào trong admin group

sudo adduser --home /home/cuong --shell /bin/bash --ingroup admin *username*

Sau khi thêm mới user, chúng ta sẽ thêm quyền sudo cho user và user sẽ không cần nhập khẩu khi sử dụng sudo bằng cách thêm đoạn sau đây vào trong file /etc/sudoers

# Mở file
sudo nano /etc/sudoers
# Thêm dòng này
username ALL=(ALL) NOPASSWD:ALL

Tiêp theo, chúng ta sẽ thiết lập SSH. Bây giờ, chúng ta sẽ copy file chứa ssh key của máy lên server, nếu máy bạn chưa có file ssh key thì có thể xem cách tạo tại đây setup ssh key on ubuntu

scp -i mykey.pem ~/.ssh/id_rsa.pub [email protected]:/tmp/

Quay lại server vào copy file này vào thư mục home của user chúng ta vừa tạo.

su username
cd ~
mkdir .ssh
cat /tmp/id_rsa.pub > .ssh/authorized_keys
chmod 600 .ssh/*
chmod 700 .ssh/

Bây giờ chúng ta có thể kết nối vào server bằng user mà chúng ta vừa tạo và không cần nhập mật khẩu

ssh [email protected]

Cài đặt Web Server

Trong bài viết này mình sẽ sử dụng Apache và PHP 7.2

Cài đặt Apache web server bằng lệnh sau

sudo apt-get install apache2

Sau khi cài đặt hoàn tất, bạn có thể start Apache

sudo systemctl start apache2

Ngoài ra, bạn có thể kích hoạt tự động mở Apache mỗi khi server khởi động bằng lệnh sau

sudo systemctl enable apache2

Kiểm tra trạng thái của Apache

sudo systemctl status apache2

Tiếp theo, chúng ta cài đặt Ondřej Surý’s PPA do PHP 7.2 được cài đặt bằng Ondřej Surý’s PPA

sudo apt-get install software-properties-common python-software-properties
sudo add-apt-repository -y ppa:ondrej/php
sudo apt-get update

Cài đặt php 7.2 bằng lệnh sau

sudo apt-get install php7.2 php7.2-cli php7.2-common

Cài đặt các php 7.2 extensions cần thiết

sudo apt-get install php7.2-curl php7.2-gd php7.2-json php7.2-mbstring php7.2-intl php7.2-mysql php7.2-xml php7.2-zip

Kiểm tra php version

php -v

Thêm Swap cho server

Mặc định khi tạo EC2 ubuntu instance nó không tạo swap cho mình nên mình sẽ chia sẻ thêm phần này.

Để chắc chắn, chúng ta sẽ kiểm tra xem server có swap chưa

free -m
              total       used       free     shared    buffers     cached
Mem:          3953        154       3799          0          8         83
-/+ buffers/cache:         62       3890
Swap:            0          0          0

Kiểm tra dung lượng ổ cứng

df -h
Filesystem      Size  Used Avail Use% Mounted on
/dev/vda         59G  1.3G   55G   3% /
none            4.0K     0  4.0K   0% /sys/fs/cgroup
udev            2.0G   12K  2.0G   1% /dev
tmpfs           396M  312K  396M   1% /run
none            5.0M     0  5.0M   0% /run/lock
none            2.0G     0  2.0G   0% /run/shm
none            100M     0  100M   0% /run/user

Ở đây server chưa có swap và ổ cứng vẫn còn trống 55Gb.

Tiếp theo mình sẽ tạo swap 4Gb bằng lệnh sau

sudo fallocate -l 4G /swapfile

Chúng ta có thể xác nhận lại dụng lượng swap bằng lệnh

ls -lh /swapfile
-rw-r--r-- 1 root root 4.0G Apr 28 17:19 /swapfile

Chúng ta cần điểu chỉnh lại quyền cho swapfile để bất kỳ ai cũng không đọc được

sudo chmod 600 /swapfile

Kiểm tra lại quyền của swapfile

ls -lh /swapfile
-rw------- 1 root root 4.0G Apr 28 17:19 /swapfile

File swap đã sẵn sàng nên chúng ta sẽ kích hoạt swap bằng lệnh

sudo mkswap /swapfile
sudo swapon /swapfile

Bây giờ chúng ta kiểm tra lại xem server đã có swap chưa

free -m
             total       used       free     shared    buffers     cached
Mem:          3953        101       3851          0          5         30
-/+ buffers/cache:         66       3887
Swap:         4095          0       4095

Cài đặt Composer và Laravel

Cài đặt Composer

curl -sS https://getcomposer.org/installer | php
mv composer.phar /usr/bin/composer

Cài đặt Laravel thông qua composer. Ở đây chúng ta sử dụng Apache nên sẽ tạo project trong thư mục /var/www/html

composer create-project laravel/laravel /var/www/html/my-app

Điểu chỉnh quyền cho project

chown -R www-data:www-data /var/www/html/my-app

chmod -R 755 /var/www/html/my-app/storage

Thiết lập Document Root Mở config của Apache

sudo nano /etc/apache2/sites-available/000-default.conf

Sửa document root

DocumentRoot /var/www/html/my-app/public

Sau đó restart lại Apache

sudo systemctl restart apache2

Ok bây giờ chúng ta sẽ truy cập vào IP hoặc public dns của server để xem kết quả.

Trong phần này mình đã giới thiệu với các bạn cách thao tác với server, trong phần sau mình sẽ chia sẻ với các bạn cách viết script deploy cho Laravel. Thank for reading!!!!!!!!