रेल 3 (3.0.7) प्रोजेक्ट के लिए PostgreSQL डेटाबेस के रूप में उपयोग के लिए विंडोज 7 पर पोस्टग्रेज स्थापित करने का एक तरीका।
प्रस्तावना (आप इस बिट को छोड़ सकते हैं)
तो पहली बात यह बताना है कि Postgres .sqlite3 से केवल एक अलग फ़ाइल एक्सटेंशन नहीं है, यह आपके डेटाबेस के प्रबंधन के लिए एक संपूर्ण तंत्र है। जैसे कि इसका एक क्लाइंट/सर्वर मॉडल है, जिसमें से आपको अपने रेल ऐप के डेटाबेस के रूप में पोस्टग्रेज़ का उपयोग करने के लिए दोनों को सेट करना होगा।
पोस्टग्रेज सेटअप बनाम लगभग सहज एसक्लाइट सेटअप के काफी दर्द से गुजरने के लिए प्रेरणा:यदि आप हेरोकू में तैनात कर रहे हैं, तो वे वर्तमान में पोस्टग्रेस का उपयोग कर रहे हैं, इसलिए पोस्टग्रेस के साथ उपयोग किए जाने पर एसक्लाइट 3 पर ठीक आपकी कुछ एसक्यूएल कॉल टूट जाएंगी। पोस्टग्रेज़ को स्थानीय रूप से डीबग करना बहुत आसान है, बजाय इसके कि वह हरोकू के सर्वर पर हो।
इसलिए मैंने निम्नलिखित चीजें कीं:(अस्वीकरण:हो सकता है कि मैं अपने द्वारा की गई कुछ चीजों को शामिल करना भूल गया हूं... इसे काम करने में मुझे 48 घंटे से अधिक का समय लगा... आपके लिए काम नहीं है तो विशाल (2300 पृष्ठ !!) लेकिन बहुत गहन पोस्टग्रेज प्रलेखन में मदद करनी चाहिए। मैं इसे वैसे भी डाउनलोड करने की सलाह दूंगा यदि आप पोस्टग्रेज का उपयोग करने के बारे में गंभीर हैं क्योंकि इसमें बहुत सारी सामग्री है जिसे मैंने अभी शुरू किया है के महत्व को समझने के लिए।) (दूसरा अस्वीकरण:मैंने लगभग निश्चित रूप से 20 समझदार पोस्टग्रेज दिशानिर्देशों को तोड़ा है और ऐसा करते समय पोस्टग्रेज डेटाबेस में सुरक्षा छेदों को उजागर किया है। यदि कोई स्पष्ट चीजें हैं जो एक अनुभवी पोस्टग्रेज उपयोगकर्ता से असहमत हैं, तो कृपया मेरी पोस्ट को संपादित करें।)
.चरण 1. यहां से PostgreSQL v9.0.4-1 को डाउनलोड और इंस्टॉल करें क्योंकि यहां कहा गया है कि केवल 9.0.x विंडोज 7 पर समर्थित होगा। मैंने सभी डिफ़ॉल्ट विकल्प रखे और पोस्टग्रेज इंस्टॉलर द्वारा एक (फिर से) के लिए संकेत दिए जाने पर पासवर्ड के रूप में 'गुप्त' का उपयोग किया। पूरी तरह से सुनिश्चित नहीं है कि इंटरनेट पर उस जानकारी को साझा करने के क्या परिणाम हैं... जल्द ही पता चल जाएगा कि मुझे यकीन है)। चरण 3 में आपको इस पासवर्ड की आवश्यकता होगी।
.चरण 2. पर्यावरण चर इस तरह बदलें कि पथ (सिस्टम के लिए , उपयोगकर्ता नहीं (मुझे यकीन नहीं है कि यह महत्वपूर्ण है या नहीं)) है:C:\Program Files\PostgreSQL\9.0\bin
(n.b. मैं 64-बिट विंडो पर हूं इसलिए इसे 'C:\Program Files (x86)\PostgreS...') में 32-बिट के लिए इंस्टॉल नहीं किया जा रहा है)
PostgreSQL\9.0 फ़ोल्डर के एक्सेस अधिकारों को बदलना न भूलें और फ़ोल्डर या सामग्री पर किसी भी डिफ़ॉल्ट रीड ओनली अधिकारों को हटा दें। (इन्हें प्रभावी होने के लिए आपको अपने कंप्यूटर को पुनरारंभ करने की भी आवश्यकता हो सकती है - धन्यवाद @Gavin - हालांकि इसकी संभावना नहीं है)।पी>
.चरण 3. एक नया डेटाबेस बनाने की कोशिश करके परीक्षण पोस्टग्रेज इंस्टॉलेशन:कमांड लाइन से:createdb -U postgres mydb_as_postgres
.आपको अभी पासवर्ड दर्ज करने के लिए प्रेरित किया जाना चाहिए, यदि आप नहीं हैं तो हो सकता है कि आपको पहले सर्वर शुरू करने की आवश्यकता हो (मुझे याद नहीं है कि मुझे ऐसा करने की आवश्यकता है या नहीं)। सबसे आसान तरीका है pgAdmin III, जो किसी फ़ोल्डर में 'pgAdmin3.exe' होना चाहिए जैसे C:\Program Files\PostgreSQL\9.0\bin
. एक बार जब आप pgAdmin III शुरू कर लेते हैं तो बाईं ओर 'ऑब्जेक्ट ब्राउज़र' नामक एक पैनल होना चाहिए। इसमें एक पेड़ होना चाहिए:
सर्वर समूह> सर्वर> PostgreSQL 9.0 (लोकलहोस्ट:5432)
'PostgreSQL 9.0 (लोकलहोस्ट:5432)' पर राइट क्लिक करें और 'कनेक्ट' चुनें।
createdb -U postgres mydb_as_postgres
कमांड को 'mydb_as_postgres' नामक एक नया डेटाबेस बनाना चाहिए जिसे आप pgAdmin III को फायर करके और 'PostgreSQL 9.0 (लोकलहोस्ट:5432)' पर डबल क्लिक करके देख सकते हैं। इसके तहत यह होना चाहिए:
Databases (2)
जिसमें mydb_as_postgres
. नामक 2 डेटाबेस सूचीबद्ध होने चाहिए और postgres
मैंने इसे _as_postgres
. कहा है क्योंकि -U postgres
कमांड का हिस्सा पोस्टग्रेज़ को पोस्टग्रेज़ उपयोगकर्ता के साथ डेटाबेस बनाने के लिए कहता है क्योंकि यह मालिक है, जिसे आपको निर्दिष्ट करने की आवश्यकता होती है जब आप पोस्टग्रेज़ उपयोगकर्ता के रूप में साइन इन नहीं होते हैं। मेरे पास मेरी सभी फाइलें 'एजेम्स' उपयोगकर्ता के रूप में संग्रहीत हैं, हालांकि यदि आप वही हैं और एक अलग उपयोगकर्ता के रूप में साइन इन होने पर अपना ऐप विकसित करना चाहते हैं तो आपको उस उपयोगकर्ता के लिए पोस्टग्रेस 'भूमिका' बनाना होगा (चरण देखें) 4).
.चरण 4. पीजीएडमिन III के माध्यम से। लॉग इन रोल्स पर राइट-क्लिक करें (जो मेरे लिए है):
ऑब्जेक्ट ब्राउज़र> सर्वर समूह> सर्वर> पोस्टग्रेएसक्यूएल 9.0 (लोकलहोस्ट:5432)> लॉगिन भूमिकाएं
लॉग इन रोल्स पर राइट-क्लिक करें और रोल नेम में 'न्यू लॉग इन रोल...' चुनें, अपने ऑपरेटिंग सिस्टम यूजर नेम में डालें, जो मेरे लिए एजेम्स है, और 'रोल प्रिविलेज' टैब के तहत अपना पासवर्ड भरें, मैंने सभी की जांच की बक्से, लेकिन एक अनुभवी पोस्टग्रेज उपयोगकर्ता केवल 'मूल भूमिकाओं से प्राप्त अधिकारों' की जांच करने की दृढ़ता से अनुशंसा करेगा और 'डेटाबेस ऑब्जेक्ट्स बना सकता है' लेकिन मैं एक अनुभवी उपयोगकर्ता नहीं हूं और पोस्टग्रेस में रेल एसक्यूएल कॉल को डीबग करना चाहता हूं इसलिए मैंने 'सुपरयुसर' और 'कैन क्रिएट रोल्स' को भी चेक किया, बस मामले में।
.चरण 5. अब आप पोस्टग्रेज़ उपयोगकर्ता के रूप में साइन इन किए बिना एक नया डेटाबेस बनाने में सक्षम होना चाहिए। टाइप करने का प्रयास करें:
createdb mydb_as_user
उम्मीद है कि यह आपके काम आए।
.चरण 6. ठीक है, तो आपके पास अपने रेल 'डीबी/' निर्देशिका में विकास.sqlite3 फ़ाइल है। प्रारंभ में मैं इसे sqlite3 से psql में परिवर्तित करने के रूप में अगला परीक्षण सेट करने जा रहा था। हालांकि मैं इसे काम पर नहीं ला सका, लेकिन मैंने अपने प्रयासों को यहां छोड़ दिया क्योंकि समाधान के लिए मुझे एक रेल ऐप में डेटा की आवश्यकता थी Heroku.com (इसके बजाय चरण 7 से समाधान देखें)। उन लोगों के लिए जिनके पास केवल स्थानीय ऐप है और हेरोकू में कोई डेटा नहीं है, वे उसी दृष्टिकोण का उपयोग नहीं कर सकते हैं, इसलिए उन्हें इस तरह कुछ तलाशने की आवश्यकता हो सकती है:
x6.1 सबसे पहले, अपनी कमांड लाइन से कमांड को आज़माकर 'psql' का परीक्षण करें जैसे:
psql mydb_as_user
यह नीचे जैसा कुछ प्रदर्शित होना चाहिए (आपके द्वारा अपना पासवर्ड टाइप करने के बाद):
C:>psql mydb_as_user
Password:
psql (9.0.4)
WARNING: Console code page (850) differs from Windows code page (1252)
8-bit characters might not work correctly. See psql reference
page "Notes for Windows users" for details.
Type "help" for help.
mydb5=#
x6.2 दर्ज करने का प्रयास करें:
CREATE TABLE users_table (id integer, "name" text);
इसे प्रदर्शित करना चाहिए:
CREATE TABLE
mydb5=#
यदि आप pgAdmin III में चेक इन करते हैं, तो आपको वहां नीचे दी गई तालिका देखनी चाहिए:
ऑब्जेक्ट ब्राउज़र> सर्वर समूह> सर्वर> पोस्टग्रेएसक्यूएल 9.0 (लोकलहोस्ट:5432)> डेटाबेस> mydb_as_user> स्कीमा> सार्वजनिक> टेबल्स> उपयोगकर्ता_टेबल>
x6.3 ठीक है, रूपांतरण का प्रयास करने के लिए आगे। विंडोज़ के लिए डाउनलोड किया गया sqlite-shell पहले से संकलित बाइनरी।
x6.4 एक नई निर्देशिका बनाएं, मैंने 'C:\temp' का उपयोग किया और उसमें sqlite3.exe और आपकी development.sqlite3 फ़ाइलें डाल दीं।
x6. 5 निम्नलिखित कमांड का उपयोग करें (जो यहां से हैं) विकास को डंप करने के लिए। sqlite3 डेटाबेस पोस्टग्रेज में।
sqlite3 development .dump | psql development2
आपको एक त्रुटि मिल सकती है जैसे:
psql: FATAL: database "development2" does not exist
x6.6 तो मैं pgAdmin III में गया और एक विकास 2 डेटाबेस बनाया, फिर से आदेश की कोशिश की और प्राप्त किया:
ERROR: syntax error at or near "PRAGMA"
LINE 1: PRAGMA foreign_keys=OFF;
^
BEGIN
COMMIT
जैसा मैंने कहा, मैं इसे काम पर नहीं ला सका। मुझे यकीन है कि उस त्रुटि को दूर करने का एक तरीका है, लेकिन मैंने एक अलग तरीके से सोचा और इसलिए मैंने इसके बजाय इस समाधान का उपयोग किया (जिसके लिए आपका डेटा रखने के लिए एक हेरोकू खाते की आवश्यकता होती है और टैप्स मणि का उपयोग करके sqlite3 से psql में रूपांतरण करता है (I विश्वास):
.चरण 7. pgAdmin III में मैंने एक और डेटाबेस बनाया। गुण टैब के तहत मैंने नाम सेट किया है:'विकास', मालिक:'एजेम्स' (इसे अपने विंडोज उपयोगकर्ता नाम से बदलें)। और विशेषाधिकार टैब के तहत, भूमिका सेट करें:'सार्वजनिक' और सभी विकल्प की जांच की (सोचा कि यह अनियंत्रित पर रीसेट हो जाता है इसलिए मुझे यकीन नहीं है कि यह आवश्यक है)।
.चरण 8. जोड़ेंgem 'pg', '0.11.0'
आपकी मणि फ़ाइल में। आप शायद इसे भी हटाना चाहेंगे:gem 'sqlite3'
इस समय भी।
.चरण 9. यहां सुझाए गए अनुसार database.yml सेट करें:
development:
adapter: postgresql
database: db/development
username: AJames # replace this with your own user name
password: secret # replace this with your own password
host: localhost
encoding: UTF8
pool: 5
timeout: 5000
यदि आप एक ओपन सोर्स प्रोजेक्ट पर काम कर रहे हैं और नहीं चाहते कि आपका पासवर्ड सार्वजनिक रूप से उपलब्ध कराया जाए, तो रेल ऐप में डेटाबेस पासवर्ड को सुरक्षित रूप से उपलब्ध कराने के कुछ उत्तरों पर एक नज़र डालें।
.चरण 10. अपने रेल ऐप की रूट निर्देशिका में कमांड लाइन से चलाएं:rake db:migrate
यह पोस्टग्रेज डेटाबेस में नया स्कीमा और सभी टेबल बनाएगा।
.चरण 11. रन heroku db:pull
अपने सभी डेटा को नीचे और अपने नए खाली पोस्टग्रेज डेटाबेस में खींचने के लिए अपनी कमांड लाइन से (फिर से आपके रेल ऐप की रूट डायरेक्टरी में)। मुझे लगता है कि इस समय आपका नल रत्न आपके लिए यह काम कर रहा होगा।
.चरण 12. उम्मीद है कि कोई चरण 12 नहीं है! ... और यह अब आपके लिए काम करना चाहिए। हैप्पी आरओआर पोस्टग्रेएसक्यूएल डिबगिंग! कृपया संपादित करें, या इसमें कोई त्रुटि होने पर मुझे बताएं।
साथ ही, यहां उन अतिरिक्त सामग्री की सूची दी गई है जो दिलचस्प/उपयोगी हो सकती हैं:
- यह पोस्टग्रेज पासवर्ड के बारे में एक ब्लॉग पोस्ट है, वे किस लिए हैं, आपको उनकी आवश्यकता क्यों है, उन्हें कैसे बदलना है आदि।
- यह, 'एक स्थानिक डेटाबेस बनाना' के तहत, नए लोगों के लिए यह समझने के लिए उपयोगी है कि pg_hba.conf क्या है और दूसरा लिंक जो रेनो ने ऊपर दिया, 'pgAdmin III GUI का उपयोग करना' के तहत यह देखने के लिए उपयोगी है कि पोस्टग्रेज वास्तव में काम कर रहा है या नहीं , रेल के साथ फिट होने की कोशिश करने से पहले (यानी डेटाबेस बनाने और उसमें एक टेबल और कुछ डेटा डालने का प्रयास करें)।
- विशाल लेकिन बहुत व्यापक पोस्टग्रेज दस्तावेज़ीकरण में, मैं पृष्ठ 58 पर शुरू करूँगा, 'I. ट्यूटोरियल'। फिर पीडीएफ पेज 431(!) पर 'अध्याय 17. सर्वर सेटअप और संचालन' है जो मुझे उपयोगी भी लगा।