كيفية نشر مواقع Wordpress متعددة باستخدام Virtualmin و Ansible على Ubuntu 16.04

الاستخدام الشائع لخادم Vultr الظاهري هو استضافة مواقع Wordpress. يوضح لك هذا الدليل كيفية أتمتة تكوين خادم افتراضي من البداية (باستخدام Ansible) ونشر العديد من مواقع Wordpress المستقلة (باستخدام Webmin / Virtualmin). Virtualmin / Webmin هي واجهة مستخدم رسومية تسمح لك بإدارة نشر العديد من حسابات الخادم الظاهري على نفس الجهاز (كاملة مع مكدس LAMP / LEMP). Virtualmin مشابه جدًا لـ cPanel و Plesk ، وفي هذا البرنامج التعليمي سنستخدم إصدار GPL المجاني. بعد الإعداد الأولي لخادم Vultr وتثبيت Virtualmin ، يمكنك إعداد خوادم ظاهرية متعددة بسرعة كبيرة من داخل واجهة Virtualmin وتثبيت Wordpress مباشرة على هذا الخادم الظاهري الكامل باسم المجال الخاص به.

في هذا البرنامج التعليمي ، بدلاً من إدخال قائمة طويلة من الأوامر يدويًا ، سنستخدم بدلاً من ذلك Ansible. Ansible هي أداة الأتمتة القائمة على الثعبان والتي تتيح لك أتمتة مهام الخادم بشكل موثوق به وبشكل متكرر. هذا يعني أنه بمجرد اتباعك لهذا البرنامج التعليمي ، ستتمكن من نشر خادم آخر بنفس الطريقة باستخدام أمرين فقط.

المتطلبات الأساسية

  • اسم مجال مؤهل واحد على الأقل وإمكانية الوصول إلى سجلات DNS
  • حساب Vultr

الخطوة 1 - تثبيت Ansible على جهازك المحلي

قم بتثبيت Ansible على جهازك المحلي أو خادم آخر.

mkdir ansible
cd ansible
virtualenv env
source env/bin/activate
pip install ansible

الخطوة 2 - إنشاء مفاتيح SSH ونشر الخادم

يعمل Ansible بتسجيل الدخول إلى الخادم الخاص بك عبر SSH. يعد وصول SSH أكثر أمانًا إذا استخدمنا المفاتيح بدلاً من كلمة المرور. دعنا أولاً ننشئ زوج مفاتيح عام وخاص.

mkdir ssh_keys
ssh-keygen -t rsa -b 2048 -f ./ssh_keys

في ssh_keysالدليل سيكون هناك ملفان ، ssh_keysو ssh_keys.pub. ssh_keysهو ملف المفتاح الخاص بك ويجب الحفاظ عليه آمنًا. يمكنك الآن فتح ssh_keys.pubالمفتاح الذي يحتوي على المفتاح العمومي.

قم بتسجيل الدخول إلى لوحة تحكم الويب Vultr وانقر Deploy New Server.

حدد منطقة ، نوع الخادم (Ubuntu 16.04) ، حجم الخادم ، ثم في الجزء 6 ( SSH keys) ، انقر فوق Add New. في الصفحة التالية ، الصق مفتاحك العام وأعطه اسمًا ، وانقر Add SSH key. أخيرًا ، تأكد من تحديد المفتاح وانقر عليه Deploy now.
بمجرد انتهاء الخادم من النشر ، سيظهر لك عنوان IP الخاص به. ستحتاج إلى تسجيل الدخول إلى خادم DNS لاسم المجال الخاص بك وتوجيهه إلى هذا العنوان.

الخطوة 3 - إنشاء تكوين Ansible أساسي

تسمى ملفات الأتمتة في Ansible roles. سنقوم أولاً بإعداد بنية الدليل (داخل ansibleالدليل الذي أنشأته للتو في الخطوة 1) ، والملفات الأساسية.

mkdir -p group_vars roles/common/tasks/ roles/common/handlers
touch hosts group_vars/all deploy.yml roles/common/handlers/main.yml

