मुझे WP डैशबोर्ड से git और अपडेट का उपयोग करते हुए WP वेबसाइट प्रोजेक्ट की संरचना कैसे करनी चाहिए?


13

महीनों से मैं वर्डप्रेस वेबसाइट के विकास के लिए git संस्करण नियंत्रण का उपयोग करने के लिए एक अच्छी परियोजना संरचना की योजना बना रहा हूं जो WP डैशबोर्ड के माध्यम से कोर और प्लगइन्स को अपडेट करने की क्षमता का त्याग नहीं करता है, इसके लिए एक अपरंपरागत निर्देशिका संरचना (wp) की आवश्यकता नहीं होती है WP पेरेंट फोल्डर के बाहर) और वह पूरी वेबसाइट्स को मैनेज और डिले करने में आसान है। मैंने सबमॉड्यूल्स, सबट्रीड्स, नेस्टेड रिपोज आदि के बारे में पढ़ा है, और मुझे अभी भी एक कठिन समय मिल रहा है कि यह सब एक साथ फिट हो और सही रणनीति का चुनाव करें।

यहाँ मैं अभी सोच रहा हूँ, अपने विचारों के साथ कि मैं कोष्ठक में git repos को कैसे संभालूँगा।

root (main project repo)
|-- wordpress (public git repo added as subtree)
|    |-- wp-content 
|    |    |-- plugins
|    |    |    |-- my-custom-plugin (git repo added as subtree)
|    |    |    |-- other-plugin-with-git-repo  (git repo added as subtree)
|    |    |    +-- other-plugin-without-git-repo (ignored/untracked)
|    |    |-- themes
|    |    |    |-- my-custom-theme (git repo added as subtree)
|    |    |    |-- other-theme-with-git-repo  (git repo added as subtree)
|    |    |    +-- other-theme-without-git-repo (ignored/untracked)
|    |    +-- uploads (ignored/untracked)
|    |-- wp-admin
|    +-- wp-includes
|-- wp-config.php (ignored/untracked)
+-- other-files.txt

यह मुझे कई समस्याओं / प्रश्नों के साथ छोड़ देता है;

  • स्वचालित अद्यतन; मुझे नए ऑटो अपडेट फीचर पसंद हैं, यह संभवतः मेरी साइटों को अपडेट और सुरक्षित रखने में बहुत समय और प्रयास बचा सकता है, लेकिन ऐसा लगता है कि यह ट्रैकिंग कोड परिवर्तन में एक रिंच को गिट के साथ फेंकता है। क्या वर्डप्रेस कोर को ऑटो अपडेट की अनुमति देते समय मेरे कोड परिवर्तनों को ट्रैक करने का कोई तरीका है?

  • क्या वर्डप्रेस कोर रेपो के तहत सबट्रेसेस होने से मुझे नए कोर अपडेट्स में मर्ज करने से रोकने या वर्डप्रेस कोर रेपो में अपने बदलावों को वापस करने से रोकता है (अगर मैं कभी भी तय करूं कि मैं कोर योगदानकर्ता बनना चाहूंगा)?

  • ऐसे प्लगइन्स जिनके पास सार्वजनिक गिट रेपो नहीं है, उन्हें पूरी तरह से अनदेखा करने से सर्वर पर फ़ाइलों को मैन्युअल रूप से कॉपी किए बिना एक नए सर्वर पर पूरी साइट को जल्दी से क्लोन न करने की समस्या पैदा होती है। यह एक समस्या का कारण बनता है अगर मैं उस प्लगइन के कोड में परिवर्तन करना चाहता हूं जो उन परिवर्तनों को ट्रैक नहीं किया गया है और आसानी से एक प्लगइन अपग्रेड में खो सकता है।

तो, संक्षेप में, एक अच्छा git + वर्डप्रेस सेटअप क्या है जो इन समस्याओं से बचा जाता है? मैं अपनी प्रस्तावित परियोजना संरचना पर आपकी प्रतिक्रिया की सराहना करूंगा। किसी भी तरह से आप इसे बेहतर बनाने में मेरी मदद कर सकते हैं, बहुत सराहना की जाएगी!

पुनश्च, अगर इस चर्चा के लिए एक बेहतर मंच है, तो कृपया मुझे वहाँ इंगित करें।

जवाबों:


6

