গিট / গিটহাব কি ওয়ার্ডপ্রেস স্থাপনের ভাল সমাধান?


67

আমি বর্তমানে স্থানীয়ভাবে আমার ওয়ার্ডপ্রেস বিকাশ করছি, গিটের সাথে গিটহাবের সাথে আমার কোডটি প্রতিশ্রুতিবদ্ধ করছি এবং তারপর আমার সার্ভারে এসএসহিং করছি এবং আমার কোড আপডেট করার জন্য "গিট টান" করছি। ওয়ার্ডপ্রেস সাইটে কোড স্থাপনের জন্য এটি কি একটি ভাল বিকল্প (এই ক্ষেত্রে আমার স্পষ্টতই আমার সার্ভারে মূল স্তরের অ্যাক্সেস রয়েছে)) আমি ক্যাপিস্ট্রানো মতো জিনিস জানি তবে এটি কি ওয়ার্ডপ্রেস সাইটে স্থাপনার জন্য ওভারকিল হবে? এই ক্ষেত্রে আমি কীভাবে গিট / গিটহাবের সর্বাধিক উপার্জন করতে পারি?


আমি deployhq.com ব্যবহার করি এবং তাদের দেওয়া বৈশিষ্ট্যগুলি সত্যই পছন্দ করে। এটি একটি প্রদত্ত পরিষেবা তবে আমি দামটি যুক্তিসঙ্গত বলে মনে করি। যদি আপনি ডাব্লুপি ইঞ্জিন (আমি করি) দিয়ে হোস্টিংয়ের ঘটনা ঘটে তবে তারা সম্প্রতি একটি গিট পুশ বৈশিষ্ট্যটি কার্যকর করেছে: git.wpengine.com
dwenaus

উত্তর:


60

আমি এর জন্য গিট ব্যবহার করি এবং এটি সত্যিই ভালভাবে কাজ করে দেখায়। কয়েকটি পরামর্শ:

  • আপনার আপলোড ডিরেক্টরি (ডাব্লুপি-কন্টেন্ট / আপলোড) ডিরেক্টরিটি আপনার .gitignoreফাইলে যুক্ত করুন।
  • আপনার ডেভলপমেন্ট সিস্টেমে একটি ওয়েব সার্ভার এবং ডাটাবেস সার্ভার চালান যাতে আপনি উত্পাদনগুলিতে চাপ দেওয়ার আগে স্থানীয়ভাবে পরিবর্তনগুলি পরীক্ষা করতে পারেন।
  • আপনার ডেটাবেস সংযোগ সেটিংসটি ডেভ এবং প্রোডের মধ্যে সামঞ্জস্য রাখুন বা .gitignoreআপনার প্রোডাকশনগুলি ওভাররাইট করে আপনার বিকাশ ওয়ার্ডপ্রেস সেটিংস রোধ করতে আপনার ফাইলে wp-config.php যুক্ত করুন ।
  • ওয়ার্ডপ্রেসের অ্যাডমিন ইন্টারফেস ব্যবহার করে আপনার প্রোডাকশন সিস্টেমে প্লাগইনগুলি আপডেট করা থেকে বিরত থাকুন - সর্বোপরি, আপনার গিট অনুলিপি আপনি যে কোনও প্লাগইন আপডেট করবেন তা ততক্ষণ আপনি চাপ / চেকআউট করার সাথে সাথেই ওভাররাইট করে দেবেন, সবচেয়ে খারাপ আপনি বিরোধ পাবেন। আপনার উন্নয়ন সিস্টেমে অ্যাডমিন ইন্টারফেস ব্যবহার করে আপনার আপডেটগুলি করুন, প্রতিশ্রুতি দিন, পুশ করুন এবং উত্পাদনে চেকআউট করুন।
  • একটি Git জোড়ার কথা বিবেচনা করুন post-receiveস্বয়ংক্রিয়ভাবে ডিরেক্টরি আপনি আপনার ওয়েব সার্ভার (যেমন মাধ্যমে ওয়ার্ডপ্রেস প্রকাশ করার জন্য ব্যবহার মধ্যে হুক আপনার আপডেট চেকআউট /var/www)। এটি আপনাকে কেবলমাত্র নিজের ওয়েব সার্ভারের ডকুমেন্টের মূলের মধ্যে খুঁজে পাওয়া কোনও গিট মেটাডেটা এড়িয়ে এটিকে ফাইলগুলি নিজেই পরীক্ষা করে দেখার অনুমতি দেয় এবং এর অর্থ হ'ল আপনি যে কোনও অনুমতি পরিবর্তন পোস্ট-হুকের সাথে যুক্ত করতে পারেন যাতে প্রতিবার আপনার অনুমতিগুলি ধারাবাহিক থাকে। একটি উদাহরণ নীচে অন্তর্ভুক্ত করা হয়েছে:

    #!/bin/sh
    unset GIT_INDEX_FILE
    # the directory your web server serves wordpress from 
    export GIT_WORK_TREE=/var/www/example.com/
    # the local directory where your remote git repository sites
    export GIT_DIR=/home/git/repos/example.com.git/
    # below user is for debain - you want the user and group your webserver uses
    sudo git checkout -f
    sudo chown -R www-data:www-data $GIT_WORK_TREE
    sudo chmod -R 755 $GIT_WORK_TREE
    sudo chmod 600 $GIT_WORK_TREE/wp-config.php
    sudo chmod -R 775 $GIT_WORK_TREE/wp-content
    