قم بتحرير hostsالملف ليحتوي على ما يلي ، مع استبدال ip addressالخادم الذي أنشأته للتو. يستخدم Ansible python 2 ، الذي لم يتم تثبيت Ubuntu 16.04 بشكل افتراضي. في hostsالملف نقول Ansible لاستخدام الثعبان 3.

[common]  
192.0.2.1 ansible_python_interpreter=/usr/bin/python3

قم بتحرير deploy.ymlالملف ليتضمن ما يلي. سنستخدم rootالمستخدم.

- name: apply common configuration to server
  hosts: all
  user: root
  roles:
    - common

قم بتحرير /group_vars/allالملف ليتضمن ما يلي. تخبر هذه المتغيرات Ansible بموقع مفاتيح SSH ومعلمات ملف المبادلة واسم المجال المؤهل بالكامل وكلمة المرور الجذر. يرجى تذكر عدم تضمين الملف في التحكم بالمصادر لأنه يحتوي على كلمة المرور الخاصة بك في نص واضح.

ssh_dir: ./ssh_keys
swap_file_path: /swapfile
swap_file_size: 1G
swappiness: 1
hostname: example.com
new_password: YOUR_PASSWORD_HERE

قم بتحرير common/handlers/main.ymlالملف ليتضمن ما يلي.

- name: restart sshd
  service: name=ssh state=restarted

الخطوة 4 - إنشاء مهام Ansible لإعداد الخادم الأساسي

من السهل فهم الأتمتة الخفية إذا قسمناها إلى مهام. لنقم بإنشاء ملفات لكل مهمة من مهامنا في هذه العملية.

cd roles/common/tasks
touch hosts main.yml setup.yml users.yml ufw.yml swap.yml virtualmin.yml

main.yml يجب أن يشير إلى كل ملف يحتوي على أوامر Ansible ، لذا قم بتحريره ليتضمن ما يلي.

- include: setup.yml
- include: users.yml
- include: ufw.yml
- include: swap.yml
- include: virtualmin.yml

الخطوة الأولى في إعداد خادم جديد هي تحديث ذاكرة التخزين المؤقت الريبو وتعيين المنطقة الزمنية. قم بتحرير common/handlers/setup.ymlالملف ليتضمن ما يلي.

- apt: update_cache=yes
  sudo: yes

- name: set timezone to Europe/London
  timezone:
    name: Europe/London

الآن ، سنمنح المستخدم الجذر كلمة مرور (والتي سنحتاجها للوصول إلى واجهة الويب Virtualmin) ، ولكن نقوم بتعطيل تسجيلات كلمة المرور عبر SSH (نظرًا لأننا نستخدم طريقة المصادقة الأكثر أمانًا). تحرير users.ymlلاحتواء ما يلي.

- name: Change passwd
  user: name=root password={{ new_password | password_hash('sha512') }} update_password=always

- name: Disable SSH password login
  lineinfile: dest=/etc/ssh/sshd_config regexp="^#?PasswordAuthentication" line="PasswordAuthentication no"
  notify: restart sshd

من أجل الأمن ، نحن بحاجة إلى جدار حماية. سنستخدم جدار الحماية غير المعقد للسماح بوصول SSH على المنفذ 22والوصول إلى الويب على المنفذ 80والوصول الآمن إلى الويب على المنفذ 443. قم بتحرير ufw.ymlالملف ليتضمن ما يلي.

- name: Set default firewall policy to deny all
  become: True
  ufw: state=enabled direction=incoming policy=deny
  tags: firewall

- name: enable SSH in firewall
  ufw: rule=allow port=22
  sudo: yes

- name: enable HTTP connections for web server
  ufw: rule=allow port=80
  sudo: yes

- name: enable HTTPS connections for web server
  ufw: rule=allow port=443
  sudo: yes

- name: enable firewall
  ufw: state=enabled
  sudo: yes

بشكل اختياري ، يمكنك تضمين ملف مبادلة. يعد هذا ضروريًا إذا كان الخادم الخاص بك يحتوي على أقل من 2 غيغابايت من ذاكرة الوصول العشوائي لتجنب تعطل الذاكرة. تحرير swap.ymlلاحتواء ما يلي.

