6

Tôi có một cài đặt Laravel và đã thiết lập ba môi trường với các thư mục của riêng mình tương ứng cấu hình:Làm cách nào để thực hiện di chuyển Laravel Artisan trên cây đậu mềm AWS?

  • địa phương
  • dàn
  • sản xuất

tôi sử dụng php artisan migrate:make create_users_table vv như mô tả here tạo di chuyển cơ sở dữ liệu.

Trong môi trường địa phương của tôi, tôi sử dụng Vagrant và thiết lập máy chủ MySQL đơn giản và trên dàn dựng sản xuất & tôi sử dụng AWS RDS.

Để cấu hình truy cập cơ sở dữ liệu cho dànenvironment Tôi có một tập tin app/config/staging/database.php với các thiết lập như thế này:

... 
"mysql" => array(
    "driver" => "mysql", 
    "host" => $_SERVER["RDS_HOSTNAME"], 
    "database" => $_SERVER["RDS_DB_NAME"], 
    "username" => $_SERVER["RDS_USERNAME"], 
    "password" => $_SERVER["RDS_PASSWORD"], 
    "charset" => "utf8", 
    "collaction" => "utf8_unicode_ci", 
    "prefix" => "", 
), 
... 

tôi sử dụng git để triển khai các ứng dụng với git aws.push như mô tả here.

Câu hỏi đặt ra là: Làm cách nào để chạy di chuyển trên máy chủ EBS dàn dựng (và sau này) khi triển khai?

Trả lời

12

Tôi đã giải quyết nó bằng cách tạo một thư mục mới trong thư mục gốc của dự án của tôi có tên là .ebextensions. Trong thư mục mà tôi tạo ra một tập tin script my-scripts.config:

.ebextensions/ 
    my-scripts.config 
app/ 
artisan 
bootstrap 
... 

File my-scripts.config được thực thi khi EBS triển khai, là một file YAML và trông như thế này:

container_commands: 
    01-migration: 
     command: "php /var/app/ondeck/artisan --env=staging migrate" 
     leader_only: true 

Thêm thư mục và tập tin để git, cam kết và chạy git aws.push và nó sẽ di chuyển.

Giải thích về cách công cụ trong .ebextensions hoạt động có thể được tìm thấy here.

Đường dẫn /var/app/ondeck là nơi ứng dụng của bạn hoạt động khi tập lệnh của bạn chạy, sau đó nó sẽ được sao chép vào /var/app/current.

Tùy chọn nghệ nhân --env=staging là hữu ích cho nói nghệ nhân những gì môi trường nó nên chạy trong, do đó nó có thể tìm thấy các thiết lập cơ sở dữ liệu chính xác từ app/config/staging/database.php

Nếu bạn cần một cách nhanh chóng và dơ bẩn để đăng nhập tại sao lệnh di cư thất bại bạn có thể muốn thử một cái gì đó như "php /var/app/ondeck/artisan --env=staging migrate > /tmp/artisan-migrate.log" để bạn có thể đăng nhập vào thể hiện ec2 của mình và kiểm tra nhật ký.

+0

vì vậy điều gì sẽ xảy ra cho các lần di chuyển tiếp theo mà tôi đang thực hiện? Giống như đối với những người tôi không thể thêm chúng một lần nữa để GIT như họ đã được thêm vào. Hoặc tôi không thể chạy '' 'git aws.push'''. Vậy điều gì sẽ là bước cho điều đó? - Cảm ơn. –

+0

@HimelNagRana ​​Tôi không thực sự theo dõi, nhưng bạn có thể hiểu nhầm cách di chuyển (nên) hoạt động. Tất cả các tập lệnh di chuyển của bạn phải luôn nằm trong repo git. Cơ sở dữ liệu của bạn không được coi là "đặt lại" trên mọi triển khai, quá trình di chuyển chỉ nên thực hiện các thay đổi nhỏ trong phương thức 'up' của bạn trong tập lệnh di chuyển. Kiểm tra tài liệu di chuyển: http://laravel.com/docs/4.2/migrations – oskarth

+0

Tôi nghĩ rằng tôi không thể làm cho bản thân mình rõ ràng. Xin lỗi vì chuyện đó.Tôi hiểu cách di chuyển hoạt động (hoặc nên hoạt động). Đó là một câu hỏi liên quan đến triển khai mà tôi có thể tìm ra cách. Ví dụ: giả sử tôi muốn thêm "last_login" vào thực thể người dùng. Sau đó, tôi sẽ tạo ra di chuyển và chạy nó. Câu hỏi của tôi là tôi cần phải làm bất cứ điều gì đặc biệt để làm cho việc di chuyển chạy trong khi triển khai đến ElasticBeanstalk? Sau đó tôi thấy rằng câu trả lời là "không". Cảm ơn mọi người. –

Các vấn đề liên quan