'Çoklu-site' uygulaması bina

4 Cevap php

Kullanıcıların web sitesinin belirli bir türü oluşturmak için izin veren bir uygulama planlıyorum. Ben 'account.myapp.com' hesap adlarını bağlamak istiyordu. 'Account.myapp.com' gitmek bir web sitesi kadar hizmet edecek. Ben bu harita için nasıl bir ipucu yok. Benim geliştirme aracı olarak Kod Igniter kullanarak olacak.

Ben kullanıcıların kendi web sitesi için kayıtlı bir alan adı eklemek yerine standart alt etki alanını kullanma yeteneği vermek istiyorum. Bu konuda herhangi bir ipucu / yöntem?

Ayrıca, bu tasarım ile bir şeyler geliştirirken arıyor olması gereken bazı tuzaklar ve sorunlar nelerdir? Benim en büyük endişem kötü veritabanı tasarımı ile bir köşede kendimi destek ve korumak veya güncellemek için bir app bir kabus yaratıyor.

Zaman ayırdığınız için teşekkürler!

4 Cevap

Tüm siteleri hizmet veren tek bir uygulaması olan için planı oldukça bir girişim olacak ve bir lot iş olduğunu. Yani (yüklediğiniz bir tek gelen 'sanal siteler' vb çalışmasına izin, Sharepoint dahil olmak üzere kurumsal CMS yılların bol,) bu mümkün değil demek değildir.

Sen ayrı siteler izolasyon çalışması emin olmak için, özellikle güvenlik cephesinde, planlama ve tasarım bir sürü üstlenmek için ihtiyacımız olacak. Her site kendi hesabını (ler) var olacağını varsayabiliriz - Emin kullanıcıların yanlışlıkla (veya malicously) başka bir site düzenlemeye başlayabilirsiniz olamaz yapmak için bir sürü iş yapmak zorunda olacak.

Ve tamir bakım dikkate doğru - tek bir uygulama altında çalışan siteleri ve bu nedenle tek bir veritabanı varsa, bu veritabanı çok hızlı, büyük ve dağınık almak için gidiyor. Ayrıca daha sonra başarısızlık tek bir nokta olur.

Bu o kişinin kendi dizinden çalıştırabilirsiniz, hesapları da kendi seti ile kendi veritabanı ile - daha iyi bir planı (tek bir web sitesi için) kendi kendine yeten bir çözüm geliştirmek olacaktır. Bu (kod ve veri tabanı açısından da) daha küçük olabilir ve bu nedenle muhtemelen çok daha iyi gerçekleştirmek olacaktır. Day-to-Day bakım (yedekten bir web sitesi geri yükleme) daha kolay olurdu, ama PHP olduğu gibi sadece yüklenenler ve SQL yamaları dosya var olsa da yazılım güncellemeleri (yeni bir özellik eklemek için) Bu nedenle, bu otomatik olabilir, biraz yanıltıcıdır olurdu kolaylıkla.

Etki açısından: Eğer invidual uygulaması (web sitesine başına bir) yaklaşım ile giderse, etkili, dosya sistemi için bir URL eşler (yani website.mydomain.com olabilir Apache Dynamic Virtual Hosts özelliğini kullanabilirsiniz otomatik olarak / home / vhosts / com / etkialanım / web sitesi) ayrılacaktır tercüme: böylece yeni bir web sitesi dağıtımı basitçe, doğru dizine dosyaları kopyalayarak veritabanı oluşturma ve yapılandırma dosyası güncelleme meselesi olacak bütün bunlar kolaylıkla otomatik olabilir.

Kullanıcıların kendi URL kullanmak istiyorsanız o zaman öncelikle sizin sunucuya işaret edecek ve ikincisi muhtemelen apache yeniden başlatılmasını içerir ve böylece tüm diğer kullanıcıları etkileyecek bu etki için bir Apache vhostu, yapılandırmanız gereken kendi DNS güncelleme var.

Bu CodeIgniter'daki yapmak çok kolaydır ve routes.php kullanılarak yapılır, tam ve bir ön denetleyicisi kanca olabilir.

Söyleniyor ... bunu yapmayın. Bu genellikle iyi bir fikir değil. Ünlü hesap yönetimi bu tür yapılmış olsa 37signals, koptuklarına ve merkezi hesapları doğru ilerliyor. Giriş http://37signals.com/accounts

Sorunuzu doğru anlamak ediyorsam, sen içten myapp.com /? Hesap = myaccount için (örnek) myaccount.myapp.com yönlendirmek kurulum joker DNS gerekir ve Apache mod_rewrite kullanmak. Sen app mantık oradan alabilir.

Ben sadece (tırnak işaretleri olmadan) "joker mod_rewrite hesabı dns", Googled ve gibi talimatlar ile bazı örnekler bulundu:

http://www.reconn.us/content/view/46/67/

Bu IMO belirli web uygulamaları yapısı için geçerli ve arzu yoludur. Ben ciddi sakıncaları farkında değilim.

Gerçekten kullanıcıların kendi bireysel alan adlarını belirtmek için izin için büyük bir (otomatik / ölçeklenebilir) yol bilmiyorum ama onları sonra, web sunucusuna işaret kendi etki alanının DNS değiştirmek olsaydı bunu yapmak mümkün olabilir Lütfen "myapp" Apache yapılandırmasına ServerAlias ​​yönergesini ekledi. Hala bir müşteri hesabına özgü bir müşterinin etki yoluyla gelen istekleri sizin myapp zamanı örneği anlayış sorunu ile kalacaksın. Yani (örnek) customeraccount.com gerçekten myapp.com /? Hesap = customeraccount eşittir. Biraz daha mod_rewrite kurallar muhtemelen bu bakabilirim, ama (belki de bir içerme dosyası ya da böyle olsa ile olabilir) otomatik değil.

Maalesef, size yazdım sonra myapp.com / hesap / myaccount içinde CodeIgniter ... yerine kullanılarak söyledi myapp.com /? = Myaccount hesap.

Öncelikle, kurulum için Apache (veya kullandığınız ne olursa olsun webserver) her bir alt alana aynı DNS ayarlarını (joker maçı) vermek zorunda. Ardından, istek URL'den subdomain ayrıştırmak için CodeIgniter'ın yönlendirme özelliklerini kullanmak zorunda olduğunu ayarlayabilirsiniz param (veya ne olursa olsun o CodeIgniter'daki denir) ve kontrolör onunla biraz eğlenmek gibi.

Tuzaklar ve sorunları hakkında: Eğer yapmak istediğinize bağlıdır. ;)