- name: Set swap_file variable
  set_fact:
    swap_file: "{{swap_file_path}}"
  tags:
    - swap.set.file.path

- name: Check if swap file exists
  stat:
    path: "{{swap_file}}"
  register: swap_file_check
  tags:
    - swap.file.check

- name: Create swap file
  command: fallocate -l {{swap_file_size}} {{swap_file}}
  when: not swap_file_check.stat.exists
  tags:
    - swap.file.create

- name: Change swap file permissions
  file: path="{{swap_file}}"
        owner=root
        group=root
        mode=0600
  tags:
    - swap.file.permissions

- name: Format swap file
  sudo: yes
  command: "mkswap {{swap_file}}"
  when: not swap_file_check.stat.exists
  tags:
    - swap.file.mkswap

- name: Write swap entry in fstab
  mount: name=none
         src={{swap_file}}
         fstype=swap
         opts=sw
         passno=0
         dump=0
         state=present
  tags:
    - swap.fstab

- name: Turn on swap
  sudo: yes
  command: swapon -a
  when: not swap_file_check.stat.exists
  tags:
    - swap.turn.on

- name: Set swappiness
  sudo: yes
  sysctl:
    name: vm.swappiness
    value: "{{swappiness}}"
  tags:
    - swap.set.swappiness

الخطوة 5 - إضافة مهمة Ansible لإعداد Virtualmin

يحتوي Virtualmin على ملف التثبيت الخاص به والذي يمكن تنزيله وتشغيله بواسطة Ansible. هنا نستخدم الحد الأدنى من التثبيت ( LINK). العناصر الإضافية هي تكوين كلمة مرور خادم MySQL التي لم يتم تعيينها عند تثبيتها بواسطة Virtualmin. نحتاج إلى إيقاف MySQL مؤقتًا وإضافة دليل المصادقة قبل تغيير كلمة المرور. تحرير virtualmin.ymlلاحتواء ما يلي.

- name: download virtualmin install script
  get_url: >
    url=http://software.virtualmin.com/gpl/scripts/install.sh
    dest=/root/install.sh
    mode=0755

- name: virtualmin install (takes around 10 mins) you can see progress using $ sudo tail -f /root/virtualmin-install.log
  tags: non-idem
  shell: ~/install.sh --force --hostname {{ hostname }} --minimal --yes
  args:
    chdir: /root

- name: temp stop mysql
  service:
    name: mysql
    state: stopped

- name: change owner (and group) of mysqld dir
  file:
    path: "/var/run/mysqld"
    state: directory
    owner: mysql
    group: mysql

- name: virtualmin set mysql password
  shell: virtualmin set-mysql-pass --user root --pass {{ new_password }}

- name: restart mysql
  service:
    name: mysql
    state: started

انتهى دور Ansible الآن ونحن على استعداد للنشر.

الخطوة 6 - إجراء التثبيت باستخدام Ansible

من المجلد ansible ، يمكننا الآن ببساطة تشغيل الأمر التالي ، وسيقوم Ansible بتنفيذ جميع المهام التي أنشأناها تلقائيًا. في المرة الأولى التي تتصل فيها ستحصل على تحذير مفتاح SSH ، فقط اكتب " yes" في الموجه.

ansible-playbook deploy.yml --private-key=ssh_keys/ssh_keys -i hosts

إذا كنت ترغب في استخدام خادم آخر ، يمكننا ببساطة تغيير عنوان IP في ملف hosts وتشغيل هذا الأمر مرة أخرى لإكمال الإعداد نفسه بالضبط.

الخطوة 7 - معالج Virtualmin بعد التثبيت

اكتمل التثبيت ويمكننا الآن الانتقال إلى https://192.0.2.1:10000(استخدام عنوان IP لخادمك). سيصدر متصفحك تحذيرًا أمنيًا لأن الشهادة موقعة ذاتيًا ، لذا انقر فوق advancedوأضف استثناء. ستظهر لك صفحة تسجيل دخول. اسم المستخدم هو root، وكلمة المرور هي التي أدخلتها في group_vars/allالملف في الخطوة 3. في المرة الأولى التي تدخل فيها Virtualmin ، سيتم تقديمك لمعالج ما بعد التثبيت. يمكنك إما الذهاب عبر هذه الإعدادات يدويًا أو النقر cancelلقبول الإعدادات الافتراضية.

