Deploy Laravel sử dụng Elastic Beanstalk

Mở đầu
Có 2 cách để bắt đầu:

17+ tip với WordPress Gutenberg Editor giúp bạn làm việc năng suất hơn
Monday October 22, 2018

Như bạn đã biết WordPress sắp sửa ra mắt một edtior hoàn toàn mới thay cho editor đang có. Tên gọi của editor này là Gutenberg. Hiện Gutenberg đang được phát hành dưới dạng plugin riêng. Nhưng trong bản WordPress 5.0 nó sẽ được đưa vào phần core và trở thành […]

The post 17+ tip với WordPress Gutenberg Editor giúp bạn làm việc năng suất hơn appeared first on Xem tin - tin tuc - doc bao.

Sử dụng elastic beanstalk cli
Sử dụng aws console

Hơn 30 quốc gia hội ngộ Festival quốc tế Âm nhạc mới Á-Âu 2018 tại Việt Nam
Saturday November 03, 2018

Với chủ đề ”Nhịp cầu âm thanh Á-Âu”, Festival quốc tế Âm nhạc mới Á-Âu lần thứ III năm 2018 quy tụ nhiều nhạc sĩ, nghệ sĩ biểu diễn dòng âm nhạc kinh điển đương đại của Việt Nam và thế giới.  Festival quốc tế Âm nhạc mới Á-Âu 2018 do […]

The post Hơn 30 quốc gia hội ngộ Festival quốc tế Âm nhạc mới Á-Âu 2018 tại Việt Nam appeared first on Xem tin - tin tuc - doc bao.

Dùng EB cli
Chuẩn bị
Cài đặt Python
Mọi người lên Google search cách cài đặt Python đối với mỗi môi trường, máy mình có rồi nên upgrade thôi.

Chờ di dời bãi rác ô nhiễm ở Đà Nẵng, đề xuất miễn học phí cho hơn 2000 học sinh
Sunday October 14, 2018

Trong thời gian bãi rác Khánh Sơn (Đà Nẵng) chưa di dời, UBND quận Liên Chiểu đề nghị không thu phí môi trường của 1.740 hộ dân khu vưc và hỗ trợ miễn học phí cho 2.016 học sinh từ cấp mầm non đến THPT. Ngày 13/10, UBND quận Liên Chiểu […]

The post Chờ di dời bãi rác ô nhiễm ở Đà Nẵng, đề xuất miễn học phí cho hơn 2000 học sinh appeared first on Xem tin - tin tuc - doc bao.

Cài đặt awscli
Sau đó thì install awsclipip3 install awscli
Cài đặt awsebcli
Và cuối cùng là awsebclipip3 install awsebcli 

Đọc thêm tại đây Installing the AWS Command Line Interface
Chuẩn bị project
Tất nhiên là không phải deploy 1 project vớ vẩn lên rồi. Mọi người di chuyển terminal vào thư mục project muốn deploy bằng eb và thực hiện các bước tiếp theo.
Elastic Beanstalk Deploy
Khởi tạo application
Dùng lệnheb init
Ở đây, nó sẽ bắt mình nhập aws key với secrect, thế nên là phải mở tab mới chrome, thực hiện bước tiếp theo.
Tạo IAM user
Vào IAM, tạo một user mới.

Sau đó chọn permissions cho hợp lý, còn mình thì cứ full access.
Sau khi tạo xong user, chọn user vừa tạo, chuyển sang tab Security credentials để thêm mới access key bằng cách ấn vào Create access key. Lưu file chứa key lại cho chắc, mình vừa vào lại thì chả biết làm thế nào để xem lại cái secret key cả T.T

