Hôm nay, mình sẽ hướng dẫn các bước để deploy project laravel lên ec2 aws với ngix.
- Create instance linux ec2 và connect ssh vào đó. Phần này mình ko mô tả, cách làm các bạn có thể tham khảo thêm https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/EC2_GetStarted.html
- Sau khi connect tới ec2, ta sẽ thực hiện install PHP và các thứ cần thiết, thực hiện các lệnh command sau:
Update Package Lists: sudo yum update
Install Nginx and PHP: sudo yum install nginx php php-fpm php-mysqlnd
Start Nginx and PHP-FPM:
sudo systemctl start nginx
sudo systemctl enable nginx
sudo systemctl start php-fpm
sudo systemctl enable php-fpm
Install MySQL Server:
Open a terminal window. Install the MySQL Community repository:
sudo wget https://dev.mysql.com/get/mysql80-community-release-el9-1.noarch.rpm sudo ls -lrt
Install the MySQL server:
sudo dnf install mysql80-community-release-el9-1.noarch.rpm
dnf repolist enabled | grep "mysql.*-community.*"
sudo dnf install mysql-community-server
Start the MySQL server:
sudo systemctl start mysqld
sudo mysql -V
Secure the MySQL server:
sudo mysql_secure_installation
Test the MySQL server:
sudo mysql -uroot -p
Nếu có lỗi install do key thi run command sau: rpm --import https://repo.mysql.com/RPM-GPG-KEY-mysql-2023
- cd /home, sau đó tạo thư mục source, cd vào source rồi pull code về
- cd vào thư mục source code đã pull rồi chạy command:
sudo composer i
sudo cp .env.example .env
sudo nano .env
update các thông tin envphp artisan key:generate
- Tạo tệp cấu hình khối máy chủ Nginx mới cho ứng dụng Laravel của bạn:
sudo nano /etc/nginx/conf.d/your-laravel-app.conf
Nội dung file như sau:
server { listen 80; server_name localhost; root /home/source/ndungu-real-estate-api/public; index index.php index.html index.htm; location / { try_files $uri $uri/ /index.php?$query_string; } location ~ \.php$ { include ./fastcgi.conf; fastcgi_pass unix:/run/php-fpm/www.sock; } error_log /var/log/nginx/ndungu-real-estate-api.error.log; access_log /var/log/nginx/ndungu-real-estate-api.access.log;
}
Kiểm tra cấu hình ngix xem có lỗi gì ko bằng lệnh: sudo nginx -t
Restart Nginx Service: sudo systemctl restart nginx
Run Laravel Migrations: php artisan migrate Kiểm tra bằng cách truy cập vào ip public của ec2