الخطوة 8 - إنشاء خادم وتثبيت WordPress

للحصول على أول خادم وورد الخاص بك وتشغيله ، من لوحة تحكم Virtualmin انقر فوق Create Virtual Server. ستحتاج إلى إدخال اسم المجال والوصف وكلمة مرور المسؤولين. يجب أن يكون اسم النطاق مختلفًا عن اسم المجال المؤهل بالكامل لـ Virtualmin ، وستحتاج إلى توجيه سجل DNS إلى عنوان IP الخاص بخادمك.

انقر Create Server. بمجرد انتهاء Virtualmin من إنشاء الخادم الخاص بك ، انقر فوق Install Scriptsالقائمة اليمنى. حدد Wordpress، وانقر فوق Show install options، وفي الصفحة التالية اختر موقع تثبيت Wordpress. فقط اختر At top levelوانقر Install Now.

هذا كل ما عليك القيام به - يمكنك إكمال تثبيت Wordpress عن طريق زيارة http://example.net/wp-admin/install.php(أين example.netهو اسم مجال الخوادم الافتراضية). إذا لم يتم نشر سجلات DNS الخاصة بك حتى الآن ، يمكنك الانتقال Services > Preview Websiteمن قائمة Virtualmin.

يمكنك تكرار هذه الخطوة عدة مرات لإنشاء مواقع Wordpress متعددة على نفس خادم Vultr.



Leave a Comment

كيفية نشر Ghost v0.11 LTS على Fedora 25

كيفية نشر Ghost v0.11 LTS على Fedora 25

استخدام نظام مختلف؟ Ghost هي منصة تدوين مفتوحة المصدر اكتسبت شعبية بين المطورين والمستخدمين العاديين منذ عام 201

قم بتثبيت WordPress على OpenBSD 6.2

قم بتثبيت WordPress على OpenBSD 6.2

مقدمة WordPress هو نظام إدارة المحتوى المهيمن على الإنترنت. يعمل على تشغيل كل شيء من المدونات إلى مواقع الويب المعقدة ذات المحتوى الديناميكي

تثبيت Fork CMS على Fedora 28

تثبيت Fork CMS على Fedora 28

استخدام نظام مختلف؟ Fork هو CMS مفتوح المصدر مكتوب بلغة PHP. رمز مصدر فوركس مستضاف على جيثب. سيوضح لك هذا الدليل كيفية تثبيت Fork CM

قم بتثبيت وتكوين مدونة Ghost v1.0.0 على Ubuntu 16.04

قم بتثبيت وتكوين مدونة Ghost v1.0.0 على Ubuntu 16.04

Ghost عبارة عن منصة نشر حديثة مفتوحة المصدر مبنية على Node.js مع عميل مشرف Ember.js وواجهة برمجة تطبيقات JSON وواجهة برمجة تطبيقات للسمات مدعومة من Handlebars.js. غص

كيفية نشر Ghost v0.11 LTS على Ubuntu 16.04

كيفية نشر Ghost v0.11 LTS على Ubuntu 16.04

استخدام نظام مختلف؟ Ghost هي منصة تدوين مفتوحة المصدر اكتسبت شعبية بين المطورين والمستخدمين العاديين منذ عام 201

إعداد WordPress مع WooCommerce على CentOS 6

إعداد WordPress مع WooCommerce على CentOS 6

تعد مثيلات Vultr طريقة رائعة لتشغيل مدونة WordPress الخاصة بك ، ولكن امتدادًا بارزًا لـ WordPress هو WooCommerce ، وهو مكون إضافي للتجارة الإلكترونية يمتد

تثبيت Fork CMS على CentOS 7

تثبيت Fork CMS على CentOS 7

استخدام نظام مختلف؟ Fork هو CMS مفتوح المصدر مكتوب بلغة PHP. رمز مصدر فوركس مستضاف على جيثب. سيوضح لك هذا الدليل كيفية تثبيت Fork CM