मेरे दृष्टिकोण से आपकी योजना के साथ दो मुद्दे हैं - गिट और "पारंपरिक" संरचना। तो मूल रूप से सब कुछ। :)

  1. Git (और सामान्य रूप से संस्करण नियंत्रण) संपूर्ण साइट स्टैक के लिए एक खराब उपकरण है। वहाँ किया गया था, कि, यह एक बहुत चोट लगी है।

  2. जिसे आप कोर से अलग की गई सामग्री के साथ "अपरंपरागत" संरचना कहते हैं, वह कुछ समय के लिए किसी भी गंभीर साइट के लिए एक बहुत ही पारंपरिक और मजबूत विकल्प रहा है।

  3. देशी अपडेट के साथ पूरी साइट स्टैक को संयोजित करने के लिए बहुत अधिक टर्न-की तरीके नहीं हैं। यह सिर्फ एक साथ अच्छी तरह से नहीं चलता है क्योंकि यह विभिन्न स्तरों की परियोजनाओं में अलग-अलग लक्ष्यों को प्राप्त करने की कोशिश करता है (डेवलपर नियंत्रण में अंत उपयोगकर्ता नियंत्रण में)।

यदि आप मुझसे पूरी साइट के लिए सर्वश्रेष्ठ शर्त पूछते हैं तो वर्डप्रेस स्टैक वर्तमान में कम्पोजर है , हालांकि राय सावधान हो सकती है। :)

अपनी विशिष्ट चिंताओं पर:

  1. जैसा कि ऊपर - देशी अपडेट (अधिक ऑटो) कसकर नियंत्रित ढेर के साथ अच्छा नहीं खेलते हैं।

  2. वर्डप्रेस कोर जीआईटी में विकसित नहीं हुआ है और पुल अनुरोधों को स्वीकार नहीं करता है, सभी योगदान पैच फाइल के माध्यम से तोड़फोड़ करने के लिए (अब तक) हैं।

  3. आपको अपने रेपो में इस तरह के प्लग इन करने की संभावना होगी। या संगीतकार की तरह एक और दृष्टिकोण के साथ जाओ।


वर्डप्रेस विकास के लिए Git का उपयोग नहीं करता है, लेकिन github.com/WordPress/WordPress पर एक दर्पण है (प्रत्येक 15 मिनट में SVN से सिंक किया गया)। यह पैच आदि को आगे बढ़ाने के लिए नहीं है - इसके लिए आपको निश्चित रूप से SVN और Trac का उपयोग करने की आवश्यकता है। मुझे नहीं पता कि यह ओपी के उद्देश्यों के लिए उपयुक्त होगा या नहीं, लेकिन पूर्णता के लिए, यह मौजूद है।
पाट जे

@PJJ अच्छी बात है, मुझे लगता है कि क्यू का मतलब है कि एक का उपयोग करने का मतलब है, लेकिन शायद नहीं
Rarst

बहुत अच्छे अंक। मुझे सबमोडुल्स के साथ गिट का उपयोग करके एक पूरी साइट स्टैक स्थापित किया गया है और यह गधे में एक बड़ा दर्द है। मुझे लगता है कि अगर मैं अभी भी Git का लाभ उठाने के लिए कम कसकर नियंत्रित तरीका है, तो सोच रहा हूं, लेकिन खुद को कुछ लेगवर्क को बचाने के लिए मूल अपडेट का भी लाभ उठा सकता हूं। मैं इस समय वन मैन टीम हूं, इसलिए मैं मूल रूप से यथासंभव कुशलता से साइटें स्थापित करने की कोशिश कर रहा हूं।
योशिय्याह अंक

@JosiahSprague यदि आपका मुख्य दर्द बिंदु प्रारंभिक सेटअप (दीर्घकालिक स्टैक रखरखाव के बजाय) है, तो यह कस्टम install.phpरूटीन या कुछ के साथ उस पर ध्यान केंद्रित करने और वहां से सामान्य अपडेट मैकेनिक्स का उपयोग करने के लिए समझ में आ सकता है । संगीतकार स्टैक अपडेट को बहुत अच्छी तरह से सार में संभाल सकता है, लेकिन यह आपके द्वारा उपयोग किए जाने वाले पैकेजों की गुणवत्ता पर निर्भर करता है और आधिकारिक WP रिपॉजिटरी जैसी चीजों के लिए यह अभी तक परिपक्व नहीं है।
रार्स्ट

3

आप इस मुद्दे और इस मुद्दे पर एक नज़र डाल सकते हैं ।

प्रत्येक रेपो में README फाइलों पर भी नज़र डालें:

ऊपर रेपोस के आधार पर, एक Git / WP सेटअप का एक और उदाहरण के रूप में, मैं बनाया इस । मैंने थीम के लिए सिम्लिंक का उपयोग करने का विकल्प चुना (मैं अपने README में इसे कवर करने का प्रयास करता हूं )।

