2012-09-11 73 views
7

Tôi có một dự án Symfony 2.1, với các gói bổ sung được cài đặt thông qua nhà soạn nhạc. Tôi muốn triển khai nó vào máy chủ sản xuất của mình, nhưng tôi tự hỏi liệu tôi có cần thay đổi bất kỳ thứ gì trong tệp composer.json hay không. Đây là nội dung tệp hiện tại của tôi:Tệp composer.json của tôi trông như thế nào trong môi trường sản xuất?

{ 
    "name": "symfony/framework-standard-edition", 
    "description": "The \"Symfony Standard Edition\" distribution", 
    "autoload": { 
     "psr-0": { "": "src/" } 
    }, 
    "require": { 
     "php": ">=5.3.3", 
     "symfony/symfony": "2.1.1", 
     "doctrine/orm": ">=2.2.3,<2.4-dev", 
     "doctrine/doctrine-bundle": "1.0.*", 
     "twig/extensions": "1.0.*", 
     "symfony/assetic-bundle": "2.1.*", 
     "symfony/swiftmailer-bundle": "2.1.*", 
     "symfony/monolog-bundle": "2.1.*", 
     "sensio/distribution-bundle": "2.1.*", 
     "sensio/framework-extra-bundle": "2.1.*", 
     "sensio/generator-bundle": "2.1.*", 
     "jms/security-extra-bundle": "1.2.*", 
     "jms/di-extra-bundle": "1.1.*", 

     "friendsofsymfony/user-bundle": "*", 
     "knplabs/knp-paginator-bundle": "dev-master", 
     "ornicar/gravatar-bundle": "dev-master", 
     "liip/url-auto-converter-bundle": "dev-master" 
    }, 
    "scripts": { 
     "post-install-cmd": [ 
      "Sensio\\Bundle\\DistributionBundle\\Composer\\ScriptHandler::buildBootstrap", 
      "Sensio\\Bundle\\DistributionBundle\\Composer\\ScriptHandler::clearCache", 
      "Sensio\\Bundle\\DistributionBundle\\Composer\\ScriptHandler::installAssets", 
      "Sensio\\Bundle\\DistributionBundle\\Composer\\ScriptHandler::installRequirementsFile" 
     ], 
     "post-update-cmd": [ 
      "Sensio\\Bundle\\DistributionBundle\\Composer\\ScriptHandler::buildBootstrap", 
      "Sensio\\Bundle\\DistributionBundle\\Composer\\ScriptHandler::clearCache", 
      "Sensio\\Bundle\\DistributionBundle\\Composer\\ScriptHandler::installAssets", 
      "Sensio\\Bundle\\DistributionBundle\\Composer\\ScriptHandler::installRequirementsFile" 
     ] 
    }, 
    "config": { 
     "bin-dir": "bin" 
    }, 
    "minimum-stability": "dev", 
    "extra": { 
     "symfony-app-dir": "app", 
     "symfony-web-dir": "web" 
    } 
} 

Tôi có nên thay đổi cài đặt minimum-stability không?

Tôi có nên khắc phục mọi yêu cầu đối với một phiên bản duy nhất, không có ký tự đại diện hoặc "dev-master" không?

Tôi có nên tìm kiếm trên http://packagist.org/ phiên bản ổn định cuối cùng của mỗi phụ thuộc không?

Trả lời

11

Tôi nghĩ rằng quan trọng nhất là composer.lock của bạn, không quá nhiều composer.json.

Triển khai ứng dụng của bạn trên máy chủ thử nghiệm, php composer.phar install, sau đó chạy thử nghiệm để đảm bảo mọi thứ đều ổn. Nếu nó thực sự là ok, chỉ cần triển khai trên máy chủ sản xuất cùng với composer.lock.

Bằng cách này, các chi phí của bạn sẽ được exaclty giống như máy chủ thử nghiệm của bạn. Điều này cũng hữu ích nếu bạn có nhiều máy chủ trước, composer.lock sẽ đảm bảo mọi người sử dụng cùng một mã chính xác.

Bạn nói

Tôi có nên sửa chữa tất cả các yêu cầu một phiên bản duy nhất, mà không ký tự đại diện, hoặc "dev-master"?

Đây là vai trò của composer.lock để "sửa" mọi thứ. Composer.json là về việc khai báo các phụ thuộc và xử lý các sự không tương thích giữa các phiên bản. Theo mặc định, bạn nên gắn bó với các phiên bản ổn định, trừ khi bạn cần một số tính năng mới lạ mắt trong chi nhánh phát triển, hoặc một bugfixe chưa được sáp nhập.

Do đó, bạn nên phiên bản composer.lock, dễ dàng hơn cho việc triển khai tự động.

+0

Câu trả lời hay, nhưng bạn có thể giải thích thêm về bước "triển khai ứng dụng của bạn" không? Tôi cần các tệp trình soạn nhạc nào? Rõ ràng là các tệp .phar và .lock. Tôi vẫn cần composer.json? Còn về composer_installer.php thì sao? –

+1

@BenjaminBrizzi Tôi không thể xây dựng thêm "triển khai ứng dụng của bạn". Composer chỉ chăm sóc các phụ thuộc, chứ không phải chính ứng dụng của bạn. Thông thường, "triển khai ứng dụng của bạn" có thể là một 'git clone'. Bạn vẫn cần 'composer.json', vì nó chứa danh sách deps. 'composer.lock' chỉ xác định phiên bản chính xác bạn muốn cài đặt. Tôi không biết composer_installer.php là gì, xin lỗi. –

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