Quay lại màn hình terminal lúc nãy, điền key vào và làm tiếp các bước mà nó yêu cầu. Sau khi xong sẽ thấy file gitignore có thay đổi và có thêm 1 thư mục mới tên là .elasticbeanstalk là có vẻ đúng rồi đó.
Khởi tạo môi trường
Đoạn này là đoạn tạo 1 instance ec2 để chạy code của mình đó. Tức là 1 Application có nhiều Environment đó, kiểu thế này này:
Dùng lệnheb create
Đợi vài phút, chúng ta sẽ được phiên bản đầu tiên của project được deploy lên elastic beanstalk. Chúng ta có thể thấy cái CNAME kia hoặc vào aws console, chọn ElasticBeanstalk, chọn environment mà vừa được tạo, sẽ có link để chạy.
Deploy cho những lần sau
Sau khi chúng ta sửa code, fix bugs, hoặc đơn giản là chả làm gì, chúng ta muốn deploy thì dùng lệnh:eb deploy
Chú ý 1 tý là cần commit code đã rồi mới deploy. Và thỉnh thoảng nó báo This branch does not have a default environment… bla bla là vì mình init ở develop, muốn deploy thì thêm tên của environment vào sau:eb deploy environment-name-blablaCơ bản là đã xong, nhưng mà mình deploy Laravel mà, làm như thế này thì vẫn chưa chạy được. Còn phải config composer rồi npm, suppervisord các kiểu nữa cơ mà.
Cấu hình môi trường

Vào aws console, chọn ElasticBeanstalk, chọn môi trường mình đang sử dụng.
Chọn Configuration > Chọn ô Software
Sửa: Document Root thành /public
Thêm: Environment properties là các key trong file .env.example của chúng ta

Thật ra thì thằng ElasticBeastalk này cung cấp cho chúng ta các biến môi trường về RDS, Cache,… nọ kia rồi nhưng mà nêu dùng của nó thì mình lại phải sửa code, sửa config .env trong project của mình, thế nên là mình nghĩ ra làm theo cách này, hơi dài với thủ công tí nhưng mà chắc chắn, đọc mấy tutorial khác người ta toàn bảo dùng keyRDS_DB_NAMEgì đó hay thêm define vào.
Tạo thư mục.ebextensionstrong folder project. Cái này để chưa file config chạy các lệnh mà chúng ta vẫn hay làm khi deploy project ấy: migrate, seed, npm dev,…
Biến môi trường
Như đã nói ở trên, chúng ta có thể config biến môi trường như mình làm, hoặc dùng các biến có sẵn của EB, hoặc config trong ebextensions.
Tạo file 00environmentVariables.config:option_settings:
– namespace: aws:elasticbeanstalk:application:environment
option_name: DB_HOST
value: mysqldbname.product-app.us-east-1.rds.amazonaws.com
– option_name: DB_PORT
value: 3306
– option_name: DB_NAME
value: dbname
– option_name: DB_USER
value: username
– option_name: DB_PASS
value: passwordSau đó sửa file configdatabase.php của chúng ta:’mysql’ => [
‘driver’ => ‘mysql’,
‘host’ => $_ENV[‘DB_HOST’],
‘port’ => $_ENV[‘DB_PORT’],
‘database’ => $_ENV[‘DB_NAME’],
‘username’ => $_ENV[‘DB_USER’],
‘password’ => $_ENV[‘DB_PASS’],
‘charset’ => ‘utf8’,
‘collation’ => ‘utf8_unicode_ci’,
‘prefix’ => ”,
],Nếu mà làm bằng tay như mình đã chỉ rồi thì thôi không cần có file này cũng được.
Composer Commands
Tạo file01composer.config:commands:
01updateComposer:
command: export COMPOSER_HOME=/root && /usr/bin/composer.phar self-update

option_settings:
– namespace: aws:elasticbeanstalk:application:environment
option_name: COMPOSER_HOME
value: /root

container_commands:
01optimize:
command: “/usr/bin/composer.phar dump-autoload –optimize”
Artisan Commands
Tạo file02artisan.config:container_commands:
01migrateSeed:
command: “php artisan migrate”
02seed:
command: “php artisan db:seed”
Config Suppervisord
Khi mà dùng queue để gửi mail hay chạy job gì đó thì cần dùng suppervisord. Đây là phần config cái đó.
Tạo file 03supervisor.config:files:
“/tmp/new_supervisord_conf”:
mode: “000644”
owner: root
group: root
content: |
; Sample supervisor config file.
;
; For more information on the config file, please see:
; http://supervisord.org/configuration.html