हालांकि मैं ऑटो अपडेट के साथ एक ही नाव में थोरा हूं ... मेरी योजना मैन्युअल रूप से अपडेट होने पर WP सबमॉड्यूल को अपडेट करने की थी। मुझे लगता है कि विकल्प है, सिद्धांत रूप में (मुझे अभी तक खुद को परखना है), सबमॉड्यूल को मामूली अपडेट के लिए खुद को अपडेट करने के लिए (इसके लिए एक WP सेटिंग है) और फिर gitप्रमुख अपडेट आने पर सबमॉडल का एक बल / रीसेट करें ( हो सकता है कि इनमें से एक उत्तर कुछ मदद का हो सकता है ... निश्चित रूप से, मुझे लगता है कि कोई अगले प्रमुख रिलीज के लिए अपडेट करते समय एक विशिष्ट WP टैग को लक्षित करना चाहेगा)।

ध्यान देने वाली बात यह है कि यदि WP .gitपथ में देखता है, तो यह स्वतः अपडेट बंद कर देगा। अधिक जानकारी के लिए, देखें:

स्वचालित अपडेट सक्षम करने के लिए, कुछ सरल आवश्यकताएं हैं:

  • यदि इंस्टॉल अपडेट के लिए एफ़टीपी का उपयोग करता है (और क्रेडेंशियल के लिए संकेत देता है), स्वचालित अपडेट अक्षम हैं
  • यदि इंस्टॉल SVN या GIT चेकआउट के रूप में चल रहा है, तो स्वचालित अपडेट अक्षम हैं
  • यदि स्थिरांक DISALLOW_FILE_MODSया AUTOMATIC_UPDATER_DISABLEDपरिभाषित हैं, तो स्वचालित अपडेट अक्षम हैं
  • यदि निरंतर WP_AUTO_UPDATE_COREको गलत के रूप में परिभाषित किया गया है, तो स्वचालित अपडेट अक्षम हैं
  • आपके वर्डप्रेस इंस्टॉल को HTTPS कनेक्शन पर WordPress.org से संपर्क करने में सक्षम होना चाहिए, इसलिए आपके PHP इंस्टॉल को भी OpenSSLइंस्टॉल और काम करने की आवश्यकता है
  • Wp-Cron चालू करने की आवश्यकता है, यदि किसी कारण से क्रोन आपके इंस्टॉल के लिए काम करने में विफल रहता है, तो स्वचालित अपडेट भी अनुपलब्ध होगा

अन्य संबंधित लिंक:

मई, 2015 का अपडेट

मैंने यह रेपो बनाया जो मेरे लिए वर्डप्रेस प्रोजेक्ट्स शुरू करने का एक त्वरित तरीका है। मेरा नवीनतम तरीका केवल थीम को नियंत्रित करना है। दूसरे शब्दों में, मैं WP को स्थानीय रूप से स्थापित करता हूं (उपर्युक्त रेपो में सेटअप का उपयोग करके) और उत्पादन पर, फिर मैं प्रत्येक सिस्टम पर कॉन्फिग फाइल को संशोधित करता हूं और gitएक कार्यात्मक साइट प्राप्त करने के लिए अपने थीम को खींचता हूं।


2

इस प्रकार के विकास में "इतना आसान नहीं है और एक कस्टम वर्कफ़्लो की आवश्यकता होती है जो प्रसन्न होने के लिए लंबा समय ले सकता है"।

मुझे सबट्रैड्स, सबमॉड्यूल्स या नेस्टेड रिपोज, गांड में एक बहुत बड़ा दर्द है।

कुछ विचार (सब कुछ ट्रैक करें)।

  1. Git / svn के साथ ऑटो अपडेट सक्षम करें:
    add_filter( 'auto_upgrade_ignore_checkout_status', '__return_true' );

मैनुअल कमिट + ईमेल के जरिए सुरक्षित तरीका:

आप अपने आप को एक स्टेजिंग सर्वर और ईमेल अपडेट सूचनाओं का उपयोग कर सकते हैं, अपडेट कर सकते हैं और लाइव सर्वर पर धक्का दे सकते हैं जिसमें ऑटो अपडेट बंद हैं।

यह आपको इच्छानुसार अपने स्वयं के रेपो के लिए फ़ोल्डरों को कॉपी / पेस्ट करने की अनुमति देता है, जो अक्सर मैं इसे कैसे करता हूं। यह कई स्टेजिंग सर्वरों को क्लोन / नष्ट करने में आसान बनाता है, यह वास्तव में वितरित होने के बाद से इस विधि के साथ लागू होता है।

