Xin chào,
Nếu là lần đầu bạn tới với series này, hãy thử bắt đầu theo thứ tự trong danh sách các bài viết thuộc series:
Phần 1: Giới thiệu, đăng ký và thiết lập tài khoản
Còn sau đây là phần 2 của series AWS FROM ZERO.
1. EC2 là gì ?
EC2 - Elastic Compute Cloud là một cơ sở hạ tầng điện toán đám mây được cung cấp bởi Amazon Web Services (AWS) giúp cung cấp tài nguyên máy tính ảo hoá theo yêu cầu.
2. Các tính năng
2.1. Cơ sở hệ tầng toàn cầu
Đa địa điểm: EC2 được cung cấp trên nhiều khu vực (Region) và vùng (Availability Zone) trên toàn thế giới.
Thời gian chính xác cao với Amazon Time Sync Service.
Đa dạng hệ điều hành và phần mềm: bao gồm các bản phân phối Microsoft Windows và Linux như Amazon Linux 2, Ubuntu, Red Hat Enterprise Linux, CentOS, SUSE và Debian.
2.2. Tối ưu hóa chi phí và dung lượng
Chỉ phải trả tiền cho những gì bạn sử dụng: Với mô hình tính phí theo giây, bạn chỉ phải trả tiền cho những gì bạn sử dụng (On-Demand).
Reserved Instance: Cho phép trả trước 1 lượng Server cho 1 hoặc 3 năm. Chi phí chỉ bằng 75% so với On-Demand.
Free tier: Thời gian sử dụng miễn phí có thể lên tới 1 năm (tương đương với 730 giờ/tháng).
Mở rộng quy mô liền mạch với Amazon EC2 Auto Scaling (ASG): Cho phép bạn tự động thay đổi quy mô dung lượng Amazon EC2 theo hướng tăng lên hay giảm xuống theo các điều kiện do chỉ định.
Tối ưu hiệu năng và chi phí điện toán với Amazon EC2 Fleet: Bằng một lệnh gọi API duy nhất, Amazon EC2 Fleet cho phép bạn cung cấp công suất điện toán cho các loại phiên bản EC2 và Vùng sẵn sàng khác nhau, cũng như cho những hình thức tính phí khác nhau để tối ưu hóa quy mô, hiệu năng và cả chi phí.
Cấu hình CPU đã tối ưu hóa.
Tạm ngừng và khôi phục: Bạn có thể cho ngủ đông các phiên bản của Amazon EC2 được hỗ trợ bởi Amazon EBS và khôi phục chúng từ trạng thái này sau đó.
2.3. Lưu trữ
- Lưu trữ tối ưu cho mọi khối lượng công việc thông qua các dịch vụ như EBS, EFS,...
2.4. Bảo mật
3. Hand-ons
3.1. Khởi tạo EC2 instance
Lưu ý: Ở đây mình lựa chọn khu vực N.Virginia để làm demo, khi thao tác thực tế, bạn nên lựa chọn khu vực gần với khách hàng mình nhất nhé.
- Chọn instance và Launch instance:
Một vài options cần lưu ý:
Vì mục tiêu dừng lại ở mức cài đặt EC2, nên mình sẽ lựa chọn VPC và network setting theo mặc định.
Đối với security group, mở port 22 để ssh với ip của cá nhân, HTTP và HTTPS from anywhere để truy cập tới instance thông qua phương thức HTTP và HTTPS.
Okela, tới đây là bạn đã thành công khởi tạo một ec2 instance rồi
3.2. EC2 và LEMP
LEMP: Linux, Nginx, MariaDB và PHP. Đây là môi trường cần thiết để một trang web PHP có thể hoạt động
3.2.1. Truy cập vào EC2 instance đã khởi tạo:
Giải thích:
52.91.22.137: public IPv4 của EC2 instance.
~/Desktop/demo-ec2.pem: đường dẫn tới thư mục chưa file key.
Kết quả:
3.2.2. Cập nhật yum
sudo yum update -y
3.2.3. Cài đặt NGINX
sudo amazon-linux-extras | grep nginx
Kết quả hiển thị: nginx1
sudo amazon-linux-extras enable nginx1
sudo yum clean metadata
sudo yum install nginx -y
sudo systemctl enable nginx
sudo systemctl start nginx
Đến đây là bạn đã cài đặt xong nginx, có thể kiểm tra nginx version bằng cách gõ command sau:
nginx -v
Kết quả:
3.2.4. Cài đặt PHP
Ở đây, mình sẽ lựa chọn version 7.4
sudo amazon-linux-extras | grep php
sudo amazon-linux-extras enable php7.4
sudo yum clean metadata
sudo yum install php-cli php-pdo php-fpm php-json php-mysqlnd php-mbstring php-xml -y
sudo systemctl enable php-fpm
sudo systemctl start php-fpm
Kết quả:
3.2.5. Cài đặt MARIADB
sudo amazon-linux-extras | grep mariadb
sudo amazon-linux-extras enable mariadb10.5
sudo yum clean metadata
sudo yum install mariadb -y
sudo systemctl enable mariadb
sudo systemctl start mariadb
mysql_secure_installation
Chọn và làm theo như dưới đây:
Lưu ý:
- Password của root mặc định là rỗng, bạn có thể tùy ý thay đổi password. Nhưng vì mục tiêu demo nên mình sẽ giữ nguyên mật khẩu mặc định.
Done.
3.2.6. Kiểm tra
Truy cập vào public ipv4 của bạn.
3.2.7. Cấu hình cho dự án Laravel
Cài đặt composer:
cd ~
sudo curl -sS https://getcomposer.org/installer | sudo php
sudo mv composer.phar /usr/local/bin/composer
sudo ln -s /usr/local/bin/composer /usr/bin/composer
composer -v
Cài đặt git
sudo yum install git -y
git -v
Tạo database
sudo mysql -u root -p
CREATE USER 'laravel'@'localhost' IDENTIFIED BY 'password';
GRANT ALL PRIVILEGES ON * . * TO 'laravel'@'localhost';
FLUSH PRIVILEGES;
exit
Clone code dự án và cài đặt dự án
cd /var
sudo mkdir www
sudo chown -R ec2-user:ec2-user www
cd www
git clone https://github.com.... ./
Sau khi clone code xong, cấu trúc thư mục sẽ hiển thị như sau
composer install
Thiết lập file .env
cp .env.example .env
vi .env
php artisan config:cache
php artisan migrate
sudo chmod -R 777 storage/logs
sudo chmod -R 777 storage/framework/sessions
sudo chmod -R 777 storage/framework/views
Chỉnh sửa thông tin mysql:
DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=laravel
DB_USERNAME=laravel
DB_PASSWORD=password
Cấu hình NGINX
sudo vi /etc/nginx/conf.d/default.conf
server {
listen 80;
server_name localhost;
root /var/www/public;
error_page 500 502 503 504 /50x.html;
error_log /var/log/nginx/laravel_error.log;
access_log /var/log/nginx/laravel_access.log;
client_max_body_size 10m;
location / {
index index.php index.html;
try_files $uri $uri/ /index.php?$query_string;
}
location = /50x.html {
root /usr/share/nginx/html;
}
location ~ \.php$ {
fastcgi_pass unix:/var/run/php-fpm/www.sock;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root/$fastcgi_script_name;
include fastcgi_params;
}
location ~ .*\.(jpg|gif|png|css|js|ico|woff) {
expires 10d;
}
location ~ /\.git {
deny all;
}
}
Khởi động lại nginx
sudo service nginx restart
3.2.8. Kết quả
Truy cập thông qua public ipv4 của bạn: http://52.91.22.137
4. Tổng kết
Trên đây là tổng quan về EC2 và cách cài đặt dự án Laravel trên một EC2 instance.
Hãy chia sẻ kết quả của bạn dưới phần bình luận nhé.
Lưu ý: Hãy terminate instance sau khi sử dụng để tránh cost thêm chi phí nhé
Hẹn gặp lại !!!