البحث في الموقع
المحتوى عن 'ghost'.
-
Ghost هي منصة تدوين حرّة ومفتوحة المصدر تتميّز بخفتها (~7.5MB)، سهولة استخدامها، قابليتها العاليّة للتخصيص، بالإضافة إلى توفّر العديد من السِمات themes لها عبر الإنترنت مجانًا أو بشكل مدفوع. في هذا الدرس سوف نشرح خطوات تركيب وإعداد منصة Ghost على نظام Ubuntu 14.04، بالإضافة إلى إعداد خادوم Nginx لمنافذ البروكسي proxy ports، وكذلك تركيب حزمة forever للمحافظة على تشغيل Ghost في الخلفية. المتطلباتلا يشترط Ghost توفّر أي حد أدنى من المساحة على الخادوم، لكن خُذ بعين الاعتبار عدد الزوار المتوقعين لمدوّنتك وكمّ المحتوى الذي ترغب بمشاركته لتتمكّن من تقدير المساحة المناسبة عند الإنشاء. في هذا الدرس ولغرضٍ تعليمي فقط سوف نختار أقلّ مساحة ممكنة. قبل البدء نحن نحتاج ما يلي: نظام Ubuntu 14.04 على خادومك. عنوان نطاق مُسجّل ومربوط مع الـ IP الخاص بخادومك. مستخدم عادي non-root مع صلاحيات الجذر، والذي سوف نستخدمه لتنفيذ جميع الأوامر المذكورة هنا، وفي حال كان الأمر يحتاج إلى صلاحيات الجذر فسنستخدم sudo.الخطوة الأولى: تركيب Node.js و Npmفي البداية نحن بحاجة إلى تحديث فهارس مدير الحزم وتركيب كلًا من zip و wget حيث سنحتاجهما لاحقًا أثناء الدرس. sudo apt-get update sudo aptitude install zip wget يتطّلب Ghost تركيب Node.js v0.10.x (آخر إصدار مستقل)، فالإصدار غير المستقر (v0.12.x) ليس مدعومًا بعد. يوصي موقع Ghost.org تحديدًا بكلًا من Node.js v0.10.36 و npm v2.5.0. يمكنك تركيب Node.js باستخدام PPA على Ubuntu [من هذا الدرس][1]. عند الانتهاء من تثبيت Node.js، تحقّق من رقم الإصدار عبر تشغيل: node -v يُفترض أن يكون الخرج مشابهًا لهذا: v0.10.38 تحقّق أيضًا من وجود npm: npm -v إذا كانت مثبّتة فهذا سيُعيد لك رقم الإصدار: 1.4.28 في غير ذلك ستظهر أمامك رسالة خطأ. عندها يمكنك تركيب npm بهذا الأمر: sudo apt-get install npm ثم حدّث إصدار npm إلى الرقم 2.5.0 بتشغيل الأمر: sudo npm install npm@2.5.0 -g تحقّق مجددًا من الإصدار المُثبّت: npm -v يُفترض أن يكون الخرج كهذا: 2.5.0الخطوة الثانية: تركيب Ghostيتوجب علينا الآن تركيب Ghost، مُتبعين نصيحة موقع Ghost.org بتثبيت المنصّة على المسارvar/www/ghost/. بدايةً سنُنشئ الدليل var/www/ ثم سنحصل على أحدث إصدار من Ghost من خلال مستودع GitHub الخاص بهم: sudo mkdir -p /var/www cd /var/www/ sudo wget https://ghost.org/zip/ghost-latest.zip هكذا نكون قد حصلنا على الإصدار الأخير لـ Ghost، وعلينا الآن فكّ الضغط عن الحزمة والانتقال إلى الدليل /var/www/ghost/: sudo unzip -d ghost ghost-latest.zip cd ghost/ بقي علينا أخيرًا تركيب بعض الاعتماديات اللازمة للمنصّة: sudo npm install --production هكذا نكون قد أنهينا عملية تركيب Ghost. لننتقل الآن إلى إعداد المنصّة قبل البدء بتشغيلها. الخطوة الثالثة: إعداد Ghostملف الضبط الخاص بمنصة Ghost يجب أن يكون على المسار التالي var/www/ghost/config.js/ إلا أنّه وعند التركيب لن يكون هناك ملف بهذا الاسم، وعوضًا عن ذلك سنجد الملف config.example.js. أنشئ نسخة من الملف config.example.js باسم config.js ضمن نفس المجلد عبر الأمر cp لاستخدامه في كتابة الإعدادات الخاصة بك. sudo cp config.example.js config.js من أهم المعلومات التي نحتاج إلى تعديلها في الملف السابق هو الرابط URL وإعدادات البريد أسفل القسم production. في غير ذلك سيأخذك الرابط إلى الصفحة الافتراضية للمدوّنة http://my-ghost-blog.com. وعلى الرغم من أنه يمكن تشغيل Ghost بدون ضبط إعدادات البريد إلا أنه لا يُنصح بذلك، فعلى سبيل المثال يُرسل Ghost كلمة مرور مُستخدم المدوّنة إلى هذا البريد في حال نسيانها. حرّر الملف بإحدى الأدوات التي تُفضّل: sudo nano config.js عليك أولًا تغيير قيمة url إلى عنوان نطاقك (أو استخدم رقم IP الخاص بخادومك في حال لم ترغب باستعمال عنوان النطاق حاليًا). انتبه إلى الصياغة الصحيحة لعنوان الرابط بحيث تشبه http://example.com أو http://45.55.76.126 وإلا فإن Ghost لن يعمل. قم أيضًا بتغيير قيمة host ضمن قسم server إلى 0.0.0.0. يُظهر الملف التالي النموذج المُعدّل الخاص بالدرس: var path = require(‘path’), config; config = { // ### Production // When running Ghost in the wild, use the production environment // Configure your URL and mail settings here production: { url: ‘http://my-ghost-blog.com’, mail: { // Your mail settings }, database: { client: ‘sqlite3’, connection: { filename: path.join(__dirname, ‘/content/data/ghost.db’) }, debug: false }, server: { // Host to be passed to node’s `net.Server#listen()` host: ‘127.0.0.1’, // Port to be passed to node’s `net.Server#listen()`, for iisnode s$ port: ‘2368’ } }, (…)احفظ الملف واخرج من المحرّر النصيّ nano عبر الضغط على CTRL+X ثم Y واضغط Enter. تأكّد أنك لا تزال ضمن الدليل /var/www/ghost/ ثم شغّل Ghost من خلال الأمر: sudo npm start --production يُفترض أن يكون الخرج شيئًا مشابهًا لهذا: > ghost@0.6.4 start /var/www/ghost > node index Migrations: Database initialisation required for version 003 Migrations: Creating tables… Migrations: Creating table: posts […]إذا كان كلّ شيء قد تمّ كما يجب؛ حينها يمكنك الوصول إلى مدونتك عبر المنفذ 2368: http://your_domain._name:2368 (أو http://your_servers_ip:2368). اضغط الآن على CTRL+C لإيقاف عمل Ghost الخطوة الرابعة: تركيب Nginxالخطوة التالية هي تثبيت Nginx والذي يسمح للاتصالات على المنفذ 80 أن تتمّ عبر منفذ Ghost، بعبارة أبسط يسمح لنا Nginx الوصول للمدوّنة من دون الحاجة لإضافة المنفذ 2368: sudo apt-get install nginx نحتاج الآن إلى ضبط Nginx، لننتقل أولًا إلى الدليل etc/nginx/ لحذف الملف الافتراضي etc/nginx/sites-enabled/: cd /etc/nginx/ sudo rm sites-enabled/default سنُنشئ ملف جديد في المسار /etc/nginx/sites-available/ باسم ghost ثم نحرّره باستخدام nano: sudo touch /etc/nginx/sites-available/ghost sudo nano /etc/nginx/sites-available/ghost الصق النصّ التالي في الملف السابق بعد تغيير المحتوى المُحدّد باللون الأحمر إلى عنوان نطاقك أو رقم الـ IP الخاص بخادومك: server { listen 80; server_name your_domain.tld; location / { proxy_set_header X-Real-IP remoteaddr;proxysetheaderHosthttp_host; proxy_pass http://127.0.0.1:2368; } }سنُنشى اختصارًا لإعداداتنا في sites-enabled: sudo ln -s /etc/nginx/sites-available/ghost /etc/nginx/sites-enabled/ghost ثم نُعيد تشغيل Nginx: sudo service nginx restart الآن سنُنشئ مستخدمًا جديدًا لأغراض أمنيّة بحيث لا يمتلك أذوات سوى على الدليل var/www/ghost/؛ ففي حال تعرّض Ghost لخطرٍ ما فإن نظامك سيظل في أمان: sudo adduser --shell /bin/bash --gecos 'Ghost application' ghost إسناد الصلاحيات المُناسبة: sudo chown -R ghost:ghost /var/www/ghost/ يمكنك الآن الولوج مستعملا المستخدم الجديد: su - ghost أخيرًا نحن بحاجة إلى إعادة تشغيل Ghost: cd /var/www/ghost npm start –productionيمكنك الآن الوصول إلى مدونتك عبر المنفذ 80 من خلال ///:http. الخطوة الخامسة: الإبقاء على تشغيل Ghost في الخلفيةالخطوة الأخيرة هي المحافظة على تشغيل Ghost في الخلفية طوال الوقت، وسوف نستخدم لذلك الأداة forever التي تُبقي Ghost يعمل في الخلفية وتراقبه في حال انهياره بحيث تُشغّل نسخة أخرى منه من جديد. قم بتركيب الأداة forever بالأمر التالي ضمن مجلّد ghost /var/www/ghost، لكن أولًا عليك الخروج من المستخدم Ghost ثم الدخول بالمستخدم العادي: exit sudo npm install -g forever شغّل Ghost مع المستخدم ghost على أن تكون ضمن الدليل الصحيح: su - ghost cd /var/www/ghost forever start index.js يفترض أن يكون الخرج مشابهًا لهذا: warn: –minUptime not set. Defaulting to: 1000ms warn: –spinSleepTime not set. Your script will exit if it does not stay up for at least 1000ms info: Forever processing file: index.jsبشكل افتراضي يعمل forever ضمن وضع المطوّرين، يمكنك تعديل هذا من خلال الأمر: NODE_ENV=production forever start index.js أما إذا رغبت بإيقاف عمل forever فنفّذ الأمر الآتي ضمن دليل Ghost: forever stop index.jsأخطاء مُحتملةإذا واجهت رسالة الخطأ التالية: Error: SQLITE_READONLY: attempt to write a readonly database شغّل forever كجذر root (اكتب exit للخروج من المستخدم الحالي أولًا): sudo forever start index.js إذا أعاد لك الأمر الأخير رسالة تفيد بعدم وجود forever استخدم الأمر مع المسار الكامل: sudo /usr/local/bin/forever start index.js إذا واجهت رسالة الخطأ التالية: error: Cannot start forever error: script /home/ghost/index.js does not exist. فهذا يعني أنك لست ضمن الدليل الصحيح var/www/ghost/. انتقل إليه أولًا ثم نفّذ الأمر من جديد. الخلاصةتهانينا. لقد تمكّنت من تثبيت Ghost وتعلّمت كيفيّة استخدام Nginx لضبط بروكسي المنافذ. كما تعلّمت كيفيّة الإبقاء على المهام تعمل ضمن الخلفية باستخدام العقدة forever. ترجمة -وبتصرف- للمقال How To Create a Blog with Ghost and Nginx on Ubuntu 14.04 لصاحبه Hamza Shezad.