টাইপোর পরে কি ব্যাকটিকটি প্রদর্শিত হচ্ছে unset GIT_INDEX_FILE?
ওয়েস্টন রাউটার

জেমস আমার ওয়ারফক্লো সম্পর্কে যথেষ্ট সংক্ষিপ্তসার রেখেছেন, আমি যখন স্টেজিং / টেস্ট / প্রোডাকশন সাইটটি স্থাপন করি তখন আমি কেবল গিট রেপোতে থিম ফাইলগুলি যুক্ত করি। এছাড়াও আমি সম্পূর্ণরূপে রিমোট সার্ভারে পোস্ট-রিসিভ হুক ব্যবহার করার পরামর্শ দিচ্ছি, লগ ইন এবং গিট টান ইত্যাদি সংরক্ষণ করে
ডেভাম্যাক


আমি ওয়ার্ডপ্রেসে প্লাগইন আপডেট করার প্রক্রিয়াটির সাথে পরিচিত নই তবে প্লাগইন আপডেট ডাটাবেসে পরিবর্তন আনলে কী হয়? কীভাবে এই স্থানীয় পরিবর্তনগুলি প্রযোজনা সার্ভারে চাপ দেওয়া হবে?
ব্যবহারকারী

@ ব্যবহারকারী যা প্লাগইন থেকে প্লাগইনে পরিবর্তিত হয়। কোর ওয়ার্ডপ্রেস স্কিমা সংস্করণ চেক করে, তাই আপনি যদি বিল্ট ইন আপডেটার ব্যবহার না করে ওয়ার্ডপ্রেস আপডেট করেন তবে এটি ডিবি আপডেটগুলি আলাদাভাবে করবে। আমার পরামর্শটি হ'ল আপনি যদি ডিবি-তে লিখিত কোনও প্লাগইন ব্যবহার করছেন, আপনি ওয়ার্ডপ্রেসের অ্যাডমিন অঞ্চলটি পরীক্ষা করে দেখুন যেহেতু আপনি প্লাগিন কোডটি কীভাবে আপডেট করেন তা নির্বিশেষে স্কিমা আপডেটগুলি সাধারণত সেখানে পরিচালিত হয়।
জেমস হেডডেন

22

আমি ক্যাপিস্ট্রানো সেট আপ করার জন্য অত্যন্ত সুপারিশ করব - এটি প্রথমবারের মতো সামান্য কাজ করবে তবে এর পরে আপনি এটি সহজেই নতুন সেটআপগুলির জন্য ব্যবহার করতে পারেন।

এর প্রধান সুবিধা হ'ল

  • আপনার ডেস্কটপ থেকে মোতায়েন করতে সক্ষম হচ্ছে। এটি খুব বেশি শোনায় না তবে আপনার রিমোট সার্ভারে ssh-ing করা, এবং গিট টান করা এখনও পাছায় ব্যথা।
  • আপনার যদি প্রয়োজন হয় তবে আগের সংস্করণে সহজ রোলব্যাক
  • মঞ্চায়ন / উত্পাদন পরিবেশে সেটআপ স্থাপনার মতো দুর্দান্ত জিনিসগুলি করতে সক্ষম।

