है आप वेब जड़, जहां केवल फ़ाइलें हैं उन्हें पूरे इंटरनेट के संपर्क में रहते हैं चाहिए के रूप में एक निर्देशिका होना चाहिए।
project/
web/
index.php
css/
js/
images/
config/
lib/
- वेब/जड़ विज़िटर के लिए दृश्यमान
- lib/यहाँ है पुस्तकालय फ़ोल्डर, और जहाँ फ़ाइलों के लिए autoload नज़र है।
आप प्रोजेक्टर/नियंत्रक, मॉड्यूल, व्यू, हेल्पर इत्यादि जैसे अधिक सबफ़ोल्डर जोड़ सकते हैं। यह आपके ढांचे पर निर्भर करता है।
संपादित करें:
आप संगीतकार (जो मेरा सुझाव है) और शायद घुरघुराना और कम अपनी फ़ाइल संरचना के साथ NPM का उपयोग करते हैं होगा निम्नलिखित:
project/
web/
js/
css/
images/
index.php
cli/
config/
config.php
node_modules/
src/
test/
vendor/
composer.json
composer.lock
packages.json
- वेब/सब है आपके सार्वजनिक फाइलें
- क्ली/स्क्रिप्ट और प्रोग्राम्स कमांड लाइन से चलाने के लिए वेब नहीं
- कॉन्फ़िगर/आपके सभी सह nfig फ़ाइलें (गिट में आप config.php को अनदेखा करते हैं और इसके बजाय usernames, पासवर्ड, सत्यापन कोड और तालिका उपसर्ग/प्रत्यय और अन्य "रहस्य" के बिना config.dist.php हैं)
- node_modules/आपकी सभी लाइब्रेरी फ़ाइलों को एनपीएम से (में git मैं तुम्हें
- src psr4 संरचना में सभी अपने स्थानीय पीएचपी फ़ाइलें, composer.json में autoload करने के लिए स्थापित किया गया है एक submodule में रखते) का सुझाव
- परीक्षण/अपने src कक्षाएं, में स्थापित करने के लिए अपने सभी इकाई परीक्षण है composer.json में autload-देव (, शायद -ओ जोड़ने यदि आप बहुत अधिक वर्गों की जरूरत नहीं है संगीतकार लाइव पर --no-देव इंस्टॉल का उपयोग करने का ध्यान रखें)
- विक्रेता के पास आपकी सभी लाइब्रेरी फाइलें संगीतकार से हैं और एक और केवल autoload.php वेब/इंडेक्स में शामिल की जानी चाहिए।PHP और किसी भी क्ली स्क्रिप्ट्स (गिट में मेरा सुझाव है कि आप इस विक्रेता फ़ोल्डर को अनदेखा करें)
अपनी परियोजना के लिए आवश्यक अन्य फ़ोल्डर्स और फ़ाइलों को जोड़ें।
तैनाती उपयोग के लिए इस संरचना:
/sites/project/ (project is your projectname)
current (alias to current release folder releases/v1.1.0)
previous (optional alias to previous release folder releases/v1.0.1)
releases/
v1.0.0/ (git checkout of tag v1.0.0)
v1.0.1/ (git checkout of tag v1.0.1)
v1.1.0/ (git checkout of tag v1.1.0)
shared/ (has all your shared files and folders to be aliased in all releases - maybe something like GlusterFS)
एक तैनाती स्क्रिप्ट बनाओ। इस तरह कुछ:
पहले डीबी का बैकअप लें या इसे एक नए डेटाबेस में कॉपी करें, रिलीज टैग के साथ नए फ़ोल्डर में चेकआउट गिट रेपो, सभी गिट सबमिड्यूल प्राप्त करें, संगीतकार इंस्टॉल करें --no-dev, किसी भी उपनाम सेट करें साझा फ़ोल्डर्स और अपलोड की गई छवियों और कॉन्फ़िगरेशन फ़ाइलों जैसी फ़ाइलें, जेएस/सीएसएस को गड़बड़ी और कम या समकक्ष के साथ जेनरेट करें, टैग के साथ नए फ़ोल्डर को वर्तमान उपनाम इंगित करें, अद्यतन डेटाबेस स्क्रिप्ट चलाएं, nginx/apache/fpm-php सेवाओं को पुनरारंभ करें, परीक्षण चलाएं वेबसाइट की जांच करने के लिए है।
पिछले संस्करण पर वापस जाने के लिए एक स्क्रिप्ट है (या एक गाइड ताकि आप जानते हैं कि क्या करना है)।
यह सिर्फ एक विचार है। क्या आपने एक PHP एमवीसी फ्रेमवर्क का उपयोग करने पर विचार किया है जो पहले से मौजूद है, जैसे केकेपीएचपी? मैं समझता हूं कि एक सीखने की अवस्था हो सकती है, लेकिन खुले स्रोत, लोकप्रिय ढांचे के लाभों पर विचार करना उचित हो सकता है। मैंने वर्षों से अपना कोड बनाया और बनाए रखा है, लेकिन पाया कि यह एक तीसरे पक्ष के ढांचे का उपयोग करने के लिए विशेष रूप से बड़ी साइटों के लिए अधिक स्केलेबल है। आपको लगता है कि यह आपको लंबे समय तक बचाएगा, और भविष्य में आउटसोर्सिंग परियोजनाओं के लिए आपके पास मूल्यवान कौशल होगा। – Dooltaz
मैंने वास्तव में इसके बारे में सोचा है ... और मैं अंत में अंततः एक का उपयोग कर सकता हूं ... लेकिन मुझे आगे बढ़ने से पहले इसे खुद करने में सक्षम होना चाहिए :) यह एक न्यूरोटिक चीज है – johnnietheblack