كيفية تثبيت ثورة MODX على Ubuntu 16.04 LAMP VPS

كيفية تثبيت ثورة MODX على Ubuntu 16.04 LAMP VPS

استخدام نظام مختلف؟ MODX Revolution عبارة عن نظام إدارة محتوى (CMS) سريع ومرن وقابل للتوسيع ومجاني ومفتوح المصدر ومكتوب

كيفية تثبيت MODX Revolution على FreeBSD 11 FAMP VPS

كيفية تثبيت MODX Revolution على FreeBSD 11 FAMP VPS

استخدام نظام مختلف؟ MODX Revolution عبارة عن نظام إدارة محتوى (CMS) سريع ومرن وقابل للتوسيع ومفتوح المصدر ومكتوب بلغة PHP. أنا

تثبيت Fork CMS على دبيان 9

تثبيت Fork CMS على دبيان 9

استخدام نظام مختلف؟ Fork هو CMS مفتوح المصدر مكتوب بلغة PHP. رمز مصدر فوركس مستضاف على جيثب. سيوضح لك هذا الدليل كيفية تثبيت Fork CM

كيفية تثبيت ثورة MODX على Debian 9 LAMP VPS

كيفية تثبيت ثورة MODX على Debian 9 LAMP VPS

استخدام نظام مختلف؟ MODX Revolution عبارة عن نظام إدارة محتوى (CMS) سريع ومرن وقابل للتوسيع ومجاني ومفتوح المصدر ومكتوب

كيفية نشر Ghost على أوبونتو 16.04

كيفية نشر Ghost على أوبونتو 16.04

استخدام نظام مختلف؟ Ghost هي منصة تدوين مفتوحة المصدر تكتسب شعبية بين المطورين والمستخدمين العاديين منذ إصدارها عام 2013. أنا

كيفية نشر Ghost على دبيان 8.7

كيفية نشر Ghost على دبيان 8.7

استخدام نظام مختلف؟ Ghost هي منصة تدوين مفتوحة المصدر تكتسب شعبية بين المطورين والمستخدمين العاديين منذ إصدارها عام 2013. أنا

كيفية تثبيت Dotclear على دبيان 9 (امتداد)

كيفية تثبيت Dotclear على دبيان 9 (امتداد)

استخدام نظام مختلف؟ Dotclear هو محرك تدوين بسيط للغاية. إنه مفتوح المصدر وسهل الاستخدام. سيذهب هذا البرنامج التعليمي خلال التثبيت

كيفية تثبيت MODX Revolution على Fedora 26 LAMP VPS

كيفية تثبيت MODX Revolution على Fedora 26 LAMP VPS

استخدام نظام مختلف؟ MODX Revolution عبارة عن نظام إدارة محتوى (CMS) سريع ومرن وقابل للتوسيع ومجاني ومفتوح المصدر ومكتوب

إعداد منصة Ghost Professional للنشر على OpenBSD 6

إعداد منصة Ghost Professional للنشر على OpenBSD 6

Ghost هو أحدث وأكبر مبتدئ لمنافس وورد. تطوير السمة سريع وسهل التعلم لأن مطوري Ghost قرروا استخدام كل من th

إنشاء مدونة Jekyll على CentOS 7

إنشاء مدونة Jekyll على CentOS 7

استخدام نظام مختلف؟ Jekyll هو بديل جيد لـ WordPress. لا يتطلب أي قواعد بيانات ويعمل مع لغة كثير من الذكاء مألوفة

تشغيل WordPress على OpenBSD 6.5 مع OpenBSDs HTTPD

تشغيل WordPress على OpenBSD 6.5 مع OpenBSDs HTTPD

مقدمة كلما اقتربت من تثبيت OpenBSD بشكل افتراضي وبدون العديد من الحزم المضافة ، كلما كانت أكثر أمانًا. في حين أن المزيد كومو

كيفية تثبيت Neos CMS على CentOS 7

كيفية تثبيت Neos CMS على CentOS 7

Neos هو نظام مبتكر لإدارة المحتوى مفتوح المصدر وهو رائع لإنشاء وتحرير المحتوى عبر الإنترنت. مع وضع المؤلفين والمحررين في الاعتبار ، Neo

