كيفية تثبيت Neos CMS على FreeBSD 12
استخدام نظام مختلف؟ Neos عبارة عن منصة تطبيق محتوى مع CMS وإطار تطبيق في جوهرها. سيوضح لك هذا الدليل كيفية التثبيت
TextPattern CMS 4.6.2 هو نظام إدارة محتوى (CMS) بسيط ومرن ومجاني ومفتوح يسمح لمصممي الويب بتصميم مواقع ويب جميلة بدون برمجة في PHP. يتميز TextPattern CMS بسهولة تعلم لغة نموذجية تستند إلى علامات تشبه XML والتي تسمح لمصممي الويب بالإنشاء السريع وبناء مواقع ويب ومدونات سريعة ومليئة ومتجاوبة وآمنة.
في هذا البرنامج التعليمي ، سنقوم بتثبيت TextPattern CMS 4.6.2 على CentOS 7 LAMP VPS باستخدام خادم الويب Apache و PHP 5.4 وقاعدة بيانات MariaDB.
سنبدأ بإضافة sudo
مستخدم جديد .
أولاً ، قم بتسجيل الدخول إلى الخادم الخاص بك على النحو التالي root
:
ssh root@YOUR_VULTR_IP_ADDRESS
أضف مستخدمًا جديدًا يسمى user1
(أو اسم المستخدم المفضل لديك):
useradd user1
بعد ذلك ، قم بتعيين كلمة المرور user1
للمستخدم:
passwd user1
عند المطالبة ، أدخل كلمة مرور آمنة ولا تنسى.
تحقق الآن من /etc/sudoers
الملف للتأكد من sudoers
تمكين المجموعة:
visudo
ابحث عن قسم مثل هذا:
%wheel ALL=(ALL) ALL
يخبرنا هذا السطر أن المستخدمين الذين هم أعضاء في wheel
المجموعة يمكنهم استخدام sudo
الأمر للحصول على root
الامتيازات. يجب أن يكون غير مقسم بشكل افتراضي بحيث يمكنك ببساطة الخروج من الملف.
بعد ذلك نحتاج إلى إضافة user1
إلى wheel
المجموعة:
usermod -aG wheel user1
يمكننا التحقق من user1
عضوية المجموعة والتحقق من أن usermod
الأمر يعمل مع groups
الأمر:
groups user1
الآن استخدم su
الأمر للتبديل إلى user1
حساب مستخدم sudo الجديد :
su - user1
سيتم تحديث موجه الأوامر للإشارة إلى أنك قمت بتسجيل الدخول الآن إلى user1
الحساب. يمكنك التحقق من ذلك باستخدام whoami
الأمر:
whoami
أعد تشغيل sshd
الخدمة بحيث يمكنك تسجيل الدخول عبر ssh
حساب مستخدم sudo الجديد غير الجذر الذي أنشأته للتو:
sudo systemctl restart sshd
الخروج من user1
الحساب:
exit
اخرج من root
الحساب (الذي سيؤدي إلى قطع جلستك ssh
).
exit
يمكنك الآن ssh
الدخول إلى مثيل الخادم من مضيفك المحلي باستخدام user1
حساب مستخدم sudo الجديد غير الجذر :
ssh user1@YOUR_VULTR_IP_ADDRESS
إذا كنت تريد تنفيذ sudo دون الحاجة إلى كتابة كلمة مرور في كل مرة ، فافتح /etc/sudoers
الملف مرة أخرى باستخدام visudo
:
sudo visudo
قم بتحرير قسم wheel
المجموعة بحيث يبدو كالتالي:
%wheel ALL=(ALL) NOPASSWD: ALL
يرجى مل��حظة: أن تعطيل متطلبات كلمة المرور لمستخدم sudo ليس ممارسة موصى بها ، ولكن يتم تضمينها هنا لأنها يمكن أن تجعل تكوين الخادم أكثر ملاءمة وأقل إحباطًا ، خاصة خلال جلسات إدارة الأنظمة الأطول! إذا كنت قلقًا بشأن الآثار الأمنية ، فيمكنك دائمًا إعادة تغيير التكوين إلى الإعداد الأصلي بعد الانتهاء من مهام الإدارة.
عندما تريد تسجيل الدخول إلى root
حساب المستخدم من داخل sudo
حساب المستخدم ، يمكنك استخدام أحد الأوامر التالية:
sudo -i
sudo su -
يمكنك الخروج من root
الحساب والعودة إلى sudo
حساب المستخدم الخاص بك في أي وقت ببساطة عن طريق كتابة:
exit
قبل تثبيت أي حزم على مثيل خادم CentOS ، سنقوم أولاً بتحديث النظام.
تأكد من تسجيل دخولك إلى الخادم باستخدام مستخدم sudo غير الجذر وتشغيل الأمر التالي:
sudo yum -y update
قم بتثبيت خادم الويب Apache:
sudo yum -y install httpd
استخدم systemctl
الأمر لبدء وتمكين Apache من التنفيذ تلقائيًا في وقت التمهيد.
sudo systemctl enable httpd
sudo systemctl start httpd
تحقق من ملف تكوين Apache للتأكد من أن DocumentRoot
التوجيه يشير إلى الدليل الصحيح.
sudo vi /etc/httpd/conf/httpd.conf
و DocumentRoot
خيار التكوين ينبغي أن تبدو هذه:
DocumentRoot "/var/www/html"
الآن ، لنتأكد من mod_rewrite
تحميل وحدة Apache. يمكننا القيام بذلك عن طريق البحث في ملف تكوين وحدات Apache الأساسية للمصطلح " mod_rewrite
".
افتح الملف:
sudo vi /etc/httpd/conf.modules.d/00-base.conf
ابحث عن المصطلح mod_rewrite
.
إذا mod_rewrite
تم تحميل وحدة Apache ، فيجب أن تجد خط تكوين يبدو كالتالي:
LoadModule rewrite_module modules/mod_rewrite.so
إذا بدأ السطر أعلاه بفاصلة منقوطة ، فستحتاج إلى إزالة الفاصلة المنقوطة لإلغاء تعليق الخط وتحميل الوحدة. ينطبق هذا بالطبع على أي وحدات أباتشي أخرى مطلوبة أيضًا.
نحتاج الآن إلى تحرير ملف التكوين الافتراضي الخاص بـ Apache حتى mod_rewrite
يعمل بشكل صحيح مع TextPattern CMS.
افتح الملف:
sudo vi /etc/httpd/conf/httpd.conf
ثم ابحث عن القسم الذي يبدأ بـ <Directory "/var/www/html">
والتغيير AllowOverride none
إليه AllowOverride All
. ستبدو النتيجة النهائية (مع إزالة جميع التعليقات) كما يلي:
<Directory "/var/www/html">
Options Indexes FollowSymLinks
AllowOverride All
Require all granted
</Directory>
الآن احفظ وأغلق ملف تكوين Apache.
سنعيد تشغيل Apache في نهاية هذا البرنامج التعليمي ، ولكن إعادة تشغيل Apache بانتظام أثناء التثبيت والتكوين هي بالتأكيد عادة جيدة ، لذلك دعونا نفعل ذلك الآن.
sudo systemctl restart httpd
ونحن الآن بحاجة إلى فتح الافتراضي HTTP
و HTTPS
الموانئ حيث سيتم حظره من قبل firewalld
افتراضيا.
افتح منافذ جدار الحماية:
sudo firewall-cmd --permanent --add-port=80/tcp
sudo firewall-cmd --permanent --add-port=443/tcp
أعد تحميل جدار الحماية لتطبيق التغييرات.
sudo firewall-cmd --reload
سترى الكلمة success
معروضة في جهازك الطرفي بعد كل أمر تكوين ناجح لجدار الحماية.
يمكننا التحقق بسرعة من أن HTTP
منفذ Apache مفتوح من خلال زيارة عنوان IP أو مجال مثيل الخادم في المستعرض:
http://YOUR_VULTR_IP_ADDRESS/
إذا تم إعداد كل شيء بشكل صحيح ، فسترى صفحة ويب Apache الافتراضية في المستعرض الخاص بك.
SELinux تعني "لينكس المحسن بالأمان". إنه تحسين أمني لـ Linux يسمح للمستخدمين والإداريين بمستوى أدق من التحكم في الوصول. يتم تعطيله افتراضيًا في حالات Vultr CentOS 7 ، ولكننا سنغطي خطوات تعطيله ، فقط في حالة عدم بدء التثبيت النظيف وتم تمكينه مسبقًا.
لتجنب مشاكل إذن الملف مع TextPattern CMS ، نحتاج إلى التأكد من تعطيل SELinux.
أولاً ، دعنا نتحقق مما إذا كان SELinux ممكّنًا أو معطلاً باستخدام sestatus
الأمر:
sudo sestatus
إذا رأيت شيئًا مثل: SELinux status: disabled
فمن المؤكد أنه معطل ويمكنك التخطي مباشرة إلى الخطوة 6. إذا رأيت أي رسالة أخرى ، فستحتاج إلى إكمال هذا القسم.
افتح ملف التكوين SELinux باستخدام محرر المحطة الطرفية المفضل لديك:
sudo vi /etc/selinux/config
التغيير SELINUX=enforcing
إلى SELINUX=disabled
ثم قم بحفظ الملف.
لتطبيق تغيير التكوين ، يتطلب SELinux إعادة تشغيل الخادم ، بحيث يمكنك إما إعادة تشغيل الخادم باستخدام لوحة تحكم Vultr أو يمكنك ببساطة استخدام shutdown
الأمر:
sudo shutdown -r now
عند إعادة تشغيل الخادم ، سيتم قطع اتصال جلسة SSH الخاصة بك وقد ترى رسالة تخبرك عن 'broken pipe'
أو 'Connection closed by remote host'
. لا داعي للقلق ، فما عليك سوى الانتظار لمدة 20 ثانية أو نحو ذلك ، ثم إعادة SSH مرة أخرى (باستخدام اسم المستخدم والمجال):
ssh user1@YOUR_DOMAIN
أو (باستخدام اسم المستخدم وعنوان IP الخاص بك):
ssh user1@YOUR_VULTR_IP_ADDRESS
بمجرد تسجيل الدخول مرة أخرى ، يجب عليك التحقق من حالة SELinux مرة أخرى باستخدام sestatus
الأمر للتأكد من تعطيله بشكل صحيح:
sudo sestatus
سترى رسالة تقول SELinux status: disabled
. إذا رأيت رسالة تقول SELinux status: enabled
(أو شيء مشابه) ، فستحتاج إلى تكرار الخطوات المذكورة أعلاه والتأكد من إعادة تشغيل الخادم بشكل صحيح.
يمكننا الآن تثبيت PHP 5.4 مع جميع وحدات PHP اللازمة التي تتطلبها TextPattern CMS. نحن نستخدم PHP 5.4 لأنه هو إصدار PHP الأصلي المقدم من CentOS 7.
sudo yum -y install php php-mbstring php-gd php-common php-pdo php-mysqlnd
افتراضيات CentOS 7 هي استخدام خادم قاعدة بيانات MariaDB ، وهو بديل مفتوح المصدر محسن بالكامل لخادم MySQL.
تثبيت خادم قاعدة بيانات MariaDB:
sudo yum -y install mariadb-server
ابدأ وتمكين خادم MariaDB من التنفيذ تلقائيًا في وقت التمهيد.
sudo systemctl enable mariadb
sudo systemctl start mariadb
تأمين تثبيت خادم MariaDB الخاص بك:
sudo mysql_secure_installation
و root
سوف تكون كلمة المرور فارغة، لذلك ببساطة اضغط على "دخول" عند المطالبة للحصول على root
كلمة المرور.
عندما يُطلب منك إنشاء root
مستخدم MariaDB / MySQL ، حدد "ص" (نعم) ثم أدخل root
كلمة مرور آمنة . ما عليك سوى الإجابة بـ "Y" على جميع الأسئلة الأخرى بنعم / لا لأن الاقتراحات الافتراضية هي الخيارات الأكثر أمانًا.
قم بتسجيل الدخول إلى shell MariaDB root
كمستخدم MariaDB عن طريق تشغيل الأمر التالي.
sudo mysql -u root -p
للوصول إلى موجه أوامر MariaDB ، ما عليك سوى إدخال root
كلمة مرور MariaDB عند مطالبتك بذلك.
قم بتشغيل الاستعلامات التالية لإنشاء قاعدة بيانات ومستخدم قاعدة بيانات MariaDB لـ TextPattern CMS.
CREATE DATABASE textpattern_db CHARACTER SET utf8 COLLATE utf8_general_ci;
CREATE USER 'textpattern_user'@'localhost' IDENTIFIED BY 'UltraSecurePassword';
GRANT ALL PRIVILEGES ON textpattern_db.* TO 'textpattern_user'@'localhost';
FLUSH PRIVILEGES;
EXIT;
يمكنك استبدال اسم قاعدة البيانات واسم textpattern_db
المستخدم textpattern_user
بشيء أكثر ترضيك ، إذا كنت تفضل ذلك. يرجى ملاحظة أن الحد الأقصى للطول الافتراضي لأسماء المستخدمين في MariaDB على CentOS 7 هو 16 حرفًا. أيضا ، تأكد من أنك تستبدل " UltraSecurePassword
" بكلمة مرور آمنة بالفعل.
قم بتغيير دليل العمل الحالي إلى دليل الويب الافتراضي.
cd /var/www/html/
إذا تلقيت رسالة خطأ تقول شيئًا مثل ، 'No such file or directory'
فجرّب الأمر التالي:
cd /var/www/ ; sudo mkdir html ; cd html
دليل العمل الحالي الخاص بك يجب أن تكون الآن: /var/www/html/
. يمكنك التحقق من ذلك باستخدام الأمر pwd
(طباعة دليل العمل):
pwd
استخدم الآن wget
لتنزيل حزمة تثبيت TextPattern CMS.
sudo wget https://textpattern.com/file_download/75/textpattern-4.6.2.zip
يرجى ملاحظة: أن عنوان URL لحزمة TextPattern CMS أعلاه كان صحيحًا في وقت كتابة هذا التقرير ، ولكن يجب عليك بالتأكيد التحقق من أحدث إصدار من خلال زيارة صفحة تنزيل TextPattern CMS .
قم بسرد الدليل الحالي للتحقق من أنك قمت بتنزيل الملف بنجاح.
ls -la
دعنا نثبت بسرعة unzip
حتى نتمكن من فك ضغط الملف.
sudo yum -y install unzip
الآن قم بفك ضغط الملف المضغوط.
sudo unzip textpattern-4.6.2.zip
انقل جميع ملفات التثبيت إلى دليل جذر الويب:
sudo mv textpattern-4.6.2/* /var/www/html
تغيير ملكية ملفات الويب لتجنب أي مشاكل في الأذونات.
sudo chown -R apache:apache *
أعد تشغيل Apache مرة أخرى.
sudo systemctl restart httpd
الآن نحن على استعداد للانتقال إلى الخطوة النهائية.
حان الوقت لزيارة عنوان IP لمثيل الخادم الخاص بك في المستعرض الخاص بك ، أو إذا قمت بالفعل بتكوين إعدادات Vultr DNS الخاصة بك (ومنحت الوقت الكافي للنشر) يمكنك ببساطة زيارة المجال الخاص بك بدلاً من ذلك.
للوصول إلى صفحة تثبيت TextPattern CMS ، أدخل عنوان IP لمثيل Vultr في شريط عنوان المتصفح ، متبوعًا بـ /textpattern/setup/
:
http://YOUR_VULTR_IP_ADDRESS/textpattern/setup/
معظم خيارات التثبيت ذاتية التفسير ، ولكن فيما يلي بعض المؤشرات لمساعدتك:
حدد لغتك وانقر على Submit
الزر.
أدخل تفاصيل قاعدة البيانات التي أنشأناها سابقًا:
MySQL user name: textpattern_user
MySQL password: UltraSecurePassword
MySQL server: localhost
MySQL database: textpattern_db
أدخل مجال موقعك إذا تم تكوينه ، وإلا أدخل ببساطة عنوان IP الخاص بك بدلاً من ذلك وانقر فوق Next
الزر.
Site URL: YOUR_VULTR_IP_ADDRESS
سترى صفحة تؤكد اتصال اتصال قاعدة البيانات الخاصة بك. إذا رأيت رسالة خطأ بدلاً من ذلك ، فارجع إلى الخطوة 2 وتحقق من إعدادات قاعدة البيانات.
عد الآن إلى محطة مثيل الخادم الخاص بك وقم بإنشاء config.php
ملف في /textpattern/
الدليل.
sudo vi textpattern/config.php
انسخ النص الموجود في صفحة التثبيت إلى config.php
الملف ثم احفظه واخرج منه. ستبدو محتويات ملف التكوين كما يلي:
<?php
$txpcfg['db'] = 'textpattern_db';
$txpcfg['user'] = 'textpattern_user';
$txpcfg['pass'] = 'UltraSecurePassword';
$txpcfg['host'] = 'localhost';
$txpcfg['table_prefix'] = '';
$txpcfg['txpath'] = '/var/www/html/textpattern';
$txpcfg['dbcharset'] = 'utf8mb4';
?>
بعد ذلك ، ارجع إلى صفحة التثبيت في متصفحك وانقر على I did it!
الزر.
أدخل الآن تفاصيل تسجيل الدخول الخاصة بك على النحو التالي:
Your full name: <your full name>
Your email address: <your email address>
Choose a login name: <a memorable login name>
Choose a password: <a secure password>
ثم حدد سمة موقع المسؤول أو اترك السمة الافتراضية المحددة.
انقر فوق Next
الزر لإنهاء التثبيت.
إذا سار كل شيء بسلاسة ، فسترى صفحة تأكيد تقول That went well!
.
لأغراض أمنية ، يجب عليك العودة إلى الجهاز وحذف /setup/
الدليل من /textpattern/
الدليل:
sudo rm -rf ./textpattern/setup/
للوصول إلى موقع الإدارة Log in now
، ما عليك سوى النقر فوق الزر " " وإدخال اسم المستخدم وكلمة المرور. إذا لم تتم إعادة توجيهك إلى صفحة تسجيل دخول المسؤول ، فيمكنك إدخال العنوان يدويًا:
http://YOUR_VULTR_IP_ADDRESS/textpattern/index.php
أنت الآن جاهز لبدء إضافة المحتوى الخاص بك وتكوين شكل وأسلوب موقعك! تأكد من مراجعة وثائق TextPattern CMS الممتازة للحصول على مزيد من المعلومات حول كيفية إنشاء موقعك وتكوينه.
آمل أن تكون قد استمتعت بهذا البرنامج التعليمي ، وحظًا سعيدًا في إنشاء موقع ويب جديد يستند إلى TextPattern CMS!
استخدام نظام مختلف؟ Neos عبارة عن منصة تطبيق محتوى مع CMS وإطار تطبيق في جوهرها. سيوضح لك هذا الدليل كيفية التثبيت
استخدام نظام مختلف؟ Omeka Classic 2.4 CMS هو نظام نشر رقمي مجاني ومفتوح المصدر ونظام إدارة المحتوى (CMS) لمشاركة الصور الرقمية
استخدام نظام مختلف؟ BlogoText CMS هو نظام إدارة محتوى (CMS) بسيط وخفيف الوزن ومفتوح المصدر ومحرك مدونة بسيط
استخدام نظام مختلف؟ WonderCMS هو ملف CMS مفتوح المصدر وسريع وصغير مكتوب بلغة PHP. يتم استضافة كود مصدر WonderCMS على جيثب. فيل هذا الدليل
استخدام نظام مختلف؟ Neos عبارة عن منصة تطبيق محتوى مع CMS وإطار تطبيق في جوهرها. سيوضح لك هذا الدليل كيفية التثبيت
استخدام نظام مختلف؟ Directus 6.4 CMS هو نظام إدارة محتوى بلا محتوى قوي ومرن ومفتوح المصدر ومفتوح المصدر يوفر للمطورين
استخدام نظام مختلف؟ ProcessWire CMS 3.0 هو نظام إدارة محتوى بسيط ومرن وقوي ومجاني ومفتوح المصدر (CMS). ProcessWire CMS 3.
في هذا البرنامج التعليمي ، سنقوم بإعداد خادم ويب باستخدام وكيل عكسي. نظام إدارة المحتوى الذي سنستخدمه هو Keystone.js ، وهو إطار تطبيق ويب معروف
استخدام نظام مختلف؟ dotCMS هو نظام إدارة محتوى من فئة مفتوحة المصدر مفتوح بلغة جافا. أنه يحتوي تقريبا على كل ميزة مطلوبة ر
استخدام نظام مختلف؟ Automad هو نظام إدارة محتوى مفتوح المصدر (CMS) ومحرك قوالب مكتوب بلغة PHP. كود مصدر أوتوماد i
استخدام نظام مختلف؟ PyroCMS هو CMS مفتوح المصدر مكتوب بلغة PHP. يتم استضافة شفرة مصدر PyroCMS على GitHub. في هذا الدليل ، تمشي جيدًا عبر الكل
استخدام نظام مختلف؟ ProcessWire CMS 3.0 هو نظام إدارة محتوى بسيط ومرن وقوي ومجاني ومفتوح المصدر (CMS). ProcessWire CMS 3.
استخدام نظام مختلف؟ مقدمة Tiki Wiki CMS Groupware ، والمعروف أيضًا باسم Tiki ، هو نظام إدارة محتوى ويكي مجاني ومفتوح المصدر. ميزة Tikis
استخدام نظام مختلف؟ مقدمة BoltWire هو نظام إدارة محتوى مجاني وخفيف الوزن مكتوب بلغة PHP. مقارنة بمعظم إدارة المحتوى الأخرى
استخدام نظام مختلف؟ Omeka Classic 2.4 CMS هو نظام نشر رقمي مجاني ومفتوح المصدر ونظام إدارة المحتوى (CMS) لمشاركة الصور الرقمية
استخدام نظام مختلف؟ PyroCMS هو CMS مفتوح المصدر مكتوب بلغة PHP. يتم استضافة شفرة مصدر PyroCMS على GitHub. في هذا الدليل تمشي جيدًا عبر الكل
استخدام نظام مختلف؟ PyroCMS هو CMS مفتوح المصدر مكتوب بلغة PHP. يتم استضافة شفرة مصدر PyroCMS على GitHub. في هذا الدليل تمشي جيدًا عبر الكل
استخدام نظام مختلف؟ ProcessWire CMS 3.0 هو نظام إدارة محتوى بسيط ومرن وقوي ومجاني ومفتوح المصدر (CMS). ProcessWire CMS 3.
استخدام نظام مختلف؟ Microweber هو سحب مفتوح المصدر وإفلات CMS ومتجر عبر الإنترنت. يتم استضافة شفرة مصدر Microweber على GitHub. هذا الدليل سيظهر لك
استخدام نظام مختلف؟ Microweber هو سحب مفتوح المصدر وإفلات CMS ومتجر عبر الإنترنت. يتم استضافة شفرة مصدر Microweber على GitHub. هذا الدليل سيظهر لك
نظرة ثاقبة على 26 أسلوبًا لتحليل البيانات الضخمة: الجزء الأول
يعرف الكثير منكم أن Switch سيصدر في مارس 2017 وميزاته الجديدة. بالنسبة لأولئك الذين لا يعرفون ، قمنا بإعداد قائمة بالميزات التي تجعل "التبديل" "أداة لا غنى عنها".
هل تنتظر عمالقة التكنولوجيا للوفاء بوعودهم؟ تحقق من ما تبقى دون تسليم.
اقرأ المدونة لمعرفة الطبقات المختلفة في بنية البيانات الضخمة ووظائفها بأبسط طريقة.
اقرأ هذا لمعرفة مدى انتشار الذكاء الاصطناعي بين الشركات الصغيرة وكيف أنه يزيد من احتمالات نموها ومنح منافسيها القدرة على التفوق.
لقد أصبح حل CAPTCHA صعبًا جدًا على المستخدمين في السنوات القليلة الماضية. هل ستكون قادرة على أن تظل فعالة في اكتشاف البريد العشوائي والروبوتات في المستقبل القريب؟
مع تطور العلم بمعدل سريع ، واستلام الكثير من جهودنا ، تزداد أيضًا مخاطر تعريض أنفسنا إلى تفرد غير قابل للتفسير. اقرأ ، ماذا يمكن أن يعني التفرد بالنسبة لنا.
ما هو التطبيب عن بعد والرعاية الصحية عن بعد وأثره على الأجيال القادمة؟ هل هو مكان جيد أم لا في حالة الوباء؟ اقرأ المدونة لتجد طريقة عرض!
ربما سمعت أن المتسللين يكسبون الكثير من المال ، لكن هل تساءلت يومًا كيف يجنون هذا النوع من المال؟ دعنا نناقش.
أصدرت Apple مؤخرًا macOS Catalina 10.15.4 تحديثًا تكميليًا لإصلاح المشكلات ولكن يبدو أن التحديث يتسبب في المزيد من المشكلات التي تؤدي إلى إنشاء أجهزة macOS. قراءة هذه المادة لمعرفة المزيد