كيفية تثبيت Matomo Analytics على Fedora 28
استخدام نظام مختلف؟ Matomo (Piwik سابقًا) هو نظام أساسي مفتوح المصدر للتحليلات ، وهو بديل مفتوح لبرنامج Google Analytics. مصدر Matomo مستضاف
Selfoss RSS Reader هو برنامج مجاني ومفتوح المصدر ومفتوح المصدر ومُستضاف ذاتيًا على الويب ، وبث مباشر ، ومزج ، وقارئ موجز الأخبار (RSS / Atom) ومجمع عالمي. يتميز Selfoss RSS Reader باستيراد OPML وواجهة برمجة تطبيقات JSON المريحة ونظام المكونات الإضافية المفتوح الذي يتيح لك توسيع الوظيفة الافتراضية بسهولة عن طريق كتابة موصلات البيانات المخصصة الخاصة بك. يمكنك استخدام Selfoss للبث المباشر وجمع جميع مشاركاتك وتغريداتك وملفات بودكاست وخلاصاتك في مكان مركزي واحد يمكنك الوصول إليه بسهولة من أي جهاز سطح مكتب أو جهاز محمول.
في هذا البرنامج التعليمي ، سنقوم بتثبيت Selfoss RSS Reader 2.17 على Fedora 26 LAMP VPS باستخدام خادم الويب Apache و PHP 7.1 وقاعدة بيانات 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
الامتيازات.
بمجرد تحرير الملف ، يمكنك الحفظ والخروج بالضغط Esc
ثم الدخول :wq
إلى "كتابة" و "إنهاء" الملف.
بعد ذلك نحتاج إلى إضافة 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
قبل تثبيت أي حزم على مثيل خادم Fedora ، سنقوم أولاً بتحديث النظام.
تأكد من تسجيل الدخول إلى الخادم باستخدام مستخدم sudo غير الجذر وقم بتشغيل الأمر التالي:
sudo dnf -y update
قم بتثبيت خادم الويب Apache:
sudo dnf -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
يعمل بشكل صحيح مع Selfoss RSS Reader.
افتح الملف:
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 يسمح للمستخدمين والمسؤولين بمزيد من التحكم في التحكم في الوصول. يتم تمكينه افتراضيًا في Fedora 26 ، ولكنه بالتأكيد ليس ضروريًا لأمان الخادم لأن العديد من توزيعات خادم Linux لا يتم شحنها مع تثبيته أو تمكينه افتراضيًا.
لتجنب مشاكل إذن الملف مع Selfoss RSS Reader لاحقًا ، سنقوم بتعطيل SELinux في الوقت الحالي. لذا افتح ملف تكوين 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 7.1 مع جميع وحدات PHP اللازمة التي يتطلبها Selfoss RSS Reader:
sudo dnf -y install php php-mysqlnd php-mbstring php-gd php-common php-pdo php-pecl-imagick php-xml php-zip
افتراضيات Fedora 26 هي استخدام خادم قاعدة بيانات MariaDB ، وهو مصدر محسن ومفتوح المصدر بالكامل ، تم تطويره من قبل المجتمع ، واستبدال بديل لخادم MySQL.
تثبيت خادم قاعدة بيانات MariaDB:
sudo dnf -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 لـ Selfoss RSS Reader:
CREATE DATABASE selfoss_db CHARACTER SET utf8 COLLATE utf8_general_ci;
CREATE USER 'selfoss_user'@'localhost' IDENTIFIED BY 'UltraSecurePassword';
GRANT ALL PRIVILEGES ON selfoss_db.* TO 'selfoss_user'@'localhost';
FLUSH PRIVILEGES;
EXIT;
يمكنك استبدال اسم قاعدة البيانات واسم selfoss_db
المستخدم selfoss_user
بشيء أكثر ترضيك ، إذا كنت تفضل ذلك. تأكد أيضًا من استبدال "UltraSecurePassword" بكلمة مرور آمنة بالفعل.
تغيير دليل العمل الحالي إلى دليل الويب الافتراضي:
cd /var/www/html/
إذا تلقيت رسالة خطأ تقول شيئًا مثل ، 'No such file or directory'
فجرّب الأمر التالي:
cd /var/www/ ; sudo mkdir html ; cd html
ودليل العمل الحالي الخاص بك سيكون الآن: /var/www/html/
. يمكنك التحقق من ذلك باستخدام الأمر pwd
(طباعة دليل العمل):
pwd
استخدم الآن wget
لتنزيل حزمة تثبيت Selfoss RSS Reader:
sudo wget --content-disposition https://github.com/SSilence/selfoss/archive/2.17.zip
يرجى ملاحظة ما يلي: يجب عليك بالتأكيد التحقق من أحدث إصدار من خلال زيارة صفحة تنزيل Selfoss RSS Reader .
قم بإدراج الدليل الحالي للتأكد من أنك قمت بتنزيل الملف بنجاح:
ls -la
دعنا نثبت بسرعة unzip
حتى نتمكن من فك ضغط الملف:
sudo dnf -y install unzip
الآن قم بفك ضغط الأرشيف المضغوط:
sudo unzip selfoss-2.17.zip
انقل جميع ملفات التثبيت إلى دليل جذر الويب:
sudo mv -v selfoss-2.17/* selfoss-2.17/.* /var/www/html 2>/dev/null
قم بتغيير ملكية ملفات الويب لتجنب أي مشاكل في الأذونات:
sudo chown -R apache:apache * ./
أعد تشغيل Apache مرة أخرى:
sudo systemctl restart httpd
يتطلب منا Selfoss RSS Reader أن نستخدم composer
لتنزيل بعض الإضافات لذا دعنا نثبت composer
:
sudo dnf -y install composer
الآن تأكد من أنك في دليل webroot:
cd /var/www/html
قم بتشغيل الملحن باستخدام apache
المستخدم:
sudo -u apache composer install
سترى بعض الرسائل التحذيرية من composer
عدم القدرة على الكتابة إلى ذاكرة التخزين المؤقت ، ولكن لا تقلق كثيرًا بشأن ذلك لأن كل شيء سيظل مثبتًا على ما يرام.
نحن الآن على استعداد للانتقال إلى الخطوة الأخيرة.
نحتاج أولاً إلى تحديث ملف تكوين Selfoss RSS Reader config.ini
بإعدادات قاعدة البيانات الصحيحة ، لذا تأكد من أنك لا تزال في دليل webroot وانسخ defaults.ini
إلى config.ini
:
sudo cp -iv defaults.ini config.ini
بعد ذلك ، افتح config.ini
ملف التكوين وأضف قيم قاعدة البيانات التالية:
[globals]
db_type=mysql
db_host=localhost
db_database=selfoss_db
db_username=selfoss_user
db_password=UltraSecurePassword
db_port=3306
نحتاج الآن إلى إضافة تجزئة كلمة المرور config.ini
، ولكننا نحتاج أولاً إلى إنشائها ، لذا قم بزيارة عنوان URL التالي في متصفحك:
http://YOUR_VULTR_IP_ADDRESS/password
ثم أدخل كلمة المرور المطلوبة في Password
الحقل وانقر فوق Generate
.
ما عليك سوى نسخ قيمة التجزئة الناتجة إلى خيار كلمة المرور في config.ini
الملف بحيث يبدو قسم كلمة المرور الآن على النحو التالي:
username=admin
password=b729a37c34ff9648c33d67de3b289b58b7486dd71236343a6c2c275c2cc0477bd1d254eb92248bfa753169547d4bd2e81c2c9e460ba5bba822af1e87722dd12a
salt=<long string of random chracters>
ملاحظة: من الواضح أن تجزئة كلمة المرور ستكون مختلفة عن التجزئة الموضحة أعلاه ولديك مطلق الحرية في اختيار اسم مستخدم مختلف.
قم بإزالة كافة الخيارات الأخرى غير المعدلة من config.ini
الملف بحيث يبدو ملف التكوين الكامل مشابهًا لما يلي:
[globals]
db_type=mysql
db_host=localhost
db_database=db1
db_username=u1
db_password=usecpass1
db_port=3306
username=admin
password=b729a37c34ff9648c33d67de3b289b58b7486dd71236343a6c2c275c2cc0477bd1d254eb92248bfa753169547d4bd2e81c2c9e460ba5bba822af1e87722dd12a
salt=<long string of random chracters>
ملاحظة: إذا كنت ترغب في تغيير أي من defaults.ini
الخيارات ، يمكنك ببساطة إضافتها إلى قائمة الخيارات أعلاه.
عند الانتهاء من تحرير ملف التكوين ، يمكنك حفظ الملف والخروج منه.
يمكنك الآن تسجيل الدخول إلى Selfoss RSS Reader من خلال زيارة الصفحة الرئيسية وإدخال اسم المستخدم وكلمة المرور:
http://YOUR_VULTR_IP_ADDRESS/
إذا كنت تريد أن يقوم القارئ بتحديث خلاصاتك تلقائيًا (ومن المؤكد أنك تفعل ذلك) ، فستحتاج إلى تعديل ملف crontab الخاص بك:
sudo crontab -e
أضف السطر التالي لتحديث خلاصاتك كل ساعة:
0 * * * * apache cd /var/www/html && php cliupdate.php
إذا لم تقم بتكوين إعدادات Vultr DNS الخاصة بك حتى الآن ، فيمكنك القيام بذلك باستخدام لوحة تحكم Vultr DNS.
يُنصح أيضًا بتكوين موقعك لاستخدام طبقة المقابس الآمنة لأن معظم المتصفحات الحديثة ستقدم تحذيرات عندما لا يتم تمكين طبقة المقابس الآمنة في المواقع وتكون شهادات طبقة المقابس الآمنة متاحة الآن مجانًا.
على أي حال ، أنت حر الآن في البدء في إضافة خلاصاتك وتخصيص القارئ الخاص بك ، إذا كنت ترغب في ذلك.
استخدام نظام مختلف؟ Matomo (Piwik سابقًا) هو نظام أساسي مفتوح المصدر للتحليلات ، وهو بديل مفتوح لبرنامج Google Analytics. مصدر Matomo مستضاف
استخدام نظام مختلف؟ Omeka Classic 2.4 CMS هو نظام نشر رقمي مجاني ومفتوح المصدر ونظام إدارة المحتوى (CMS) لمشاركة الصور الرقمية
استخدام نظام مختلف؟ Ghost هي منصة تدوين مفتوحة المصدر اكتسبت شعبية بين المطورين والمستخدمين العاديين منذ عام 201
استخدام نظام مختلف؟ NodeBB هو منتدى قائم على Node.js. يستخدم مقابس الويب للتفاعل الفوري والإشعارات في الوقت الحقيقي. كود مصدر NodeBB i
استخدام نظام مختلف؟ WonderCMS هو ملف CMS مفتوح المصدر وسريع وصغير مكتوب بلغة PHP. يتم استضافة كود مصدر WonderCMS على جيثب. فيل هذا الدليل
Go (تُعرف أيضًا باسم Golang) هي لغة برمجة مكتوبة بشكل ثابت ومجمعة على شكل حرف C تم تطويرها بواسطة Google. جعلت البساطة وتعدد الاستخدامات ب
استخدام نظام مختلف؟ Directus 6.4 CMS هو نظام إدارة محتوى بلا محتوى قوي ومرن ومفتوح المصدر ومفتوح المصدر يوفر للمطورين
استخدام نظام مختلف؟ Lychee 3.1 Photo Album هو أداة إدارة صور بسيطة ومرنة ومجانية ومفتوحة المصدر تعمل على خادم VPS. يتم تثبيته
استخدام نظام مختلف؟ Fork هو CMS مفتوح المصدر مكتوب بلغة PHP. رمز مصدر فوركس مستضاف على جيثب. سيوضح لك هذا الدليل كيفية تثبيت Fork CM
استخدام نظام مختلف؟ RainLoop هو عميل بريد إلكتروني بسيط وحديث وسريع يعتمد على الويب. يتم استضافة كود مصدر RainLoop على جيثب. هذا الدليل سوف يظهر لك حو
استخدام نظام مختلف؟ PyroCMS هو CMS مفتوح المصدر مكتوب بلغة PHP. يتم استضافة شفرة مصدر PyroCMS على GitHub. في هذا الدليل تمشي جيدًا عبر الكل
استخدام نظام مختلف؟ مقدمة TaskBoard هي أداة مجانية ومفتوحة المصدر يمكن استخدامها لتتبع الأشياء التي تحتاج إلى إنجازها. أنه يوفر
استخدام نظام مختلف؟ TextPattern CMS 4.6.2 هو نظام إدارة محتوى بسيط ومرن ومجاني ومفتوح المصدر (CMS) يتيح لمصممي الويب
استخدام نظام مختلف؟ BookStack عبارة عن منصة بسيطة ذاتية الاستضافة لتنظيم المعلومات وتخزينها. BookStack مجاني تمامًا ومفتوح المصدر ، أ
استخدام نظام مختلف؟ Gitea هو نظام بديل مفتوح المصدر للتحكم في الإصدار يعمل بواسطة Git. Gitea هو مكتوب في Golang وهو
استخدام نظام مختلف؟ Couch CMS هو نظام إدارة محتوى (CMS) بسيط ومرن ومجاني ومفتوح يسمح لمصممي الويب بتصميم
استخدام نظام مختلف؟ MyBB هو برنامج منتدى مجاني ومفتوح المصدر وبديهي وقابل للتوسيع. يتم استضافة رمز مصدر MyBB على GitHub. هذا الدليل سوف يظهر
استخدام نظام مختلف؟ Microweber هو سحب مفتوح المصدر وإفلات CMS ومتجر عبر الإنترنت. يتم استضافة شفرة مصدر Microweber على GitHub. هذا الدليل سيظهر لك
استخدام نظام مختلف؟ Osclass هو مشروع مفتوح المصدر يسمح لك بإنشاء موقع مصنف بسهولة دون أي معرفة تقنية. مصدره
استخدام نظام مختلف؟ سيقوم HTMLDoc بتحليل مستندات Postcript (PDF 1.6) ديناميكيًا من النص التشعبي المكتوب بشكل صحيح (HTML 3.2). هذا سيسمح لك ر
نظرة ثاقبة على 26 أسلوبًا لتحليل البيانات الضخمة: الجزء الأول
يعرف الكثير منكم أن Switch سيصدر في مارس 2017 وميزاته الجديدة. بالنسبة لأولئك الذين لا يعرفون ، قمنا بإعداد قائمة بالميزات التي تجعل "التبديل" "أداة لا غنى عنها".
هل تنتظر عمالقة التكنولوجيا للوفاء بوعودهم؟ تحقق من ما تبقى دون تسليم.
اقرأ المدونة لمعرفة الطبقات المختلفة في بنية البيانات الضخمة ووظائفها بأبسط طريقة.
اقرأ هذا لمعرفة مدى انتشار الذكاء الاصطناعي بين الشركات الصغيرة وكيف أنه يزيد من احتمالات نموها ومنح منافسيها القدرة على التفوق.
لقد أصبح حل CAPTCHA صعبًا جدًا على المستخدمين في السنوات القليلة الماضية. هل ستكون قادرة على أن تظل فعالة في اكتشاف البريد العشوائي والروبوتات في المستقبل القريب؟
مع تطور العلم بمعدل سريع ، واستلام الكثير من جهودنا ، تزداد أيضًا مخاطر تعريض أنفسنا إلى تفرد غير قابل للتفسير. اقرأ ، ماذا يمكن أن يعني التفرد بالنسبة لنا.
ما هو التطبيب عن بعد والرعاية الصحية عن بعد وأثره على الأجيال القادمة؟ هل هو مكان جيد أم لا في حالة الوباء؟ اقرأ المدونة لتجد طريقة عرض!
ربما سمعت أن المتسللين يكسبون الكثير من المال ، لكن هل تساءلت يومًا كيف يجنون هذا النوع من المال؟ دعنا نناقش.
أصدرت Apple مؤخرًا macOS Catalina 10.15.4 تحديثًا تكميليًا لإصلاح المشكلات ولكن يبدو أن التحديث يتسبب في المزيد من المشكلات التي تؤدي إلى إنشاء أجهزة macOS. قراءة هذه المادة لمعرفة المزيد