نظرة ثاقبة على 26 أسلوبًا لتحليل البيانات الضخمة: الجزء الأول

نظرة ثاقبة على 26 أسلوبًا لتحليل البيانات الضخمة: الجزء الأول

نظرة ثاقبة على 26 أسلوبًا لتحليل البيانات الضخمة: الجزء الأول

6 أشياء شديدة الجنون حول نينتندو سويتش

6 أشياء شديدة الجنون حول نينتندو سويتش

يعرف الكثير منكم أن Switch سيصدر في مارس 2017 وميزاته الجديدة. بالنسبة لأولئك الذين لا يعرفون ، قمنا بإعداد قائمة بالميزات التي تجعل "التبديل" "أداة لا غنى عنها".

وعود التكنولوجيا التي لم يتم الوفاء بها بعد

وعود التكنولوجيا التي لم يتم الوفاء بها بعد

هل تنتظر عمالقة التكنولوجيا للوفاء بوعودهم؟ تحقق من ما تبقى دون تسليم.

وظائف طبقات معمارية مرجعية للبيانات الضخمة

وظائف طبقات معمارية مرجعية للبيانات الضخمة

اقرأ المدونة لمعرفة الطبقات المختلفة في بنية البيانات الضخمة ووظائفها بأبسط طريقة.

كيف يمكن للذكاء الاصطناعي نقل أتمتة العمليات إلى المستوى التالي؟

كيف يمكن للذكاء الاصطناعي نقل أتمتة العمليات إلى المستوى التالي؟

اقرأ هذا لمعرفة مدى انتشار الذكاء الاصطناعي بين الشركات الصغيرة وكيف أنه يزيد من احتمالات نموها ومنح منافسيها القدرة على التفوق.

CAPTCHA: ما هي المدة التي يمكن أن تظل تقنية قابلة للتطبيق للتميز بين الإنسان والذكاء الاصطناعي؟

CAPTCHA: ما هي المدة التي يمكن أن تظل تقنية قابلة للتطبيق للتميز بين الإنسان والذكاء الاصطناعي؟

لقد أصبح حل CAPTCHA صعبًا جدًا على المستخدمين في السنوات القليلة الماضية. هل ستكون قادرة على أن تظل فعالة في اكتشاف البريد العشوائي والروبوتات في المستقبل القريب؟

التفرد التكنولوجي: مستقبل بعيد للحضارة الإنسانية؟

التفرد التكنولوجي: مستقبل بعيد للحضارة الإنسانية؟

مع تطور العلم بمعدل سريع ، واستلام الكثير من جهودنا ، تزداد أيضًا مخاطر تعريض أنفسنا إلى تفرد غير قابل للتفسير. اقرأ ، ماذا يمكن أن يعني التفرد بالنسبة لنا.

التطبيب عن بعد والرعاية الصحية عن بعد: المستقبل هنا

التطبيب عن بعد والرعاية الصحية عن بعد: المستقبل هنا

ما هو التطبيب عن بعد والرعاية الصحية عن بعد وأثره على الأجيال القادمة؟ هل هو مكان جيد أم لا في حالة الوباء؟ اقرأ المدونة لتجد طريقة عرض!

هل تساءلت يومًا كيف يربح المتسللون الأموال؟

هل تساءلت يومًا كيف يربح المتسللون الأموال؟

ربما سمعت أن المتسللين يكسبون الكثير من المال ، لكن هل تساءلت يومًا كيف يجنون هذا النوع من المال؟ دعنا نناقش.

يتسبب التحديث الإضافي لنظام macOS Catalina 10.15.4 في حدوث مشكلات أكثر من حلها

يتسبب التحديث الإضافي لنظام macOS Catalina 10.15.4 في حدوث مشكلات أكثر من حلها

أصدرت Apple مؤخرًا macOS Catalina 10.15.4 تحديثًا تكميليًا لإصلاح المشكلات ولكن يبدو أن التحديث يتسبب في المزيد من المشكلات التي تؤدي إلى إنشاء أجهزة macOS. قراءة هذه المادة لمعرفة المزيد