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.
أفضل التعليقات
لا توجد أية تعليقات بعد
انضم إلى النقاش
يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.