[unix_http_server]
file=/tmp/supervisor.sock ; (the path to the socket file)

[supervisord]
logfile=/tmp/supervisord.log ; (main log file;default $CWD/supervisord.log)
logfile_maxbytes=50MB ; (max main logfile bytes b4 rotation;default 50MB)
logfile_backups=10 ; (num of main logfile rotation backups;default 10)
loglevel=info ; (log level;default info; others: debug,warn,trace)
pidfile=/tmp/supervisord.pid ; (supervisord pidfile;default supervisord.pid)
nodaemon=false ; (start in foreground if true;default false)
minfds=1024 ; (min. avail startup file descriptors;default 1024)
minprocs=200 ; (min. avail process descriptors;default 200)

[rpcinterface:supervisor]
supervisor.rpcinterface_factory = supervisor.rpcinterface:make_main_rpcinterface

[supervisorctl]
serverurl=unix:///tmp/supervisor.sock ; use a unix:// URL for a unix socket

[program:queue]
command=php artisan queue:listen –sleep=10
directory=/var/app/current
stdout_logfile=/var/app/current/storage/logs/supervisor.log
redirect_stderr=true

“/opt/elasticbeanstalk/hooks/appdeploy/post/99_supervisor”:
mode: “000777”
owner: root
group: root
content: |
#!/usr/bin/env bash
#sudo easy_install supervisor==3.1.3
#supervisord -c /tmp/new_supervisord_confNgoài ra trong project khác nhau thì cần thêm các setup khác nữa tùy vào dự án, như các set up về npm, về nodejs hay bla bla gì đó, có thể tạo thêm file config và xử lý như trên. Chúng ta có thể tìm hiểu thêm ở đây: Advanced Environment Customization with Configuration Files (.ebextensions)
Hoàn thành
Xong xuôi tất cả, chúng ta commit lại code và deploy. Thành quả:

Dùng aws console
Ngoài cách trên chúng ta còn có thể dùng aws console.
Mở aws console, chọn ElasticBeanstalk

Chọn
Create a web server environment

Ở đây mình đã save lại config env của 1 env khác rồi, và đã deploy được nhiều lần rồi, nên mình chọn load lạiexisting version
Cấu hình

Chọn
Configure more options
ở bước trên, ta có:

Chọn modify Software để sửa lại cấu hình cho project như doc root, env variables,…
Chọn Instances để sửa lại cấu hình server.
Chọn Database để sửa lại cấu hình cho thằng RDS.
Những thứ còn lại mình chưa tìm hiểu 

Hoàn thành

Chọn Create Environment để bắt đầu, sau đó làm ván war guild chờ nó chạy xong:

Kết luận

Chúng ta có thể ssh lên server eb bằng cách:

eb sshNếu mà nó báo lỗi xác thực gì gì đó thì hãy tạo 1 cái Key pair:
Vào Ec2 > Chọn Key pairs ở trong menu NETWORK & SECURITY > Chọn Create key pair
Có file pem rồi copy vào thư mục .ssh trên máy mình là ok.

Gõ eb để biết thêm các lệnh khác.
Các cách xử lý đối với EB có thể dùng command ebcli và đều có thể thao tác được bằng chuột ở trên aws console.
Ngoài ra còn cần phải tạo RDB để chạy DB nữa, các bạn tự mò vì nó nằm ở chỗ Configuration hết rồi.
Làm theo hướng dẫn trên có thể sẽ không chạy được 100% vì 1 vài lý do nào đó =)) mình cũng làm theo hướng dẫn của người ta nhưng cũng không suôn sẻ được, phải mày mò khá nhiều chỗ khác nhau và mới thành công để viết được cái bài này.

Techtalk via Viblo

admin
admin

Recent Comments

Categories