2012-08-06 26 views
10

Tôi có một lõi Symfony2, được sử dụng cho miền A và miền B. Nhưng, nếu tôi cập nhật lõi, tôi cần phải cập nhật hai lần, vì tôi không biết cách cấu hình chỉ một lõi, với nhiều tên miền với cấu hình/cơ sở dữ liệu của họ.Symfony nhiều site

Đề xuất?

Trả lời

8

Tạo một bản sao của thư mục "web" vào thư mục "public_html" trên từng lĩnh vực (giả sử bạn đang chạy Apache trên Linux)

thư mục "web" này chứa các file front controllers của trang web của bạn (ứng dụng. php và app_dev.php), định vị chúng và chỉnh sửa chúng trên trình soạn thảo văn bản yêu thích của bạn. Tìm các dòng này:

require_once __DIR__.'/../app/bootstrap.php.cache'; 
require_once __DIR__.'/../app/AppKernel.php'; 

và thay đổi tuyến đường đến đường dẫn tương đối thực tế nơi lõi của bạn nằm. Nó có thể là một cái gì đó như thế này:

require_once __DIR__.'/../the_core_is_here/app/bootstrap.php.cache'; 
require_once __DIR__.'/../the_core_is_here/app/AppKernel.php'; 

Đây là linh hoạt, và có thể được tổ chức theo ý muốn, nhưng chắc chắn rằng hai dòng này có đường dẫn đúng

Hãy ghi nhớ rằng tất cả các tài sản (JS, CSS, hình ảnh ...) mà bạn đưa vào HTML của bạn có liên quan đến vị trí bộ điều khiển phía trước, vì vậy bạn cần phải liên kết chúng bằng url đầy đủ của tên miền nơi chúng cư trú hoặc sao chép chúng vào miền B hoặc sử dụng assetic

Cuối cùng bạn sẽ l có một số thông tin như:

/ 
.. home 
.. .. DOMAINA 
.. .. .. public_html 
.. .. .. .. app.php 
.. .. .. .. img 
.. .. .. .. .. image.png 
.. .. DOMAINB 
.. .. .. public_html 
.. .. .. .. app.php 
.. .. .. .. img 
.. .. .. .. .. image.png 
.. .. the_core_is_here 
.. .. .. app 
.. .. .. src 
.. .. .. bin 
.. .. .. vendor 

Bây giờ bạn sẽ có 2 điểm vào cho ứng dụng của mình. Bạn thậm chí có thể đặt CSS và hình ảnh khác nhau trên mỗi để cung cấp cho họ khía cạnh khác nhau.

+0

Câu đố là cách có nhiều cơ sở dữ liệu và chuyển đổi dựa trên tên miền của từng chi phí. –

+2

Bạn sẽ cần phải thêm nhiều người quản lý thực thể (một cho mỗi DB) (http://symfony.com/doc/current/cookbook /doctrine/multiple_entity_managers.html) và sau đó chọn đúng tùy thuộc vào tên miền đang được truy cập (tìm kiếm trên đối tượng REQUEST) Nếu bạn muốn mở rộng nó, hãy xây dựng một dịch vụ để thực hiện điều đó. – Xocoatzin

3

Có lẽ bạn có thể thử sử dụng Capifony, đó là tập lệnh triển khai được viết bằng ruby cho ứng dụng Symfony. Tôi chưa thực hiện bất kỳ thiết lập nào giống như những gì bạn đang cố gắng đạt được, nhưng tôi sử dụng nó để triển khai cả hai máy chủ sản xuất & dàn dựng. Nó có thể được thiết lập để triển khai các phiên bản ứng dụng khác nhau cho một máy chủ (ví dụ: các thư mục khác nhau) hoặc nhiều máy chủ.

Một khi họ là chính xác thiết lập, triển khai chỉ là vấn đề của gõ:

cap server1 deploy 
cap server2 deploy 

Mỗi lần bạn chạy các lệnh, capifony sẽ kéo mã mới nhất từ ​​kho lưu trữ (ví dụ: git), và triển khai nó. Như một phần thưởng, các phiên bản cũ của ứng dụng cũng được lưu trên máy chủ nếu bạn cần trở về trạng thái trước đó.

Dưới đây là mẫu cấu hình capifony kịch bản chỉ để cung cấp cho bạn một cái nhìn tổng quan:

# deploy.rb 
set :application, "My App" 
set :deploy_to,  "/var/www/my-app.com" 
set :domain,  "my-app.com" 

set :scm,   :git 
set :repository, "ssh-gitrepo-domain.com:/path/to/repo.git" 

role :web,   domain 
role :app,   domain 
role :db,   domain, :primary => true 

set :use_sudo,  false 
set :keep_releases, 3 

Và bạn có thể có kịch bản cấu hình khác nhau, mỗi một tên miền khác nhau, sử dụng multistage extension cho capifony.

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