नकारात्मक पक्ष: फ़ोल्डर, प्रबंधन को कॉपी / पेस्ट करना।

ऑटो विधि

एक बिल्ड स्क्रिप्ट (Phing, Ant, Bash, Capistrano, आदि) और कुछ कस्टम कोड सेट करें जो अपडेट लागू होने पर git एड + कमिट करेंगे और इसे लाइव सर्वर पर भेजेंगे। आप प्लगइन्स / थीम रिपॉज़ को अलग भी कर सकते हैं और फिर स्क्रिप्ट को कंपाइल / मूव / जो कुछ भी कर सकते हैं, और / या मिक्स में कंपोज़र का उपयोग कर सकते हैं।

इस तरह एक वर्कफ़्लो को स्वचालित करना भी अनम्य हो जाता है और केवल इसके लायक है यदि आप निवेश किए गए समय की वास्तविक आवश्यकता देखते हैं।

नकारात्मक पक्ष: अनम्य, बनाने में समय लगता है।

Git का उपयोग बैकअप के लिए नहीं किया जाना चाहिए, और आमतौर पर WP के प्रतिबद्ध इतिहास को क्लोन करने के लिए आपको बोलने की कोई आवश्यकता नहीं है।


0

कुछ और सोचने के बाद, चूंकि मैं निश्चित रूप से अपने आप को बचाने के लिए देशी WP अपडेट का लाभ उठाना चाहता हूं, इसलिए कुछ भी ट्रैक करने का कोई मतलब नहीं है कि WP git का उपयोग करके अपडेट करेगा। यहाँ एक संशोधित विचार है।

root (main project repo)
|-- wordpress (ignored/untracked)
|    |-- wp-content 
|    |    |-- plugins
|    |    |    |-- my-custom-plugin (git repo not connected to parent)
|    |    |    |-- other-plugin (ignored/untracked)
|    |    |    +-- modified-plugin (unignored, added to main project repo)
|    |    |-- themes
|    |    |    |-- my-custom-theme (git repo not connected to parent)
|    |    |    |-- other-theme (ignored/untracked)
|    |    |    +-- modified-theme (unignored, added to main project repo)
|    |    +-- uploads (ignored/untracked)
|    |-- wp-admin
|    +-- wp-includes
|-- wp-config.php (ignored/untracked)
+-- other-files.txt

बेशक, तब मैं ट्रैक करने की क्षमता खो देता हूं कि कौन से प्लगइन्स और थीम वीसीएस के भीतर से परियोजना का हिस्सा हैं, लेकिन मुझे वास्तव में केवल बैकअप उद्देश्यों के लिए इसकी आवश्यकता है, और मैं किसी भी तरह के नियमित बैकअप सिस्टम का उपयोग करूंगा।

तो, केवल एक चीज की वास्तव में कमी है कि मैं चाहता हूं कि एफ़टीपी का उपयोग किए बिना पूरे सर्वर को मैन्युअल रूप से पूरी चीज़ की प्रतिलिपि बनाने के लिए आसानी से पूरे स्टैक को अलग-अलग सर्वर पर तैनात करने की क्षमता हो। किसी को भी उस पर कोई विचार है?


0

ठीक है, मार्क जैक्विथ की बात को यहाँ देखते हुए , शायद मैं गलत रास्ते पर हूँ। यहाँ एक और छुरा है जो सब कुछ ट्रैक करता है।

   root (main project repo)
    |-- wordpress (repo as subtree)
    |-- wp-config.php (ignored/untracked)
    |-- wp-content 
    |    |-- plugins
    |    |    |-- my-custom-plugin (repo as subtree)
    |    |    |-- other-plugin-with-git-repo (repo as subtree)
    |    |    +-- plugin-without-git-repo
    |    |-- themes
    |    |    |-- my-custom-theme (repo as subtree)
    |    |    |-- other-theme-with-git-repo (repo as subtree)
    |    |    +-- theme-without-git-repo
    |    +-- uploads (ignored/untracked)
    +-- other-files.txt

मुझे लगता है कि इसके साथ मुख्य नकारात्मक बात यह है कि एक कस्टम सामग्री निर्देशिका है, जिसने अतीत में मेरे लिए समस्याएँ लिखी हैं जो खराब लिखे गए प्लगइन्स और थीम के साथ सामग्री निर्देशिका को खोजने में सक्षम नहीं हैं।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.