আমি কীভাবে জিনিসগুলি সেট আপ করব তা দেখানোর জন্য আমি ক্যাপিস্ট্রানো স্ক্রিপ্টগুলির একটি সেট যুক্ত করছি।

Capfile

require 'railsless-deploy'
load 'config/deploy'`

deploy.rb

set :stages, %w(production staging local)
set :default_stage, "staging"
require 'capistrano/ext/multistage'

set :application, "" # your application name - used to set directory name

set :scm, :git
set :repository, "" # use the ssh repo access line you get from the provider eg git@github.com:name/repo.git
set :deploy_to, "/var/www/#{application}" #this is the root site folder on the remote server
set :deploy_via, :remote_cache # get directly from repo
set :copy_exclude, [".git", ".DS_Store", ".gitignore", ".gitmodules", "wp-config.php"]

# makes capistrano ask for sudo password or other remote inputs
default_run_options[:pty] = true

namespace :tasks do
    task :fix_links  do
        run "ln -nfs #{shared_path}/uploads #{release_path}/wp-content/uploads"
        run "ln -nfs #{shared_path}/wp-config.php #{release_path}/wp-config.php"
      run "ln -nfs #{shared_path}/blogs.dir #{release_path}/wp-content/blogs.dir"
      run "ln -nfs #{shared_path}/.htaccess #{release_path}/.htaccess"
      run "sudo chown -R www-data.www-data #{release_path}/"
    end
end

after "deploy", "tasks:fix_links"

এবং পরিশেষে, একটি নমুনা পরিবেশ ফাইল (যদি আপনি মাল্টিস্টেজ রত্ন ব্যবহার করেন, তবে আপনার পরিবেশের প্রতিটি স্তরের জন্য আপনি এর মধ্যে একটি থাকতে পারেন, যেমন স্থানীয়, মঞ্চায়ন, উত্পাদন)

কনফিগ / local.rb

server "", :app  #hostname
set :branch, 'develop' #choose branch to deploy
set :use_sudo, false #don't use sudo

set :deploy_to, "/var/www/#{application}" #overwrite default path to deploy to

এই ফাইলগুলি টুইট করা ছাড়া কাজ নাও করতে পারে এবং আপনার কিছু প্রাথমিক ক্যাসিস্ট্রানো জ্ঞান প্রয়োজন, তবে আশা করি কিছু লোককে সাহায্য করবে।

এটি আমি ব্যবহার করা প্রথম টিউটোরিয়াল যা আমাকে ক্যাপিস্ট্রানো এবং ওয়ার্ডপ্রেস দিয়ে যেতে সাহায্য করেছিল: http://theme.fm/2011/08/tutorial-deploying-wordpress-with-capistrano-2082/


2
আপনি যদি গিট পোস্ট-রিসিভ হুক ব্যবহার করেন তবে তারা রিমোট সার্ভারে প্রবেশ করার প্রয়োজনটিকে অস্বীকার করে এবং একটি গিট টান করে
Davemac

git post-receiveহুক যাওয়ার উপায়!
ব্রুক হেনসলে

3
@ পোস্ট-রিসিভ হুকের সাথে সমস্যাটি হ'ল সমস্যাটি হ'ল যদি আপনি কোনও শালীন সিআই অবকাঠামো না পেয়ে থাকেন তবে একটি ভুল সংযোজন আপনার পুরো সাইটটিকে নামিয়ে আনতে পারে। আপনি যদি আপনার রেপো অ্যাক্সেস করে থাকেন এমন একাধিক ডেভ নিয়ে একটি প্রকল্পে কাজ করছেন তবে এর সম্ভাবনা বেড়ে যায়। এ কারণেই আমি ব্যক্তিগতভাবে এর পরিবর্তে ক্যাপিস্ট্রানো মাধ্যমে স্থাপন করতে চাই, তবে অন্যরা কেন এতটা চিন্তা করতে পারে না তা আমি দেখতে পাচ্ছি।
আনু

আপনি একটি খালি গিট রেপো ব্যবহার করেন সুতরাং মার্জ সমস্যাটি প্রাসঙ্গিক নয়
ডেভাম্যাক

9

আমি আসলে এই বিষয়টিতে একটি ওয়ার্ডক্যাম্প উপস্থাপনা করেছি। নিজেকে পুনরাবৃত্তি করার পরিবর্তে, এখানে এটির একটি স্ক্রিনকাস্ট এবং এখানে আমি যা আলোচনা করেছি তার সাথে একটি খুব সহজ ডিপ্লোয়মেন্ট স্ক্রিপ্ট রয়েছে

সংক্ষেপে, আমি রেপো হোস্ট করার জন্য গিটহাব ব্যবহার করি এবং গিট রেফের উপর ভিত্তি করে পরিবর্তনগুলি স্থাপন করতে একটি ওয়েবহুক ব্যবহার করি। এটি আপনাকে ভিনসেন্ট ড্রিজেনের গিট ব্রাঞ্চিং মডেলটি ব্যবহার করতে দেয় এবং স্বয়ংক্রিয় স্থাপনার সাহায্যে আপনাকে সীমাহীন ওয়েবহেডস, স্টেজিং সার্ভার, টেস্টিং সার্ভার ইত্যাদির জন্য উন্মুক্ত করে দেয়। আমি পৃথক দেব / উত্পাদন সংস্করণ বজায় রাখার সময় wp-config.php সংস্করণ নিয়ন্ত্রণের আওতায় রাখি (ফাইলগুলির নাম পরিবর্তন করে এবং সিলেকিং করে) cover


5

আমি জানি যে এই প্রশ্নটি এখন আরও পুরানো, কারণ আমি এখানে উত্তর হিসাবে এটি দেখিনি, আমি একা-সাইট গিট ভিত্তিক সেটআপ এবং স্থাপনার জন্য সাধারণত যা করি তা ভাগ করে নিতে চাই এবং এটি একাধিক থেকে কাজ করার সাথেও সত্যই ভাল কাজ করছে ডিভাইস, অবস্থান এবং একাধিক বিকাশকারী (সমস্ত গেটের পক্ষে সাধারণ হিসাবে এটি পরিচালনা করে তাদের নিজস্ব স্থানীয় রেপো রয়েছে) with

আমি নিম্নোক্তভাবে নিম্নলিখিত সেটআপটি পরামর্শ দিতে পারি:

এটি এর মধ্যেও বর্ণিত হয়েছে (যদি আপনার মাথাটি চারপাশে মোড়ানোর জন্য আপনার দ্বিতীয় উত্সের প্রয়োজন হয়):

এটি মূলত (কমপক্ষে তিনটি রেপ সহ) কাজ করে:

  1. ওয়েবসাইটটি গিটারের আওতায় সরাসরি হোস্টে রাখছে,
  2. লাইভ হোস্টে একটি নতুন বেয়ার গিট সংগ্রহস্থল তৈরি করুন।
  3. এবং তারপরে খালি সংগ্রহস্থল থেকে আপনার স্থানীয় বিকাশের গিট রেপোগুলিতে কাঁটাচামচ দিন।

কাজটি শেষ হয়ে গেলে আপনি ক্লোন করেছেন এমন রিমোট বেয়ার রেপোর বিরুদ্ধে চাপ দিন। বেয়ার রেপোতে লাইভ রেপোগুলির সাথে সিঙ্ক করার জন্য হুক রয়েছে (উপরের কোডগুলিতে প্রাইম বলে )।

রেপোতে ওয়ার্ডপ্রেসের নির্দিষ্ট সেটিংস হিসাবে আমার কাছে এটি রয়েছে .gitignore:

# uploads are data, excluded from source tree
wp-content/uploads/

বাকি incl। প্লাগইন এবং থিম কনফিগারেশন আমি সংস্করণ / কনফিগারেশন নিয়ন্ত্রণের আওতায় রাখি। এটি আমাকে লাইভ ব্যবহারের আগে কোডগুলি সহজেই পরিবর্তনগুলি এবং পর্যালোচনা করার অনুমতি দেয় । আমি আমার নিজের পরিবর্তনগুলির সাথে প্রত্যন্ত গাছের বিপরীতে আরও সহজেই মার্জ করতে পারি। এটি বিশেষত ওয়ার্ডপ্রেস কোরের বিরুদ্ধে কার্যকর যা গিথুব এ উপলব্ধ

এটি আমার বেশিরভাগ ওয়ার্ডপ্রেস প্রয়োজনের জন্য বেশ ভাল কাজ করে। খালি রেপো আপনাকে বিরোধী পরিবর্তনগুলি ঠেকানো থেকে বিরত রাখে। এটি লাইভ-সাইট আপডেট করার আগে প্রথমে একটি রিমোট কপির সাথে সিঙ্ক করে। তার মানে, লাইভ-সাইট আপডেট করা সাধারণত বেশ দ্রুত হয়। হুকগুলির কারণে আপনি যদি পছন্দ করেন তবে পরে ওয়ার্ডপ্রেস আপডেট হুকও কল করতে পারেন।

গিথুব হুকের সাহায্যে এটি কতটা উন্নত করা যায় তা যদি পরীক্ষা না করে থাকেন তবে আমার সাধারণত তাদের প্রয়োজন হয় না কারণ কোডটি স্থানীয় সংস্করণ নিয়ন্ত্রণের অধীনে, গিথুব নয় not

প্রথমবারের মতো একটি সিস্টেম সেট আপ করার জন্য, আপনার দূরবর্তী হোস্টে সমস্ত সরঞ্জাম উপলব্ধ রয়েছে কিনা তা মূল্যায়নের জন্য আপনার কিছুটা সময় নেওয়া উচিত:

  • এসএসএইচ অ্যাক্সেস
  • এলেবেলে
  • আপনি একটি ব্যক্তিগত ডিরেক্টরিতে ফাইল এবং উপ-ডিরেক্টরি স্থাপন করতে পারেন (যেমন আপনার খালি গিট রেপোর জন্য)

প্রথমবারের জন্য সেটআপ-সময়টি এক দুই ঘন্টার মধ্যেই সম্ভব হওয়া উচিত। পুরো পরিবেশ এবং আপনি প্রথম ধাক্কা প্রকাশ।

আপনার হোস্টের উপর নির্ভর করে আপনি .gitওয়েব-অ্যাক্সেস থেকে ডিরেক্টরিটি রক্ষা করতেও পারেন । এখানে এমন কয়েকটি উদাহরণ .htaccessকোড রয়েছে যা এমনকি ওয়ার্ডপ্রেসকে একটি উপ-ডিরেক্টরিতে রাখে, যা রেপোতে অনলাইনে প্রকাশিত হয় না (দরকারী):

Options -Indexes

# fix trailing slash for .git / make it disappear + .gitignore and similar files.
RedirectMatch 404 ^/\.git(.*)$

# mask 403 on .ht* as 404
<Files ~ "^\.ht">
  Order Deny,Allow
  Allow from all
  Satisfy All
  Redirect 404 /
</Files>

RewriteEngine On
RewriteBase /

# map everything into public and set environment var
# to tag the request being valid
RewriteCond %{ENV:REDIRECT_sitealias} !set
RewriteRule ^(.*)$ /public/$1 [E=sitealias:set,L]

সংক্ষেপে, সর্বজনীন ডিরেক্টরি ভিতরে না সমস্ত কিছু অনলাইন নয়। পাবলিক ডিরেক্টরি ভিতরে ওয়ার্ডপ্রেস কোডবেস হতে পারে উদাহরণস্বরূপ, .htaccessসেখানে সেখানে আপনার তখন প্রয়োজন:

RewriteEngine On
# mask as 404 if directly accessed
RewriteCond %{ENV:REDIRECT_sitealias} !set
RewriteRule .* - [L,R=404]

এটি জনসাধারণের সরাসরি অ্যাক্সেসকে বাধা দেয় । এটির একটি অংশ। Htaccess -foo আপনি এখানে রূপরেখার সন্ধান করতে পারেন: .htaccess এর অনুরোধগুলি 403 এর পরিবর্তে 404 এ ফিরে আসবে । পরিবেশের ভেরিয়েবলের জন্য আপনার এটি পরীক্ষা করা দরকার যদি এটি আপনার পরিবেশে কাজ করে। এছাড়াও আপনি সিদ্ধান্ত নিতে হবে যে আপনি এটিকে সংস্করণ নিয়ন্ত্রণে রাখছেন কিনা not

হোস্টিংয়ের উপর যদি আপনার আরও নিয়ন্ত্রণ থাকে তবে আপনি এখানে আরও স্টাফ করতে পারেন (এবং আলাদাভাবে / আরও অনুকূলিতকরণ), উপরের উদাহরণগুলি সাধারণ শেয়ারড-হোস্টিং পরিবেশের জন্য লক্ষ্যযুক্ত (এটি জিআইটি সরবরাহ করে, কিছু ব্যবহারকারী বলেছেন যে আপনি এটিকে নিজের হিসাবে সহজে ইনস্টল করতে পারবেন) ঠিক আছে, আমি সাধারণত আমার হোস্টগুলিকে এগুলি সরবরাহ করতে বলি কারণ তারা যদি যত্ন নেয় তবে আমি তাদের পছন্দমতো এটিই পছন্দ করি)।

নেতিবাচক দিক থেকে, এটি অন্যান্য সাধারণ উত্তরগুলির মধ্যেও বর্ণিত কিছু সাধারণ সমস্যা রয়েছে। একটা জিনিস যার জন্য আমি গর্বিত নই তবে ডেটাবেস সার্ভারকে ডেভেলপমেন্ট সার্ভারে বিকাশের অনুলিপিতে রাখার জন্য ডেভলপমেন্ট হোস্টকে তার হোস্ট ফাইলটিতে পরিবর্তন দেওয়া কী কাজ করে works সুতরাং আপনি একটি ডাটাবেস কনফিগারেশন রাখতে পারেন। সত্যিই দুর্দান্ত এসএসপি না। কারণ শংসাপত্র।

স্বয়ংক্রিয় ব্যাকআপ

তবে আমি সাধারণত এখানে খুব বেশি যত্ন নিই না বরং এর পরিবর্তে দূরবর্তী সিস্টেমে দৈনিক ব্যাকআপ চালানো হয় যা ক্রমবর্ধমান যা তারা নিজেরাই তখন অন্য কোনও দূরবর্তী স্থানে সংরক্ষণ করে। এটি সহজ এবং সস্তা এবং আপনাকে ওয়ার্ডপ্রেস ইনস্টল পাশাপাশি ফাইল-আপলোডস, ডাটাবেস এবং গিট রেপো উভয়ই পুনরুদ্ধার করতে দেয় । এছাড়াও আমার ব্যাকআপ কমান্ডগুলির জন্য আমি পুরোপুরি ঠিক নাও হতে পারি, তবে সেগুলি আমার পক্ষে কাজ করে:

mysql: mysqldump --host=%s -u %s --password=%s %s| gzip > %s
git  : git gc
       git bundle
files: tar --force-local -czf %s %s

আমি এখানে যা পরামর্শ দিচ্ছি তা হ'ল আপনি আপনার ওয়ার্ডপ্রেস ইনস্টলেশনটির চারপাশের প্রক্রিয়াগুলিকে ওয়ার্ডপ্রেসের বাইরে রাখুন। তাদের একটি নির্দিষ্ট সিস্টেমে চালনা করা দরকার, যাতে আপনি সাধারণত এগুলি অ্যাপ্লিকেশনের মধ্যে রাখেন না (যেমন অ্যাপ্লিকেশনটি নিচে যেতে পারে তবে আপনার এটি চালিয়ে যাওয়া দরকার ) need

টিম ওয়ার্কের জন্য সক্ষম

আর একটি দুর্দান্ত সুবিধা হ'ল আপনার সাইটটি ইতিমধ্যে টিম-কাজের জন্য সক্ষম। অতিরিক্ত খালি রেপো ধন্যবাদ আপনাকে খুব বেশি ভুল করতে পারবেন না এবং এমনকি আপনি আপনার সহকর্মীদের সাথে মাস্টার বা লাইভ ব্রাঞ্চ বাদে দূরবর্তী শাখাগুলি ভাগ করতে পারেন।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.