نظرة ثاقبة على 26 أسلوبًا لتحليل البيانات الضخمة: الجزء الأول
نظرة ثاقبة على 26 أسلوبًا لتحليل البيانات الضخمة: الجزء الأول
بالنظر إلى ميل OpenBSD للأمان ، فمن المنطقي فقط تشغيل موقع WordPress الخاص بك معه ، خاصة لأن WordPress و PHP يميلان إلى أن يكونا أهدافًا متحركة للأطفال الصغار. نظرًا لأن httpd الخاص بـ OpenBSD مصمم أساسًا لتقديم الصفحات الثابتة ، فإن عمليات POST محفوظة لعمليات fastcgi و slowcgi. هذا يجعل من الصعب على الممثل المارقة كسر عملية خادم الويب والوصول إلى الخادم الخاص بك. يتم توصيل عمليات POST إلى عملية fastcgi واستخدام مترجم خارجي. ستناقش هذه المقالة ليس فقط إعداد موقع WordPress الخاص بك ولكن بعض تقنيات الصيانة الأساسية وكيفية النسخ الاحتياطي واستعادة موقعك وقاعدة بياناته. أينما ترى example.com
كنطاق ، يرجى استبداله بنطاقك.
إذا لم تكن قد قمت بذلك بالفعل ، فستحتاج إلى إنشاء /etc/doas.conf
ملف. الأمر doas هو استبدال OpenBSD السهل لـ sudo. للراحة ، أضفت خيار nopass بحيث لا تضطر إلى إعادة كتابة كلمة المرور الخاصة بك عند استخدام doas. إذا كنت تفضل عدم الحصول على هذا ، فما عليك سوى حذف nopass.
su -
echo "permit nopass keepenv :wheel" > /etc/doas.conf
بناءً على كيفية حزم OpenBSD للنشر ، في بعض الأحيان قد لا يكون لدى مدير الحزم مستودع تم تكوينه. لتهيئة مستودع OpenBSD الرسمي ، علينا إنشاء /etc/installurl
الملف.
doas su
echo "https://cdn.openbsd.org/pub/OpenBSD" > /etc/installurl
exit
الآن علينا إضافة PHP وبعض الوحدات الإضافية التي سيحتاجها WordPress من أجل التعامل مع أشياء مثل الصور والتشفير. عند المطالبة ، اختر تثبيت أحدث حزمة PHP. الشيء الوحيد الذي عليك القيام به هو نسخ ملفات ini من الدليل النموذجي إلى الدليل الرئيسي. يجب القيام بذلك من أجل تمكين وحدات PHP الإضافية.
doas pkg_add -r mariadb-client mariadb-server php php-curl php-mysqli php-zip pecl73-mcrypt pecl73-imagick wget
doas cp /etc/php-7.3.sample/* /etc/php-7.3/.
في عالم اليوم ، يجب تقديم مواقع الويب عبر SSL أو مواجهة محركات البحث. لحسن الحظ ، لدى OpenBSD تطبيق رائع يسمى acme-client. سيقوم العميل acme تلقائيًا بإنشاء مفتاح خاص جديد وطلب شهادة جديدة صالحة بالكامل. يعتمد عميل acme على وجود خادم ويب في مكانه ، لذلك سنحتاج إلى إنشاء تعريف سريع افتراضي للخادم.
مع محرر المفضلة لديك ، إنشاء /etc/httpd.conf
. سنضيف تعريفات الخادم الأخرى إلى الملف لاحقًا. في الوقت الحالي سيكون هذا كافيًا حتى يعمل acme-client بشكل صحيح.
prefork 5
types { include "/usr/share/misc/mime.types" }
server "default" {
listen on egress port 80
root "/htdocs"
directory index "index.html"
location "/.well-known/acme-challenge/*" {
request strip 2
root "/acme"
}
}
أيضا باستخدام محرر المفضلة لديك ، إنشاء /etc/acme-client.conf
.
authority letsencrypt {
api url "https://acme-v02.api.letsencrypt.org/directory"
account key "/etc/acme/letsencrypt-privkey.pem"
}
authority letsencrypt-staging {
api url "https://acme-staging-v02.api.letsencrypt.org/directory"
account key "/etc/acme/letsencrypt-staging-privkey.pem"
}
domain example.com {
alternative names { www.example.com }
domain key "/etc/ssl/private/example.com.key"
domain full chain certificate "/etc/ssl/example.com.crt"
sign with letsencrypt
}
الآن علينا تمكين وبدء httpd. بمجرد القيام بذلك ، يمكننا تشغيل عميل acme وانتظاره للحصول على شهادتنا الجديدة والجديدة. بعد القيام بذلك ، سنضيف وظيفة cron لطلب وظيفة جديدة تلقائيًا كل 7 أيام ، لذلك لا داعي للقلق بشأن انتهاء الصلاحية.
doas rcctl enable httpd
doas rcctl start httpd
doas acme-client -v example.com
الآن نخلق وظيفة كرون. أضف هذا السطر أسفل الإدخال الأخير. في هذه الحالة ، نقول للعميل طلب الشهادة الجديدة في الساعة 1:00 صباحًا كل يوم سبت.
doas crontab -e
0 1 * * 6 acme-client -F example.com && rcctl reload httpd
حان الوقت الآن لإعداد httpd لـ WordPress. بدلاً من وضع تعريف موقعنا مباشرة /etc/httpd.conf
، سنقوم بوضعه في ملف منفصل يسمى /etc/httpd.conf.example.com
وندرجه في ملف التكوين الرئيسي. من الممارسات الجيدة عمومًا الفصل بين الاثنين ، مع الحفاظ على التعريفات على مستوى الموقع في ملف التكوين الرئيسي والإعدادات الخاصة بالنطاق في ملف آخر.
أضف السطر التالي إلى أسفل /etc/httpd.conf
الملف:
include "/etc/httpd.conf.example.com"
الآن باستخدام المحرر المفضل لديك ، قم بإنشاء /etc/httpd.conf.example.com
. من أجل الراحة ، سنقوم بإنشاء ملفات سجل منفصلة لنطاقك. هذا يجعل الأمر أسهل عند محاولة تعقب المشاكل المحتملة في موقعك.
server "example.com" {
listen on egress port 80
alias "www.example.com"
# Automatically redirect to SSL
block return 302 "https://$SERVER_NAME$REQUEST_URI"
log {
access "access-example.com"
error "error-example.com"
}
}
server "example.com" {
listen on egress tls port 443
alias "www.example.com"
root "/htdocs/wordpress"
directory index "index.php"
log {
access "access-example.com"
error "error-example.com"
}
tcp { nodelay, backlog 10 }
tls {
certificate "/etc/ssl/example.com.crt"
key "/etc/ssl/private/example.com.key"
}
hsts {
# max-age value is the number of seconds in 1 year
max-age 31556952
preload
subdomains
}
location "/.well-known/acme-challenge/*" {
root "/acme"
request strip 2
}
location "/posts/*" {
fastcgi {
param SCRIPT_FILENAME \
"/htdocs/wordpress/index.php"
socket "/run/php-fpm.sock"
}
}
location "/page/*" {
fastcgi {
param SCRIPT_FILENAME \
"/htdocs/wordpress/index.php"
socket "/run/php-fpm.sock"
}
}
location "/feed/*" {
fastcgi {
param SCRIPT_FILENAME \
"/htdocs/wordpress/index.php"
socket "/run/php-fpm.sock"
}
}
location "/comments/feed/*" {
fastcgi {
param SCRIPT_FILENAME \
"htdocs/wordpress/index.php"
socket "/run/php-fpm.sock"
}
}
location "/wp-json/*" {
fastcgi {
param SCRIPT_FILENAME \
"htdocs/wordpress/index.php"
socket "/run/php-fpm.sock"
}
}
location "/wp-login.php*" {
authenticate "WordPress" with "/htdocs/htpasswd"
fastcgi socket "/run/php-fpm.sock"
}
location "*.php*" {
fastcgi socket "/run/php-fpm.sock"
}
}
لمزيد من الأمان ، سنقوم بتنفيذ مطالبة إضافية لاسم المستخدم وكلمة المرور عند تسجيل الدخول إلى موقع إدارة WordPress. نظرًا لأن أطفال البرامج النصية يرغبون في المحاولة بشكل متكرر وحشو تسجيل الدخول إلى WordPress ، فإننا نقوم بإنشاء تسجيل دخول إضافي على مستوى خادم الويب. عادة ، يحصلون على حوالي 5 تخمينات قبل أن يطرح WordPress 401 خطأ غير مصرح به.
doas su
cd /var/www/htdocs
doas htpasswd htpasswd <user>
doas chown www:www htpasswd
doas chmod 0640 htpasswd
doas rcctl reload httpd
يجب علينا إجراء تغيير في php حتى يتمكن تثبيت WordPress الخاص بك من إرسال رسائل البريد الإلكتروني. يعتمد WordPress وبعض المكونات الإضافية على القدرة على إرسال رسائل بريد إلكتروني لإعلامك بالترقيات والتنبيهات والتغييرات. يمكن أن تؤدي عدم القدرة على إرسال رسائل البريد الإلكتروني إلى كسر ميزات معينة في WordPress. نظرًا لأن httpd يعمل في بيئة متجذرة ، يتعين علينا إخبار php عن كيفية إرسال رسائل البريد الإلكتروني. علاوة على ذلك ، يتعين علينا القيام ببعض تغييرات الأداء إلى php-fpm.
ابحث عن sendmail_path
السطر /etc/php-7.3.ini
وقم بإجراء التغيير التالي:
; For Unix only. You may supply arguments as well (default: "sendmail -t -i").
; sendmail_path =
sendmail_path = /bin/femail -t -i
ابحث عن السطور التالية /etc/php-fpm.conf
وقم بتغييرها على النحو التالي:
pm.start_servers = 5
pm.min_spare_servers = 1
pm.max_spare_servers = 6
الخطوة التالية هي تمكين وبدء php-fpm.
doas rcctl enable php73_fpm
doas rcctl start php73_fpm
MariaDB هي شوكة بديلة لـ MySQL. نحتاج إلى القيام ببعض أعمال التهيئة الأولية وإعداد قاعدة البيانات لـ WordPress.
قبل أن نتمكن من استخدام MariaDB بشكل فعال ، نحتاج إلى السماح لبرنامج mysql daemon باستخدام موارد أكثر من الموارد الافتراضية. للقيام بذلك ، قم بإجراء التغييرات التالية /etc/login.conf
عن طريق إضافة هذا الإدخال في الأسفل.
mysqld:\
:openfiles-cur=1024:\
:openfiles-max=2048:\
:tc=daemon:
يجب علينا إجراء بعض التغييرات في ملف تكوين MariaDB ، /etc/my.cnf
. من خلال جعل عميل وملقم mysql يتواصلان عبر مقبس نطاق UNIX بدلاً من TCP ، يمكن إبقاء استخدام الذاكرة لخادمك أقل. ليس عليك إجراء جميع التغييرات المقترحة أدناه. الشيءان المهمان للتغيير هو socket
الخط والتعليق على bind-address
الخط. يؤدي هذا إلى نقل المقبس داخل /var/www
بيئة chroot حتى يتمكن WordPress من الاتصال بقاعدة البيانات. من خلال التعليق خارج bind-address
الخط ، نمنع MariaDB من الاستماع على منفذ TCP.
[client-server]
socket=/var/www/var/run/mysql/mysql.sock
#port=3306
# This will be passed to all MariaDB clients
[client]
#password=my_password
# The MariaDB server
[mysqld]
# To listen to all IPv4 network addresses, use "bind-address = 0.0.0.0"
#bind-address=127.0.0.1
# Directory where you want to put your data
#data=/var/mysql
# This is the prefix name to be used for all log, error and replication files
#log-basename=mysqld
# Logging
#log-bin=/var/mysql/mariadb-bin
#max_binlog_size=100M
#binlog_format=row
#expire_logs_days = 7
#general-log
#slow_query_log
query_cache_type = 1
query_cache_limit = 1M
query_cache_size = 16M
الآن نحن بحاجة إلى تشغيل ثنائي تثبيت MariaDB وتمكين وبدء MariaDB. سيؤدي هذا الإجراء إلى تعيين كلمة مرور جذرية وإسقاط قاعدة بيانات الاختبار بشكل اختياري. من الجيد اتباع جميع الاقتراحات في مرحلة التثبيت الآمن.
doas mysql_install_db
doas rcctl enable mysqld
doas rcctl start mysqld
doas mysql_secure_installation
إنشاء قاعدة بيانات WordPress ومستخدم قاعدة البيانات. تذكر أن تستبدل <wp_user>
باختيارك لاسم مستخدم قاعدة البيانات وكلمة <password>
مرور معقدة من اختيارك.
mysql -u root -p
CREATE DATABASE wordpress;
GRANT ALL PRIVILEGES ON wordpress.* TO '<wp_user>'@'localhost' IDENTIFIED BY '<password>';
FLUSH PRIVILEGES;
EXIT
لم يكن لدى WordPress منفذ OpenBSD رسمي لبعض الوقت لأنه يعمل إلى حد كبير خارج الصندوق. قم بتنزيل مجلد تثبيت WordPress واستخراجه ونقله.
cd /tmp
wget https://wordpress.org/latest.tar.gz
tar xvfz latest.tar.gz
doas mv wordpress /var/www/htdocs/.
doas chown -R www:www /var/www/htdocs/wordpress
doas chmod 0755 /var/www/htdocs/wordpress
cd /var/www/htdocs/wordpress/
find . -type d -exec chmod 755 {} \;
find . -type f -exec chmod 644 {} \;
علينا أن ننسخ /etc/resolv.conf
وإلى /etc/hosts
دليل سنقوم بإنشائه يسمى /var/www/etc
. هذا حتى يتمكن WordPress من الوصول إلى السوق بنجاح. ستحتاج إلى هذا لتنزيل الإضافات والمظاهر عبر موقع مسؤول WordPress. من المهم أيضًا أن يعمل المكون الإضافي Jet Pack بشكل صحيح.
doas mkdir /var/www/etc
doas cp /etc/hosts /var/www/etc/.
doas cp /etc/resolv.conf /var/www/etc/.
من هنا ، تصفح إلى موقع WordPress الخاص بك باستخدام https عبر عنوان URL الذي حددته في تعريف خادم الويب. إذا كان كل شيء يعمل بشكل صحيح ، يجب أن ترى معالج تثبيت WordPress. عندما تصل إلى خيار تحديد خادم قاعدة بيانات ، يجب عليك استخدامهlocalhost:/var/run/mysql/mysql.sock
بمجرد تثبيت WordPress ، حان الوقت لإعداد الروابط الثابتة بحيث تبدو أكثر ملاءمة لكبار المسئولين الاقتصاديين. من شاشة مدير WordPress ، انتقل إلى Settings -> Permalinks
. انقر على الهيكل المخصص واكتب /posts/%postname%
. بعد إجراء هذا التغيير ، انقر فوق الزر حفظ التغييرات. لديك الآن روابط تبحث أجمل بكثير. على سبيل المثال ، سيبدو الرابط الثابت كما يلي:https://example.com/posts/example-blog-post
من هنا ، يجب أن يكون لديك موقع ويب أساسي جاهز للعمل. تأكد من تثبيت المكونات الإضافية مثل Jet Pack و WP-Super Cache. يساعد البرنامج المساعد WP-Super Cache على تسريع موقع الويب الخاص بك عن طريق تخزين صفحات الويب مؤقتًا والقضاء على عمليات البحث المستمرة في قاعدة البيانات ويمنحك JetPack بعض إحصائيات المشاهدة الممتازة.
لا داعي للقول إن النسخ الاحتياطي لموقع الويب وقاعدة البيانات مهم جدًا. لحسن الحظ ، هذا أمر سهل نسبيًا. نسخ احتياطي إلى دليل منزلك ثم يمكنك نسخها عبر scp إلى موقع آخر. يمكنك أيضًا إنشاء لقطة عبر لوحة تحكم Vultr. من الجيد القيام بالأمرين معًا.
cd /var/www/htdocs
tar cvfz wordpress.tgz wordpress/
cp wordpress.tgz /home/user
mysqldump -u root -p wordpress > wordpress.sql && gzip wordpress.sql
إذا تعرضت قاعدة البيانات للتلف وكانت الاستعادة ضرورية ، فقم بما يلي:
gunzip wordpress.sql.gz
mysql -u root -p wordpress
DROP USER '<user>'@'localhost';
DROP DATABASE wordpress;
CREATE DATABASE wordpress;
GRANT ALL PRIVILEGES ON wordpress.* TO '<wp_user>'@'localhost' IDENTIFIED BY '<password>';
FLUSH PRIVILEGES;
EXIT
mysql -u root -p wordpress < wordpress.sql
إذا قمت بإجراء تغيير على ملف برنامج نصي لـ WordPress يكسر شيئًا ما ، فيمكنك دائمًا إعادة تثبيت WordPress عبر لوحة تحكم المشرف. ابحث عن Updates
القسم وانقر على الرابط. ابحث عن زر يسمى Re-install Now
. سيؤدي هذا على الأقل إلى إصلاح ما تم كسره ولكن معظم التكوين الخاص بك يجب أن يظل على حاله.
إذا كانت قاعدة البيانات الخاصة بك في حالة جيدة ، لكنك قمت بتعديل ملف عن طريق الخطأ وكسر الأشياء لدرجة أنه لا يمكنك حتى الوصول إلى وحدة تحكم مسؤول WordPress ، فقم بما يلي:
rm /var/www/htdocs/wordpress
cp /home/user/wordpress.tgz /tmp
tar xvfz wordpress.tgz
mv wordpress /var/www/htdocs/.
chown -R www:www /var/www/htdocs/wordpress
cd /var/www/htdocs/wordpress
find . -type d -exec chmod 755 {} \;
find . -type f -exec chmod 644 {} \;
نظرة ثاقبة على 26 أسلوبًا لتحليل البيانات الضخمة: الجزء الأول
يعرف الكثير منكم أن Switch سيصدر في مارس 2017 وميزاته الجديدة. بالنسبة لأولئك الذين لا يعرفون ، قمنا بإعداد قائمة بالميزات التي تجعل "التبديل" "أداة لا غنى عنها".
هل تنتظر عمالقة التكنولوجيا للوفاء بوعودهم؟ تحقق من ما تبقى دون تسليم.
اقرأ المدونة لمعرفة الطبقات المختلفة في بنية البيانات الضخمة ووظائفها بأبسط طريقة.
اقرأ هذا لمعرفة مدى انتشار الذكاء الاصطناعي بين الشركات الصغيرة وكيف أنه يزيد من احتمالات نموها ومنح منافسيها القدرة على التفوق.
لقد أصبح حل CAPTCHA صعبًا جدًا على المستخدمين في السنوات القليلة الماضية. هل ستكون قادرة على أن تظل فعالة في اكتشاف البريد العشوائي والروبوتات في المستقبل القريب؟
مع تطور العلم بمعدل سريع ، واستلام الكثير من جهودنا ، تزداد أيضًا مخاطر تعريض أنفسنا إلى تفرد غير قابل للتفسير. اقرأ ، ماذا يمكن أن يعني التفرد بالنسبة لنا.
ما هو التطبيب عن بعد والرعاية الصحية عن بعد وأثره على الأجيال القادمة؟ هل هو مكان جيد أم لا في حالة الوباء؟ اقرأ المدونة لتجد طريقة عرض!
ربما سمعت أن المتسللين يكسبون الكثير من المال ، لكن هل تساءلت يومًا كيف يجنون هذا النوع من المال؟ دعنا نناقش.
أصدرت Apple مؤخرًا macOS Catalina 10.15.4 تحديثًا تكميليًا لإصلاح المشكلات ولكن يبدو أن التحديث يتسبب في المزيد من المشكلات التي تؤدي إلى إنشاء أجهزة macOS. قراءة هذه المادة لمعرفة المزيد