2012-02-11 34 views
5

Tôi đã triển khai một trang web trong AppHarbor sử dụng cơ sở dữ liệu MS SQL. AppHarbor cung cấp cho tôi chuỗi kết nối mà tôi đã nhập vào settings.txt và có vẻ như hoạt động tốt NHƯNG AppHarbor đề nghị sử dụng biến số SQLSERVER_CONNECTION_STRING thay thế.Ghi đè chuỗi kết nối (từ settings.txt) trong Orchard CMS

Đó là do chuỗi kết nối có thể thay đổi mà không cần thông báo nên cách an toàn duy nhất là sử dụng biến được đề cập.

Tiếp cận các biến cấu hình dưới đây nên được thực hiện programatically, như các giá trị có thể được cập nhật bởi các add-on cung cấp mà không thông báo trước.

Có cách nào để ghi đè lên các thiết lập DataConnectionString từ settings.txt và thiết lập các ứng dụng để sử dụng biến SQLSERVER_CONNECTION_STRING để thay thế? Tôi giả sử AppHarbor bằng cách nào đó đặt các biến đó thành appSettings.

P.S. Đây là ứng dụng đầu tiên của tôi với Orchard, tôi không thành thạo với CMS này.

Trả lời

6

Chuỗi kết nối được đặt trong lớp ShellSettingsManager. Tôi không chắc chắn bạn có thể dễ dàng thay thế phụ thuộc này từ một mô-đun, nhưng bạn có thể chắc chắn chỉ cần thay đổi dòng mã mà bộ chuỗi kết nối ...

shellSettings.DataConnectionString = value; //use your config value instead 

ShellSettingsManager là một thực hiện IShellSettingsManager vì vậy bạn có một số linh hoạt ở đó nếu bạn muốn chỉ thực hiện của riêng bạn quá.

+0

Thành thật mà nói, tôi đã hy vọng cho một giải pháp mà không bao gồm rối tung với mã nguồn nhưng cuối cùng tôi đã theo đề xuất của bạn 'shellSettings.DataConnectionString = ConfigurationManager.AppSettings [" SQLSERVER_CONNECTION_STRING "] ?? giá trị; ' – lalibi

+0

ya, xin lỗi, tôi không nghĩ có tùy chọn không phải mã. –

+1

Tôi biết điều này là một chút ngày và nguồn khung Orchard đã thay đổi, nhưng trong phiên bản 1.6 có vẻ như điều này có thể được thực hiện mà không thay đổi nguồn lõi chính của Orchard. Người ta có thể tạo ra một triển khai tùy chỉnh của IShellSettingsManager. IoC cho ShellSettingsManager được đăng ký sử dụng Autofac, vì vậy nó sẽ có thể tạo một ContainerBuilder mới, sau đó gọi RegisterType hoặc RegisterInstance, và cuối cùng gọi Update cập nhật trong lõi Container ban đầu được trả về bởi OrchardStarter.CreateHostContainter(). Tôi đang làm việc trên một cách tiếp cận tương tự bây giờ, tìm kiếm một điểm tiêm tốt. – defines

0

Triển khai vườn cây ăn quả để appharbor có thể không có giá trị nỗ lực. Appharbor xóa sạch toàn bộ ứng dụng khi thực hiện triển khai sao cho phương tiện được tải lên cũng bị xóa. Bạn có thể giải quyết vấn đề này bằng cách lưu trữ thư mục media ở một nơi khác, như amazon s3.

Nhưng bạn cũng không có quyền truy cập FTP để ghi tệp hoặc bất kỳ thứ gì khác. (ít nhất không phải lần cuối cùng tôi nhìn).

Cộng với u không thể tận dụng lợi thế của triển khai web.

Bạn có thể làm cho nó hoạt động nhưng kiến ​​trúc vườn cây ăn quả tạo ra nhiều ma sát với mô hình triển khai của appharbor.

Đừng làm cho tôi sai. Tôi yêu appharbor. Nhưng vườn cây ăn quả là hình vuông. Tôi nhận được cảnh của tôi làm việc trên appharbor nhưng 4 tháng sau đó tôi thấy tôi sợ cập nhật vì quá nhiều cài đặt không mặc định. Cuối cùng, ném khăn và trả $ 8 mỗi tháng tại arvixe. Ít ma sát hơn bây giờ.

+0

Tôi thích sử dụng kế hoạch AppHarbor miễn phí cho bản trình diễn (vì vậy khách hàng có thể kiểm tra trang web của họ trong khi đang phát triển) và cho mục đích đó (và không chỉ tất nhiên) AppHarbor là tuyệt vời. Có thể tôi sẽ di chuyển trang web ở nơi khác khi nó được thực hiện, nhưng sự phát triển sẽ mất một thời gian và tôi không muốn nói với khách hàng để bắt đầu trả tiền trong khi dự án đang được phát triển. Cảm ơn thông tin của bạn. – lalibi

+0

Nếu bạn sử dụng nhà cung cấp bộ nhớ S3, các tệp sẽ trở thành ít vấn đề. Chúng tôi đã viết hướng dẫn tại đây: http://support.appharbor.com/kb/tips-and-tricks/running-orchard-on-appharbor – friism

2

Tôi vừa mới xuất bản "Cấu hình cài đặt cấu hình" mô-đun (Fineout.ConfigShellSettings) của mình vào Thư viện ảnh Orchard. Mô-đun này cuối cùng cung cấp một cách không đau để quản lý cài đặt trình bao trang web Orchard (người thuê) thông qua quản lý cấu hình.

Download the Configuration Shell Settings module from the Orchard Gallery!

tôi đã sao chép mô tả gói mô-đun (phiên bản 1.0.1) dưới đây:

Cho phép thiết lập vỏ Orchard cho người thuê nhà được xác định thông qua cài đặt ứng dụng cấu hình, tức là "Web .config "thay vì" Settings.txt ".Điều này cho phép kiểm soát cài đặt trang (đối tượng thuê) thông qua quản lý cấu hình xây dựng, đơn giản hóa quá trình xây dựng và triển khai cho hầu hết các môi trường và cơ sở hạ tầng.

Khi bật tính năng này, cài đặt trình bao hiện tại cho tất cả người thuê sẽ được sao chép từ các tệp "Settings.txt" tương ứng vào AppSettings được xác định trong "Orchard.Web/Web.config". Tương tự như vậy, bất cứ khi nào tính năng này bị tắt, các AppSettings hiện có được xác định cho tất cả người thuê sẽ được sao chép trở lại các tệp "Settings.txt" tương ứng. Điều này cho phép tính năng này được quản lý mà không cần bất kỳ thao tác tệp thủ công hoặc thay đổi mã nào.

Vì đây là phiên bản đầu tiên của mô-đun, tôi hy vọng sẽ có nhiều chỗ để cải thiện và lỗi thường xuyên; Tôi rất thích bất kỳ ý kiến ​​phản hồi hoặc ý tưởng bất cứ ai có. Tôi hy vọng sự đóng góp này sẽ chứng tỏ hữu ích và tiết kiệm thời gian cho cộng đồng.

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