قم بتثبيت H2O Web Server على CentOS 7

H2O هو خادم HTTP من الجيل الجديد الذي يحتوي على تطبيقات HTTP / 2 رائعة ومميزة بالكامل لجميع خوادم الويب الحالية قيد الاستخدام. باستخدام H2O كخادم الويب الخاص بك ، يمكنك الاستفادة من الميزات الجديدة لمواصفات HTTP / 2 ، مثل تحسين وقت الاستجابة ، ودفع الخادم وتحديد الأولويات من جانب الخادم التي يمكنها الاستفادة من ميزات المتصفح الحديثة التي نادرًا ما يتم الحديث عنها.

في هذا البرنامج التعليمي المفصل ، سأوضح لك خطوة بخطوة كيفية تشغيل H2O على مثيل CentOS 7 x64.

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

  • مثيل خادم CentOS 7 x64.
  • A سودو المستخدم.
  • شهادة SSL (اختياري)

الخطوة 1: تحديث النظام

قم بتسجيل الدخول عبر SSH باستخدام بيانات الاعتماد الموجودة تحت المثيل الخاص بك وقم بتحديث النظام على النحو التالي.

sudo yum install epel-release -y
sudo yum clean all && sudo yum update -y

الخطوة 2: قم بتثبيت H2O

لتثبيت H2O على CentOS 7 ، يجب عليك إضافة مستودع Bintray RPM لتثبيت ثنائيات H2O سابقة الإعداد. استخدم محرر Nano لإنشاء الريبو المخصص.

sudo nano /etc/yum.repos.d/bintray-h2o-rpm.repo

انسخ والصق النص أدناه في ملف الريبو.

[bintray-h2o-rpm]
name=bintray-h2o-rpm
baseurl=https://dl.bintray.com/tatsushid/h2o-rpm/centos/$releasever/$basearch/
gpgcheck=0
repo_gpgcheck=0
enabled=1

بعد ذلك ، قم بتثبيت H2O.

sudo yum install h2o -y

الآن بعد أن تم تثبيت H2O ، ولكن قبل تمكين الخدمة وبدء تشغيلها ، يلزم تكوين صحيح ، ونحن بحاجة إلى إنشاء مستخدم ومجموعة محددة لتشغيل H2O. قم بإنشاء مجموعة ومستخدم ليعمل H2O تحت اسمه h2o.

sudo groupadd -g 101 h2o
sudo useradd -d /etc/h2o -g 101 -M -s /sbin/nologin -u 101 h2o

الخطوة 3: تكوين خادم الويب H2O

سوف الخطوات التالية إعطاء أمثلة من الاجهزة التكوين لمختلف unencrypted، encrypted، staticو dynamicالخادم الاجهزة. بالإضافة إلى مزيج من الأربعة.


إعادة التوجيه http://www.example.comإلى http://example.comتكوين (صفحات HTML الثابتة ، بدون PHP)

انتقل إلى /etc/h2o/الدليل.

cd /etc/h2o/

إعادة تسمية الافتراضي h2o.confل h2o.conf.original.

sudo mv h2o.conf h2o.conf.original

قم بإنشاء h2o.confملف جديد .

sudo nano h2o.conf

انسخ والصق النص أدناه في h2o.confالملف.

access-log: /var/log/h2o/access.log
compress: ON
error-log: /var/log/h2o/error.log
expires: 1 day
file.index: [ 'index.html' ]
hosts:
  "example.com:80":
    listen:
      port: 80
    paths:
      "/":
        file.dir: /var/www/example.com
  "www.example.com:80":
    listen:
      port: 80
    paths:
      "/":
        redirect:
          status: 301
          url: "http://example.com/"
pid-file: /var/run/h2o/h2o.pid
send-server-name: OFF
setenv:
  HTTP_PROXY: ""
user: h2o

قم بتمكين خادم H2O وبدء تشغيله.

sudo systemctl enable h2o
sudo systemctl start h2o

قم بإنشاء افتراضي index.htmlباستخدام القالب /var/www/htmlإلى خيار الدليل file.dirالمذكور أعلاه في /var/www/example.com.

sudo cp -var /var/www/html /var/www/example.com

الآن ، افتح المستعرض الخاص بك وأدخل اسم مجال الخادم ( example.comأو www.example.com) لمثيلك. هل تحصل على رسالة Unable to connectأو This site can’t be reached؟ لا يمنع إعداد جدار الحماية الافتراضي الخاص بـ CentOS الاتصالات الواردة إلى منفذ http. قم بتنفيذ ما يلي لفتحه.

sudo firewall-cmd --permanent --zone=public --add-service=http
sudo firewall-cmd --reload

قم بتحديث الصفحة في متصفحك ( F5) وستصلك هذه الرسالة.


Welcome to H2O - an optimized HTTP server

It works!

إعادة التوجيه http://example.comإلى http://www.example.comتكوين (صفحات HTML الثابتة ، بدون PHP)

انتقل إلى /etc/h2o/الدليل.

cd /etc/h2o/

إعادة تسمية الافتراضي h2o.confل h2o.conf.original.

sudo mv h2o.conf h2o.conf.original

قم بإنشاء h2o.confملف جديد .

sudo nano h2o.conf

انسخ والصق النص التالي في h2o.confالملف.

access-log: /var/log/h2o/access.log
compress: ON
error-log: /var/log/h2o/error.log
expires: 1 day
file.index: [ 'index.html' ]
hosts:
  "example.com:80":
    listen:
      port: 80
    paths:
      "/":
        redirect:
          status: 301
          url: "http://www.example.com/"
  "www.example.com:80":
    listen:
      port: 80
    paths:
      "/":
        file.dir: /var/www/www.example.com
pid-file: /var/run/h2o/h2o.pid
send-server-name: OFF
setenv:
  HTTP_PROXY: ""
user: h2o

قم بتمكين خادم H2O وبدء تشغيله.

sudo systemctl enable h2o
sudo systemctl start h2o

قم بإنشاء index.htmlملف افتراضي باستخدام القالب في /var/www/htmlخيار الدليل file.dirالمذكور أعلاه في /var/www/www.example.com.

sudo cp -var /var/www/html /var/www/www.example.com

الآن ، افتح المستعرض الخاص بك وأدخل اسم مجال الخادم ( example.comأو www.example.com) لمثيلك. هل تحصل على رسالة Unable to connectأو This site can’t be reached؟ لا يمنع إعداد جدار الحماية الافتراضي الخاص بـ CentOS الاتصالات الواردة إلى منفذ http. قم بما يلي لفتحه.

sudo firewall-cmd --permanent --zone=public --add-service=http
sudo firewall-cmd --reload

قم بتحديث الصفحة في متصفحك ( F5) وستصلك هذه الرسالة.


Welcome to H2O - an optimized HTTP server

It works!

إعادة توجيه http://www.example.comإلى http://example.comتكوين (صفحة ديناميكية ، PHP-FPM 5.6.x)

انتقل إلى /etc/h2o/الدليل.

cd /etc/h2o/

إعادة تسمية الافتراضي h2o.confل h2o.conf.original.

sudo mv h2o.conf h2o.conf.original

قم بإنشاء h2o.confملف جديد .

sudo nano h2o.conf

انسخ والصق النص التالي في h2o.confالملف.

access-log: /var/log/h2o/access.log
compress: ON
error-log: /var/log/h2o/error.log
expires: 1 day
file.index: [ 'index.php' ]
hosts:
  "example.com:80":
    listen:
      port: 80
    paths:
      "/":
        file.dir: /var/www/example.com
        redirect:
          internal: YES
          status: 307
          url: /index.php
  "www.example.com:80":
    listen:
      port: 80
    paths:
      "/":
        redirect:
          status: 301
          url: "http://example.com/"
file.custom-handler:
  extension: .php
  fastcgi.connect:
    port: /run/php-fpm-5.6.sock
    type: unix
pid-file: /var/run/h2o/h2o.pid
send-server-name: OFF
setenv:
  HTTP_PROXY: ""
user: h2o

لمعالجة PHP ، يجب تثبيت البرنامج الخفي PHP-FPM 5.6 وتكوينه. لتثبيت إصدار PHP-FPM أحدث من الإصدار الافتراضي 5.4.x ، يجب تثبيت REMI repo الذي يحتوي على إصدارات PHP 5.6.x و 7.0.x و 7.1.x. قم بتثبيت إصدار PHP 5.6.x.

sudo yum install http://rpms.remirepo.net/enterprise/remi-release-7.rpm -y
sudo yum install php56-php-fpm -y

انتقل إلى /opt/remi/php56/root/etc/الدليل.

cd /opt/remi/php56/root/etc/

إعادة تسمية الافتراضي php-fpm.confل php-fpm.conf.original.

sudo mv php-fpm.conf php-fpm.conf.original

قم بإنشاء php-fpm.confملف جديد .

sudo nano php-fpm.conf

انسخ والصق النص أدناه في php-fpm.confالملف.

include=/opt/remi/php56/root/etc/php-fpm.d/*.conf
[global]
daemonize = yes
emergency_restart_threshold = 2
emergency_restart_interval = 1m
error_log = /var/log/php-fpm/php-fpm-5.6-error.log
pid = /var/run/php-fpm-5.6.pid
process_control_timeout = 10s

إعادة تسمية www.confالملف الافتراضي في php-fpm.dالدليل.

sudo mv php-fpm.d/www.conf php-fpm.d/www.conf.original

قم بإنشاء www.confملف جديد .

sudo nano php-fpm.d/www.conf

انسخ والصق النص أدناه في www.confالملف. تغيير الخاص بك pm.max\_childrenلتتناسب مع عدد وحدات المعالجة المركزية وفقا لمثيل VPS الخاص بك.

[www]
group = h2o
listen = /var/run/php-fpm-5.6.sock
listen.backlog = 65536
listen.owner = h2o
listen.group = h2o
pm = static
pm.max_children = 2
pm.max_requests = 10240
user = h2o

إعادة تسمية php.iniالملف الافتراضي .

sudo mv php.ini php.ini.original

قم بإنشاء php.iniملف جديد .

sudo nano php.ini

انسخ والصق النص أدناه في الجديد php.ini file. تغيير memory\_limit، post\_max\_size، upload\_max\_filesizeو date.timezoneفقا المثال VPS الخاص بك.

[PHP]
allow_url_fopen = On
always_populate_raw_post_data = -1
display_errors = Off
error_reporting = E_ALL & ~E_DEPRECATED & ~E_STRICT
expose_php = Off
log_errors = On
memory_limit = 256M
output_buffering = 4096
post_max_size = 64M
register_argc_argv = Off
request_order = "GP"
upload_max_filesize = 64M
variables_order = "GPCS"
[Date]
date.timezone = America/New_York
[Session]
session.cache_limiter =
session.gc_divisor = 1000
session.hash_bits_per_character = 5
session.save_handler = files
session.save_path = "/opt/remi/php56/root/var/lib/php/session/"
url_rewriter.tags = "a=href,area=href,frame=src,input=src,form=fakeentry"

قم بتغيير ملكية المجموعة /opt/remi/php56/root/var/lib/php/session/للدليل من apacheالمجموعة إلى h2oالمجموعة.

sudo chown root.h2o /opt/remi/php56/root/var/lib/php/session/

قم بإنشاء دليل حيث توجد سجلات خادم PHP-FPM.

sudo mkdir /var/log/php-fpm/

قم بتمكين وبدء خادم PHP-FPM.

sudo systemctl enable php56-php-fpm 
sudo systemctl start php56-php-fpm

قم بتمكين خادم H2O وبدء تشغيله.

sudo systemctl enable h2o
sudo systemctl start h2o

قم بإنشاء دليل حيث index.phpسيكون الإعداد الافتراضي مدرجًا بواسطة خيار الدليل file.dirأعلاه /var/www/example.com.

sudo mkdir /var/www/example.com

قم بإنشاء افتراضي index.phpباستخدام phpinfoالأمر لاختبار PHP.

sudo nano /var/www/example.com/index.php

انسخ والصق النص أدناه في index.phpالملف الجديد .

<?php
phpinfo();
?>

الآن ، افتح المستعرض الخاص بك وأدخل اسم مجال الخادم ( example.comأو www.example.com) لمثيلك. هل تحصل على رسالة Unable to connectأو This site can’t be reached؟ لا يمنع إعداد جدار الحماية الافتراضي الخاص بـ CentOS الاتصالات الواردة إلى منفذ http. قم بما يلي لفتحه.

sudo firewall-cmd --permanent --zone=public --add-service=http
sudo firewall-cmd --reload

قم بتحديث الصفحة في متصفحك ( F5) وستحصل على صفحة معلومات PHP القياسية.


إعادة توجيه http://example.comإلى http://www.example.comتكوين (صفحة ديناميكية ، PHP-FPM 5.6.x)

انتقل إلى /etc/h2o/الدليل.

cd /etc/h2o/

إعادة تسمية الافتراضي h2o.confل h2o.conf.original.

sudo mv h2o.conf h2o.conf.original

قم بإنشاء h2o.confملف جديد .

sudo nano h2o.conf

انسخ والصق النص أدناه في h2o.confالملف.

access-log: /var/log/h2o/access.log
compress: ON
error-log: /var/log/h2o/error.log
expires: 1 day
file.index: [ 'index.php' ]
hosts:
  "example.com:80":
    listen:
      port: 80
    paths:
      "/":
        redirect:
          status: 301
          url: "http://www.example.com/"
  "www.example.com:80":
    listen:
      port: 80
    paths:
      "/":
        file.dir: /var/www/www.example.com
        redirect:
          internal: YES
          status: 307
          url: /index.php
file.custom-handler:
  extension: .php
  fastcgi.connect:
    port: /run/php-fpm-5.6.sock
    type: unix
pid-file: /var/run/h2o/h2o.pid
send-server-name: OFF
setenv:
  HTTP_PROXY: ""
user: h2o

لمعالجة PHP ، يجب تثبيت البرنامج الخفي PHP-FPM 5.6 وتكوينه. لتثبيت إصدار PHP-FPM أحدث من الإصدار الافتراضي 5.4.x ، يجب تثبيت REMI repo الذي يحتوي على إصدارات PHP 5.6.x و 7.0.x و 7.1.x. اكتب الأوامر التالية لتثبيت الإصدار 5.6.x من PHP.

sudo yum install http://rpms.remirepo.net/enterprise/remi-release-7.rpm -y
sudo yum install php56-php-fpm -y

انتقل إلى /opt/remi/php56/root/etc/الدليل.

cd /opt/remi/php56/root/etc/

إعادة تسمية الافتراضي php-fpm.confل php-fpm.conf.original.

sudo mv php-fpm.conf php-fpm.conf.original

قم بإنشاء php-fpm.confملف جديد .

sudo nano php-fpm.conf

انسخ والصق النص أدناه في php-fpm.confالملف.

include=/opt/remi/php56/root/etc/php-fpm.d/*.conf
[global]
daemonize = yes
emergency_restart_threshold = 2
emergency_restart_interval = 1m
error_log = /var/log/php-fpm/php-fpm-5.6-error.log
pid = /var/run/php-fpm-5.6.pid
process_control_timeout = 10s

إعادة تسمية www.confالملف الافتراضي في php-fpm.dالدليل.

sudo mv php-fpm.d/www.conf php-fpm.d/www.conf.original

قم بإنشاء www.confملف جديد .

sudo nano php-fpm.d/www.conf

انسخ والصق النص التالي في www.confالملف. تغيير الخاص بك pm.max\_childrenلتتناسب مع عدد وحدات المعالجة المركزية وفقا لمثيل VPS الخاص بك.

[www]
group = h2o
listen = /var/run/php-fpm-5.6.sock
listen.backlog = 65536
listen.owner = h2o
listen.group = h2o
pm = static
pm.max_children = 2
pm.max_requests = 10240
user = h2o

إعادة تسمية php.iniالملف الافتراضي .

sudo mv php.ini php.ini.original

قم بإنشاء php.iniملف جديد .

sudo nano php.ini

انسخ والصق النص التالي أدناه في الجديد php.ini file. تغيير memory\_limit، post\_max\_size، upload\_max\_filesizeو date.timezoneفقا المثال VPS الخاص بك.

[PHP]
allow_url_fopen = On
always_populate_raw_post_data = -1
display_errors = Off
error_reporting = E_ALL & ~E_DEPRECATED & ~E_STRICT
expose_php = Off
log_errors = On
memory_limit = 256M
output_buffering = 4096
post_max_size = 64M
register_argc_argv = Off
request_order = "GP"
upload_max_filesize = 64M
variables_order = "GPCS"
[Date]
date.timezone = America/New_York
[Session]
session.cache_limiter =
session.gc_divisor = 1000
session.hash_bits_per_character = 5
session.save_handler = files
session.save_path = "/opt/remi/php56/root/var/lib/php/session/"
url_rewriter.tags = "a=href,area=href,frame=src,input=src,form=fakeentry"

قم بتغيير ملكية المجموعة /opt/remi/php56/root/var/lib/php/session/للدليل من apacheالمجموعة إلى h2oالمجموعة.

sudo chown root.h2o /opt/remi/php56/root/var/lib/php/session/

قم بإنشاء دليل حيث توجد سجلات خادم PHP-FPM.

sudo mkdir /var/log/php-fpm/

قم بتمكين وبدء خادم PHP-FPM.

sudo systemctl enable php56-php-fpm 
sudo systemctl start php56-php-fpm

قم بتمكين خادم H2O وبدء تشغيله.

sudo systemctl enable h2o
sudo systemctl start h2o

قم بإنشاء دليل حيث index.phpسيكون الإعداد الافتراضي مدرجًا بواسطة خيار الدليل file.dirأعلاه /var/www/www.example.com.

sudo mkdir /var/www/www.example.com

قم بإنشاء افتراضي index.phpباستخدام phpinfoالأمر لاختبار PHP.

sudo nano /var/www/www.example.com/index.php

انسخ والصق النص أدناه في index.phpالملف الجديد .

<?php
phpinfo();
?>

الآن ، افتح المستعرض الخاص بك وأدخل اسم مجال الخادم ( example.comأو www.example.com) لمثيلك. هل تحصل على رسالة Unable to connectأو This site can’t be reached؟ لا يمنع إعداد جدار الحماية الافتراضي الخاص بـ CentOS الاتصالات الواردة إلى منفذ http. قم بما يلي لفتحه.

sudo firewall-cmd --permanent --zone=public --add-service=http
sudo firewall-cmd --reload

قم بتحديث الصفحة في متصفحك ( F5) وستحصل على صفحة معلومات PHP القياسية.


إعادة توجيه http://www.example.comإلى http://example.comتكوين (صفحة ديناميكية ، PHP-FPM 7.1.x)

انتقل إلى /etc/h2o/الدليل.

cd /etc/h2o/

إعادة تسمية الافتراضي h2o.confل h2o.conf.original.

sudo mv h2o.conf h2o.conf.original

قم بإنشاء h2o.confملف جديد .

sudo nano h2o.conf

انسخ والصق النص أدناه في h2o.confالملف.

access-log: /var/log/h2o/access.log
compress: ON
error-log: /var/log/h2o/error.log
expires: 1 day
file.index: [ 'index.php' ]
hosts:
  "example.com:80":
    listen:
      port: 80
    paths:
      "/":
        file.dir: /var/www/example.com
        redirect:
          internal: YES
          status: 307
          url: /index.php
  "www.example.com:80":
    listen:
      port: 80
    paths:
      "/":
        redirect:
          status: 301
          url: "http://example.com/"
file.custom-handler:
  extension: .php
  fastcgi.connect:
    port: /run/php-fpm-7.1.sock
    type: unix
pid-file: /var/run/h2o/h2o.pid
send-server-name: OFF
setenv:
  HTTP_PROXY: ""
user: h2o

In order to process PHP, the PHP-FPM 7.1 daemon must be installed and configured. In order to install a version of PHP-FPM newer than the default 5.4.x, the REMI repo must be installed which contains PHP versions 5.6.x, 7.0.x and 7.1.x. Type the following commands below to install PHP version 7.1.x.

sudo yum install http://rpms.remirepo.net/enterprise/remi-release-7.rpm -y
sudo yum install php71-php-fpm -y

Navigate to the /etc/opt/remi/php71/ directory.

cd /etc/opt/remi/php71/

Rename the default php-fpm.conf to php-fpm.conf.original.

sudo mv php-fpm.conf php-fpm.conf.original

Create a new php-fpm.conf file.

sudo nano php-fpm.conf

Copy and paste the following text into the php-fpm.conf file.

include=/etc/opt/remi/php71/php-fpm.d/*.conf
[global]
daemonize = yes
emergency_restart_threshold = 2
emergency_restart_interval = 1m
error_log = /var/log/php-fpm/php-fpm-7.1-error.log
pid = /var/run/php-fpm-7.1.pid
process_control_timeout = 10s

Rename the default www.conf file in the php-fpm.d directory.

sudo mv php-fpm.d/www.conf php-fpm.d/www.conf.original

Create a new www.conf file.

sudo nano php-fpm.d/www.conf

Copy and paste the text below into the www.conf file. Change your pm.max\_children to match the number of CPUs in accordance with your VPS instance.

[www]
group = h2o
listen = /var/run/php-fpm-7.1.sock
listen.backlog = 65536
listen.owner = h2o
listen.group = h2o
pm = static
pm.max_children = 2
pm.max_requests = 10240
user = h2o

Rename the default php.ini file.

sudo mv php.ini php.ini.original

Create a new php.ini file.

sudo nano php.ini

انسخ والصق النص أدناه في الجديد php.ini file. تغيير memory\_limit، post\_max\_size، upload\_max\_filesizeو date.timezoneفقا المثال VPS الخاص بك.

[PHP]
allow_url_fopen = On
always_populate_raw_post_data = -1
display_errors = Off
error_reporting = E_ALL & ~E_DEPRECATED & ~E_STRICT
expose_php = Off
log_errors = On
memory_limit = 256M
output_buffering = 4096
post_max_size = 64M
register_argc_argv = Off
request_order = "GP"
upload_max_filesize = 64M
variables_order = "GPCS"
[Date]
date.timezone = America/New_York
[Session]
session.cache_limiter =
session.gc_divisor = 1000
session.hash_bits_per_character = 5
session.save_handler = files
session.save_path = "/var/opt/remi/php71/lib/php/session/"
url_rewriter.tags = "a=href,area=href,frame=src,input=src,form=fakeentry"

قم بتغيير ملكية المجموعة /var/opt/remi/php71/lib/php/session/للدليل من apacheالمجموعة إلى h2oالمجموعة.

sudo chown root.h2o /var/opt/remi/php71/lib/php/session/

قم بإنشاء دليل حيث توجد سجلات خادم PHP-FPM.

sudo mkdir /var/log/php-fpm/

قم بتمكين وبدء خادم PHP-FPM.

sudo systemctl enable php71-php-fpm 
sudo systemctl start php71-php-fpm

قم بتمكين خادم H2O وبدء تشغيله.

sudo systemctl enable h2o
sudo systemctl start h2o

قم بإنشاء دليل حيث index.phpسيكون الإعداد الافتراضي مدرجًا بواسطة خيار الدليل file.dirأعلاه /var/www/example.com.

sudo mkdir /var/www/example.com

قم بإنشاء افتراضي index.phpباستخدام phpinfoالأمر لاختبار PHP.

sudo nano /var/www/example.com/index.php

انسخ والصق النص أدناه في index.phpالملف الجديد .

<?php
phpinfo();
?>

الآن ، افتح المستعرض الخاص بك وأدخل اسم مجال الخادم ( example.comأو www.example.com) لمثيلك. هل تحصل على رسالة Unable to connectأو This site can’t be reached؟ لا يمنع إعداد جدار الحماية الافتراضي الخاص بـ CentOS الاتصالات الواردة إلى منفذ http. قم بما يلي لفتحه.

sudo firewall-cmd --permanent --zone=public --add-service=http
sudo firewall-cmd --reload

قم بتحديث الصفحة في متصفحك ( F5) وستحصل على صفحة معلومات PHP القياسية.


إعادة توجيه http://example.comإلى http://www.example.comتكوين (صفحة ديناميكية ، PHP-FPM 7.1.x)

انتقل إلى /etc/h2o/الدليل.

cd /etc/h2o/

إعادة تسمية الافتراضي h2o.confل h2o.conf.original.

sudo mv h2o.conf h2o.conf.original

قم بإنشاء h2o.confملف جديد .

sudo nano h2o.conf

انسخ والصق النص أدناه في h2o.confالملف.

access-log: /var/log/h2o/access.log
compress: ON
error-log: /var/log/h2o/error.log
expires: 1 day
file.index: [ 'index.php' ]
hosts:
  "example.com:80":
    listen:
      port: 80
    paths:
      "/":
        redirect:
          status: 301
          url: "http://www.example.com/"
  "www.example.com:80":
    listen:
      port: 80
    paths:
      "/":
        file.dir: /var/www/www.example.com
        redirect:
          internal: YES
          status: 307
          url: /index.php
file.custom-handler:
  extension: .php
  fastcgi.connect:
    port: /run/php-fpm-7.1.sock
    type: unix
pid-file: /var/run/h2o/h2o.pid
send-server-name: OFF
setenv:
  HTTP_PROXY: ""
user: h2o

In order to process PHP, the PHP-FPM 7.1 daemon must be installed and configured. In order to install a version of PHP-FPM newer than the default 5.4.x, the REMI repo must be installed which contains PHP versions 5.6.x, 7.0.x and 7.1.x. Type the following commands below to install PHP version 7.1.x.

sudo yum install http://rpms.remirepo.net/enterprise/remi-release-7.rpm -y
sudo yum install php71-php-fpm -y

Navigate to the /etc/opt/remi/php71/ directory.

cd /etc/opt/remi/php71/

Rename the default php-fpm.conf to php-fpm.conf.original.

sudo mv php-fpm.conf php-fpm.conf.original

Create a new php-fpm.conf file.

sudo nano php-fpm.conf

Copy and paste the text below into the php-fpm.conf file.

include=/etc/opt/remi/php71/php-fpm.d/*.conf
[global]
daemonize = yes
emergency_restart_threshold = 2
emergency_restart_interval = 1m
error_log = /var/log/php-fpm/php-fpm-7.1-error.log
pid = /var/run/php-fpm-7.1.pid
process_control_timeout = 10s

Rename the default www.conf file in the php-fpm.d directory.

sudo mv php-fpm.d/www.conf php-fpm.d/www.conf.original

Create a new www.conf file.

sudo nano php-fpm.d/www.conf

Copy and paste the following text into the www.conf file. Change your pm.max\_children to match the number of CPUs in accordance with your VPS instance.

[www]
group = h2o
listen = /var/run/php-fpm-7.1.sock
listen.backlog = 65536
listen.owner = h2o
listen.group = h2o
pm = static
pm.max_children = 2
pm.max_requests = 10240
user = h2o

Rename the default php.ini file.

sudo mv php.ini php.ini.original

Create a new php.ini file.

sudo nano php.ini

انسخ والصق النص التالي في الجديد php.ini file. تغيير memory\_limit، post\_max\_size، upload\_max\_filesizeو date.timezoneفقا المثال VPS الخاص بك.

[PHP]
allow_url_fopen = On
always_populate_raw_post_data = -1
display_errors = Off
error_reporting = E_ALL & ~E_DEPRECATED & ~E_STRICT
expose_php = Off
log_errors = On
memory_limit = 256M
output_buffering = 4096
post_max_size = 64M
register_argc_argv = Off
request_order = "GP"
upload_max_filesize = 64M
variables_order = "GPCS"
[Date]
date.timezone = America/New_York
[Session]
session.cache_limiter =
session.gc_divisor = 1000
session.hash_bits_per_character = 5
session.save_handler = files
session.save_path = "/var/opt/remi/php71/lib/php/session"
url_rewriter.tags = "a=href,area=href,frame=src,input=src,form=fakeentry"

قم بتغيير ملكية المجموعة /var/opt/remi/php71/lib/php/session/للدليل من apacheالمجموعة إلى h2oالمجموعة.

sudo chown root.h2o /var/opt/remi/php71/lib/php/session/

قم بإنشاء دليل حيث توجد سجلات خادم PHP-FPM.

sudo mkdir /var/log/php-fpm/

قم بتمكين وبدء خادم PHP-FPM.

sudo systemctl enable php71-php-fpm 
sudo systemctl start php71-php-fpm

قم بتمكين خادم H2O وبدء تشغيله.

sudo systemctl enable h2o
sudo systemctl start h2o

قم بإنشاء دليل حيث index.phpسيكون الإعداد الافتراضي مدرجًا بواسطة خيار الدليل file.dirأعلاه /var/www/example.com.

sudo mkdir /var/www/www.example.com

قم بإنشاء افتراضي index.phpباستخدام phpinfoالأمر لاختبار PHP.

sudo nano /var/www/www.example.com/index.php

انسخ والصق النص أدناه في index.phpالملف الجديد .

<?php
phpinfo();
?>

الآن ، افتح المستعرض الخاص بك وأدخل اسم مجال الخادم ( example.comأو www.example.com) لمثيلك. هل تحصل على رسالة Unable to connectأو This site can’t be reached؟ لا يمنع إعداد جدار الحماية الافتراضي الخاص بـ CentOS الاتصالات الواردة إلى منفذ http. قم بما يلي لفتحه.

sudo firewall-cmd --permanent --zone=public --add-service=http
sudo firewall-cmd --reload

قم بتحديث الصفحة في متصفحك ( F5) وستحصل على صفحة معلومات PHP القياسية.


إعادة توجيه http://example.com، http://www.example.comو https://www.example.comإلى https://example.com(ثابت صفحات HTML، لا PHP) تكوين

انتقل إلى /etc/h2o/الدليل.

cd /etc/h2o/

إعادة تسمية الافتراضي h2o.confل h2o.conf.original.

sudo mv h2o.conf h2o.conf.original

قم بإنشاء h2o.confملف جديد .

sudo nano h2o.conf

انسخ والصق النص أدناه في h2o.confالملف.

access-log: /var/log/h2o/access.log
compress: ON
error-log: /var/log/h2o/error.log
expires: 1 day
file.index: [ 'index.html' ]
hosts:
  "example.com:80":
    listen:
      port: 80
    paths:
      "/":
        redirect:
          status: 301
          url: "https://example.com/"
  "www.example.com:80":
    listen:
      port: 80
    paths:
      "/":
        redirect:
          status: 301
          url: "https://www.example.com/"
  "example.com:443":
    listen:
      port: 443
      ssl:
        <<: !file /etc/h2o/conf.d/ssl.conf
        certificate-file: /location/of/certificate/file/fullchain.ext
        key-file: /location/of/private/key/file/privkey.ext
    paths:
      "/":
        file.dir: /var/www/example.com
        header.add: "strict-transport-security: max-age=31536000; includeSubDomains; preload"
  "www.example.com:443":
    listen:
      port: 443
      ssl:
        <<: !file /etc/h2o/conf.d/ssl.conf
        certificate-file: /location/of/certificate/file/fullchain.ext
        key-file: /location/of/private/key/file/privkey.ext
    paths:
      "/":
        header.add: "strict-transport-security: max-age=31536000; includeSubDomains; preload"
        redirect:
          status: 301
          url: "https://example.com/"
pid-file: /var/run/h2o/h2o.pid
send-server-name: OFF
setenv:
  HTTP_PROXY: ""
user: h2o

قم بإنشاء دليل مخصص لتخزين خيارات SSL الافتراضية لجميع مواقع الويب التي تستخدم SSL.

sudo mkdir conf.d

قم بإنشاء ssl.confملف جديد .

sudo nano conf.d/ssl.conf

انسخ والصق النص التالي في ssl.confالملف.

cipher-preference: server
cipher-suite: ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA256
dh-file: /etc/ssl/h2o/dhparam_2048.pem

قم بعمل دليل لتخزين dhparam_2048.pemالملف الذي سيتم تجديده يوميًا عبر cronjob.

sudo mkdir /etc/ssl/h2o/

قم بإنشاء regenerate_dhparamملف جديد .

sudo nano /etc/cron.daily/regenerate_dhparam

انسخ والصق النص التالي في regenerate_dhparamالملف.

#!/bin/bash
cd /etc/ssl/h2o
umask 022
for length in 2048
do
openssl dhparam -out dhparam_$length.tmp $length && mv dhparam_$length.tmp dhparam_$length.pem
chmod 444 dhparam_$length.pem
done

جعل ملف bash الذي تم إنشاؤه للتو قابل للتنفيذ.

sudo chmod +x /etc/cron.daily/regenerate_dhparam

قم بتنفيذ سكربت باش لأول مرة حيث لن يبدأ H2O بشكل صحيح إذا لم يتم إنشاؤه. سيستغرق ذلك حوالي دقيقة أو دقيقتين ليتم إنشاؤه عند التشغيل لأول مرة.

sudo /etc/cron.daily/regenerate_dhparam

قم بتمكين خادم H2O وبدء تشغيله.

sudo systemctl enable h2o
sudo systemctl start h2o

قم بإنشاء افتراضي index.htmlباستخدام القالب /var/www/htmlإلى خيار الدليل file.dirالمذكور أعلاه في /var/www/example.com.

sudo cp -var /var/www/html /var/www/example.com

الآن ، افتح المستعرض الخاص بك وأدخل اسم مجال الخادم ( example.comأو www.example.com) لمثيلك. هل تحصل على رسالة Unable to connectأو This site can’t be reached؟ لا يمنع إعداد جدار الحماية الافتراضي الخاص بـ CentOS الاتصالات الواردة إلى منفذ http. قم بما يلي لفتحه.

sudo firewall-cmd --permanent --zone=public --add-service=http
sudo firewall-cmd --permanent --zone=public --add-service=https
sudo firewall-cmd --reload

قم بتحديث الصفحة في متصفحك ( F5) وستصلك هذه الرسالة.


Welcome to H2O - an optimized HTTP server

It works!

إعادة توجيه http://example.com، http://www.example.comو https://example.comإلى https://www.example.com(ثابت صفحات HTML، لا PHP) تكوين

انتقل إلى /etc/h2o/الدليل.

cd /etc/h2o/

إعادة تسمية الافتراضي h2o.confل h2o.conf.original.

sudo mv h2o.conf h2o.conf.original

قم بإنشاء h2o.confملف جديد .

sudo nano h2o.conf

انسخ والصق النص أدناه في h2o.confالملف.

access-log: /var/log/h2o/access.log
compress: ON
error-log: /var/log/h2o/error.log
expires: 1 day
file.index: [ 'index.html' ]
hosts:
  "example.com:80":
    listen:
      port: 80
    paths:
      "/":
        redirect:
          status: 301
          url: "https://example.com/"
  "www.example.com:80":
    listen:
      port: 80
    paths:
      "/":
        redirect:
          status: 301
          url: "https://www.example.com/"
  "example.com:443":
    listen:
      port: 443
      ssl:
        <<: !file /etc/h2o/conf.d/ssl.conf
        certificate-file: /location/of/certificate/file/fullchain.ext
        key-file: /location/of/private/key/file/privkey.ext
    paths:
      "/":
        header.add: "strict-transport-security: max-age=31536000; includeSubDomains; preload"
        redirect:
          status: 301
          url: "https://www.example.com/"
  "www.example.com:443":
    listen:
      port: 443
      ssl:
        <<: !file /etc/h2o/conf.d/ssl.conf
        certificate-file: /location/of/certificate/file/fullchain.ext
        key-file: /location/of/private/key/file/privkey.ext
    paths:
      "/":
        file.dir: /var/www/www.example.com
        header.add: "strict-transport-security: max-age=31536000; includeSubDomains; preload"
pid-file: /var/run/h2o/h2o.pid
send-server-name: OFF
setenv:
  HTTP_PROXY: ""
user: h2o

قم بإنشاء دليل مخصص لتخزين خيارات SSL الافتراضية لجميع مواقع الويب التي تستخدم SSL.

sudo mkdir conf.d

قم بإنشاء ssl.confملف جديد .

sudo nano conf.d/ssl.conf

Copy and paste the following text into the ssl.conf file.

cipher-preference: server
cipher-suite: ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA256
dh-file: /etc/ssl/h2o/dhparam_2048.pem

Make a directory to store the dhparam_2048.pem file that will be regenerated daily via a cronjob.

sudo mkdir /etc/ssl/h2o/

Create a new regenerate_dhparam file.

sudo nano /etc/cron.daily/regenerate_dhparam

Copy and paste the following text inside of the regenerate_dhparam file.

#!/bin/bash
cd /etc/ssl/h2o
umask 022
for length in 2048
do
openssl dhparam -out dhparam_$length.tmp $length && mv dhparam_$length.tmp dhparam_$length.pem
chmod 444 dhparam_$length.pem
done

Make the bash file just created executable.

sudo chmod +x /etc/cron.daily/regenerate_dhparam

Execute the bash script for a first run as H2O won't start properly if it's not generated. This will take about a minute or two to generate on first run.

sudo /etc/cron.daily/regenerate_dhparam

Enable and start the H2O server.

sudo systemctl enable h2o
sudo systemctl start h2o

Create a default index.html using the template in /var/www/html to the directory option file.dir listed above in /var/www/www.example.com.

sudo cp -var /var/www/html /var/www/www.example.com

الآن ، افتح المستعرض الخاص بك وأدخل اسم مجال الخادم ( example.comأو www.example.com) لمثيلك. هل تحصل على رسالة Unable to connectأو This site can’t be reached؟ لا يمنع إعداد جدار الحماية الافتراضي الخاص بـ CentOS الاتصالات الواردة إلى منفذ http. قم بما يلي لفتحه.

sudo firewall-cmd --permanent --zone=public --add-service=http
sudo firewall-cmd --permanent --zone=public --add-service=https
sudo firewall-cmd --reload

قم بتحديث الصفحة في متصفحك ( F5) وستصلك هذه الرسالة.


Welcome to H2O - an optimized HTTP server

It works!

إعادة توجيه http://example.com، http://www.example.comو https://www.example.comإلى https://example.com(الحيوي الصفحة، PHP-FPM 5.6.x) تكوين

انتقل إلى /etc/h2o/الدليل.

cd /etc/h2o/

إعادة تسمية الافتراضي h2o.confل h2o.conf.original.

sudo mv h2o.conf h2o.conf.original

قم بإنشاء h2o.confملف جديد .

sudo nano h2o.conf

انسخ والصق النص أدناه في h2o.confالملف.

access-log: /var/log/h2o/access.log
compress: ON
error-log: /var/log/h2o/error.log
expires: 1 day
file.index: [ 'index.php' ]
hosts:
  "example.com:80":
    listen:
      port: 80
    paths:
      "/":
        redirect:
          status: 301
          url: "https://example.com/"
  "www.example.com:80":
    listen:
      port: 80
    paths:
      "/":
        redirect:
          status: 301
          url: "https://www.example.com/"
  "example.com:443":
    listen:
      port: 443
      ssl:
        <<: !file /etc/h2o/conf.d/ssl.conf
        certificate-file: /location/of/certificate/file/fullchain.ext
        key-file: /location/of/private/key/file/privkey.ext
    paths:
      "/":
        file.dir: /var/www/example.com
        header.add: "strict-transport-security: max-age=31536000; includeSubDomains; preload"
        redirect:
          internal: YES
          status: 307
          url: /index.php
  "www.example.com:443":
    listen:
      port: 443
      ssl:
        <<: !file /etc/h2o/conf.d/ssl.conf
        certificate-file: /location/of/certificate/file/fullchain.ext
        key-file: /location/of/private/key/file/privkey.ext
    paths:
      "/":
        header.add: "strict-transport-security: max-age=31536000; includeSubDomains; preload"
        redirect:
          status: 301
          url: "https://example.com/"
file.custom-handler:
  extension: .php
  fastcgi.connect:
    port: /run/php-fpm-5.6.sock
    type: unix
pid-file: /var/run/h2o/h2o.pid
send-server-name: OFF
setenv:
  HTTP_PROXY: ""
user: h2o

قم بإنشاء دليل مخصص لتخزين خيارات SSL الافتراضية لجميع مواقع الويب التي تستخدم SSL.

sudo mkdir conf.d

قم بإنشاء ssl.confملف جديد .

sudo nano conf.d/ssl.conf

انسخ والصق النص أدناه في ssl.confالملف.

cipher-preference: server
cipher-suite: ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA256
dh-file: /etc/ssl/h2o/dhparam_2048.pem

قم بعمل دليل لتخزين dhparam_2048.pemالملف الذي سيتم تجديده يوميًا عبر cronjob.

sudo mkdir /etc/ssl/h2o/

قم بإنشاء regenerate_dhparamملف جديد .

sudo nano /etc/cron.daily/regenerate_dhparam

انسخ والصق النص التالي داخل regenerate_dhparamالملف.

#!/bin/bash
cd /etc/ssl/h2o
umask 022
for length in 2048
do
openssl dhparam -out dhparam_$length.tmp $length && mv dhparam_$length.tmp dhparam_$length.pem
chmod 444 dhparam_$length.pem
done

جعل ملف bash الذي تم إنشاؤه للتو قابل للتنفيذ.

sudo chmod +x /etc/cron.daily/regenerate_dhparam

قم بتنفيذ سكربت باش لأول مرة حيث لن يبدأ H2O بشكل صحيح إذا لم يتم إنشاؤه. سيستغرق ذلك حوالي دقيقة أو دقيقتين ليتم إنشاؤه عند التشغيل لأول مرة.

sudo /etc/cron.daily/regenerate_dhparam

لمعالجة PHP ، يجب تثبيت البرنامج الخفي PHP-FPM 5.6 وتكوينه. لتثبيت إصدار PHP-FPM أحدث من الإصدار الافتراضي 5.4.x ، يجب تثبيت REMI repo الذي يحتوي على إصدارات PHP 5.6.x و 7.0.x و 7.1.x. اكتب الأوامر التالية لتثبيت الإصدار 5.6.x من PHP.

sudo yum install http://rpms.remirepo.net/enterprise/remi-release-7.rpm -y
sudo yum install php56-php-fpm -y

انتقل إلى /opt/remi/php56/root/etc/الدليل.

cd /opt/remi/php56/root/etc/

إعادة تسمية الافتراضي php-fpm.confل php-fpm.conf.original.

sudo mv php-fpm.conf php-fpm.conf.original

قم بإنشاء php-fpm.confملف جديد .

sudo nano php-fpm.conf

Copy and paste the following text into the php-fpm.conf file.

include=/opt/remi/php56/root/etc/php-fpm.d/*.conf
[global]
daemonize = yes
emergency_restart_threshold = 2
emergency_restart_interval = 1m
error_log = /var/log/php-fpm/php-fpm-5.6-error.log
pid = /var/run/php-fpm-5.6.pid
process_control_timeout = 10s

Rename the default www.conf file in the php-fpm.d directory.

sudo mv php-fpm.d/www.conf php-fpm.d/www.conf.original

Create a new www.conf file.

sudo nano php-fpm.d/www.conf

Copy and paste the text below into the www.conf file. Change your pm.max\_children to match the number of CPUs in accordance with your VPS instance.

[www]
group = h2o
listen = /var/run/php-fpm-5.6.sock
listen.backlog = 65536
listen.owner = h2o
listen.group = h2o
pm = static
pm.max_children = 2
pm.max_requests = 10240
user = h2o

Rename the default php.ini file.

sudo mv php.ini php.ini.original

Create a new php.ini file.

sudo nano php.ini

Copy and paste the text below into the new php.ini file. Change the memory\_limit, post\_max\_size, upload\_max\_filesize and date.timezone in accordance with your VPS instance.

[PHP]
allow_url_fopen = On
always_populate_raw_post_data = -1
display_errors = Off
error_reporting = E_ALL & ~E_DEPRECATED & ~E_STRICT
expose_php = Off
log_errors = On
memory_limit = 256M
output_buffering = 4096
post_max_size = 64M
register_argc_argv = Off
request_order = "GP"
upload_max_filesize = 64M
variables_order = "GPCS"
[Date]
date.timezone = America/New_York
[Session]
session.cache_limiter =
session.gc_divisor = 1000
session.hash_bits_per_character = 5
session.save_handler = files
session.save_path = "/opt/remi/php56/root/var/lib/php/session/"
url_rewriter.tags = "a=href,area=href,frame=src,input=src,form=fakeentry"

Change the group ownership for the /opt/remi/php56/root/var/lib/php/session/ directory from the apache group to the h2o group.

sudo chown root.h2o /opt/remi/php56/root/var/lib/php/session/

Create a directory where the PHP-FPM server logs will reside.

sudo mkdir /var/log/php-fpm/

Enable and start the PHP-FPM server.

sudo systemctl enable php56-php-fpm 
sudo systemctl start php56-php-fpm

Enable and start the H2O server.

sudo systemctl enable h2o
sudo systemctl start h2o

Create a directory where the default index.php will reside listed by the directory option file.dir above in /var/www/example.com.

sudo mkdir /var/www/example.com

Create a default index.php using the phpinfo command to test PHP.

sudo nano /var/www/example.com/index.php

Copy and paste the text below in the new index.php file.

<?php
phpinfo();
?>

Now, open your browser and enter the server domain name (example.com or www.example.com) for your instance. Are you getting an Unable to connect or a This site can’t be reached message? CentOS's default firewall setting disallows incoming connections to the http port. Do the following to open it.

sudo firewall-cmd --permanent --zone=public --add-service=http
sudo firewall-cmd --permanent --zone=public --add-service=https
sudo firewall-cmd --reload

Refresh the page in your browser (F5) and you will get the standard PHP info page.


Redirect http://example.com, http://www.example.com, and https://example.com to https://www.example.com (Dynamic Page, PHP-FPM 5.6.x) Configuration

Navigate to the /etc/h2o/ directory.

cd /etc/h2o/

إعادة تسمية الافتراضي h2o.confل h2o.conf.original.

sudo mv h2o.conf h2o.conf.original

قم بإنشاء h2o.confملف جديد .

sudo nano h2o.conf

انسخ والصق النص أدناه في h2o.confالملف.

access-log: /var/log/h2o/access.log
compress: ON
error-log: /var/log/h2o/error.log
expires: 1 day
file.index: [ 'index.php' ]
hosts:
  "example.com:80":
    listen:
      port: 80
    paths:
      "/":
        redirect:
          status: 301
          url: "https://example.com/"
  "www.example.com:80":
    listen:
      port: 80
    paths:
      "/":
        redirect:
          status: 301
          url: "https://www.example.com/"
  "example.com:443":
    listen:
      port: 443
      ssl:
        <<: !file /etc/h2o/conf.d/ssl.conf
        certificate-file: /location/of/certificate/file/fullchain.ext
        key-file: /location/of/private/key/file/privkey.ext
    paths:
      "/":
        header.add: "strict-transport-security: max-age=31536000; includeSubDomains; preload"
        redirect:
          status: 301
          url: "https://www.example.com/"
  "www.example.com:443":
    listen:
      port: 443
      ssl:
        <<: !file /etc/h2o/conf.d/ssl.conf
        certificate-file: /location/of/certificate/file/fullchain.ext
        key-file: /location/of/private/key/file/privkey.ext
    paths:
      "/":
        file.dir: /var/www/www.example.com
        header.add: "strict-transport-security: max-age=31536000; includeSubDomains; preload"
        redirect:
          internal: YES
          status: 307
          url: /index.php
file.custom-handler:
  extension: .php
  fastcgi.connect:
    port: /run/php-fpm-5.6.sock
    type: unix
pid-file: /var/run/h2o/h2o.pid
send-server-name: OFF
setenv:
  HTTP_PROXY: ""
user: h2o

قم بإنشاء دليل مخصص لتخزين خيارات SSL الافتراضية لجميع مواقع الويب التي تستخدم SSL.

sudo mkdir conf.d

قم بإنشاء ssl.confملف جديد .

sudo nano conf.d/ssl.conf

انسخ والصق النص أدناه في ssl.confالملف.

cipher-preference: server
cipher-suite: ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA256
dh-file: /etc/ssl/h2o/dhparam_2048.pem

قم بعمل دليل لتخزين dhparam_2048.pemالملف الذي سيتم تجديده يوميًا عبر cronjob.

sudo mkdir /etc/ssl/h2o/

قم بإنشاء regenerate_dhparamملف جديد .

sudo nano /etc/cron.daily/regenerate_dhparam

انسخ والصق النص التالي داخل regenerate_dhparamالملف.

#!/bin/bash
cd /etc/ssl/h2o
umask 022
for length in 2048
do
openssl dhparam -out dhparam_$length.tmp $length && mv dhparam_$length.tmp dhparam_$length.pem
chmod 444 dhparam_$length.pem
done

جعل ملف bash الذي تم إنشاؤه للتو قابل للتنفيذ.

sudo chmod +x /etc/cron.daily/regenerate_dhparam

قم بتنفيذ سكربت باش لأول مرة حيث لن يبدأ H2O بشكل صحيح إذا لم يتم إنشاؤه. سيستغرق ذلك حوالي دقيقة أو دقيقتين ليتم إنشاؤه عند التشغيل لأول مرة.

sudo /etc/cron.daily/regenerate_dhparam

لمعالجة PHP ، يجب تثبيت البرنامج الخفي PHP-FPM 5.6 وتكوينه. لتثبيت إصدار PHP-FPM أحدث من الإصدار الافتراضي 5.4.x ، يجب تثبيت REMI repo الذي يحتوي على إصدارات PHP 5.6.x و 7.0.x و 7.1.x. اكتب الأوامر التالية لتثبيت الإصدار 5.6.x من PHP.

sudo yum install http://rpms.remirepo.net/enterprise/remi-release-7.rpm -y
sudo yum install php56-php-fpm -y

انتقل إلى /opt/remi/php56/root/etc/الدليل.

cd /opt/remi/php56/root/etc/

إعادة تسمية الافتراضي php-fpm.confل php-fpm.conf.original.

sudo mv php-fpm.conf php-fpm.conf.original

قم بإنشاء php-fpm.confملف جديد .

sudo nano php-fpm.conf

انسخ والصق النص أدناه في php-fpm.confالملف.

include=/opt/remi/php56/root/etc/php-fpm.d/*.conf
[global]
daemonize = yes
emergency_restart_threshold = 2
emergency_restart_interval = 1m
error_log = /var/log/php-fpm/php-fpm-5.6-error.log
pid = /var/run/php-fpm-5.6.pid
process_control_timeout = 10s

إعادة تسمية www.confالملف الافتراضي في php-fpm.dالدليل.

sudo mv php-fpm.d/www.conf php-fpm.d/www.conf.original

قم بإنشاء www.confملف جديد .

sudo nano php-fpm.d/www.conf

انسخ والصق النص أدناه في www.confالملف. تغيير الخاص بك pm.max\_childrenلتتناسب مع عدد وحدات المعالجة المركزية وفقا لمثيل VPS الخاص بك.

[www]
group = h2o
listen = /var/run/php-fpm-5.6.sock
listen.backlog = 65536
listen.owner = h2o
listen.group = h2o
pm = static
pm.max_children = 2
pm.max_requests = 10240
user = h2o

إعادة تسمية php.iniالملف الافتراضي .

sudo mv php.ini php.ini.original

قم بإنشاء php.iniملف جديد .

sudo nano php.ini

انسخ والصق النص التالي في الجديد php.ini file. تغيير memory\_limit، post\_max\_size، upload\_max\_filesizeو date.timezoneفقا المثال VPS الخاص بك.

[PHP]
allow_url_fopen = On
always_populate_raw_post_data = -1
display_errors = Off
error_reporting = E_ALL & ~E_DEPRECATED & ~E_STRICT
expose_php = Off
log_errors = On
memory_limit = 256M
output_buffering = 4096
post_max_size = 64M
register_argc_argv = Off
request_order = "GP"
upload_max_filesize = 64M
variables_order = "GPCS"
[Date]
date.timezone = America/New_York
[Session]
session.cache_limiter =
session.gc_divisor = 1000
session.hash_bits_per_character = 5
session.save_handler = files
session.save_path = "/opt/remi/php56/root/var/lib/php/session/"
url_rewriter.tags = "a=href,area=href,frame=src,input=src,form=fakeentry"

قم بتغيير ملكية المجموعة /opt/remi/php56/root/var/lib/php/session/للدليل من apacheالمجموعة إلى h2oالمجموعة.

sudo chown root.h2o /opt/remi/php56/root/var/lib/php/session/

قم بإنشاء دليل حيث توجد سجلات خادم PHP-FPM.

sudo mkdir /var/log/php-fpm/

قم بتمكين وبدء خادم PHP-FPM.

sudo systemctl enable php56-php-fpm 
sudo systemctl start php56-php-fpm

قم بتمكين خادم H2O وبدء تشغيله.

sudo systemctl enable h2o
sudo systemctl start h2o

قم بإنشاء دليل حيث index.phpسيكون الإعداد الافتراضي مدرجًا بواسطة خيار الدليل file.dirأعلاه /var/www/www.example.com.

sudo mkdir /var/www/www.example.com

قم بإنشاء افتراضي index.phpباستخدام phpinfoالأمر لاختبار PHP.

sudo nano /var/www/www.example.com/index.php

انسخ والصق النص أدناه في index.phpالملف الجديد .

<?php
phpinfo();
?>

الآن ، افتح المستعرض الخاص بك وأدخل اسم مجال الخادم ( example.com or www.example.com) لمثيلك. هل تحصل على رسالة Unable to connectأو This site can’t be reached؟ لا يمنع إعداد جدار الحماية الافتراضي الخاص بـ CentOS الاتصالات الواردة إلى منفذ http. قم بما يلي لفتحه.

sudo firewall-cmd --permanent --zone=public --add-service=http
sudo firewall-cmd --permanent --zone=public --add-service=https
sudo firewall-cmd --reload

قم بتحديث الصفحة في متصفحك ( F5) وستحصل على صفحة معلومات PHP القياسية.


إعادة توجيه http://example.com، http://www.example.comو https://www.example.comإلى https://example.com(الحيوي الصفحة، PHP-FPM 7.1.x) تكوين

انتقل إلى /etc/h2o/الدليل.

cd /etc/h2o/

إعادة تسمية الافتراضي h2o.confل h2o.conf.original.

sudo mv h2o.conf h2o.conf.original

قم بإنشاء h2o.confملف جديد .

sudo nano h2o.conf

انسخ والصق النص أدناه في h2o.confالملف.

access-log: /var/log/h2o/access.log
compress: ON
error-log: /var/log/h2o/error.log
expires: 1 day
file.index: [ 'index.php' ]
hosts:
  "example.com:80":
    listen:
      port: 80
    paths:
      "/":
        redirect:
          status: 301
          url: "https://example.com/"
  "www.example.com:80":
    listen:
      port: 80
    paths:
      "/":
        redirect:
          status: 301
          url: "https://www.example.com/"
  "example.com:443":
    listen:
      port: 443
      ssl:
        <<: !file /etc/h2o/conf.d/ssl.conf
        certificate-file: /location/of/certificate/file/fullchain.ext
        key-file: /location/of/private/key/file/privkey.ext
    paths:
      "/":
        file.dir: /var/www/example.com
        header.add: "strict-transport-security: max-age=31536000; includeSubDomains; preload"
        redirect:
          internal: YES
          status: 307
          url: /index.php
  "www.example.com:443":
    listen:
      port: 443
      ssl:
        <<: !file /etc/h2o/conf.d/ssl.conf
        certificate-file: /location/of/certificate/file/fullchain.ext
        key-file: /location/of/private/key/file/privkey.ext
    paths:
      "/":
        header.add: "strict-transport-security: max-age=31536000; includeSubDomains; preload"
        redirect:
          status: 301
          url: "https://example.com/"
file.custom-handler:
  extension: .php
  fastcgi.connect:
    port: /run/php-fpm-7.1.sock
    type: unix
pid-file: /var/run/h2o/h2o.pid
send-server-name: OFF
setenv:
  HTTP_PROXY: ""
user: h2o

قم بإنشاء دليل مخصص لتخزين خيارات SSL الافتراضية لجميع مواقع الويب التي تستخدم SSL.

sudo mkdir conf.d

قم بإنشاء ssl.confملف جديد .

sudo nano conf.d/ssl.conf

انسخ والصق النص أدناه في ssl.confالملف.

cipher-preference: server
cipher-suite: ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA256
dh-file: /etc/ssl/h2o/dhparam_2048.pem

قم بعمل دليل لتخزين dhparam_2048.pemالملف الذي سيتم تجديده يوميًا عبر cronjob.

sudo mkdir /etc/ssl/h2o/

قم بإنشاء regenerate_dhparamملف جديد .

sudo nano /etc/cron.daily/regenerate_dhparam

انسخ والصق النص التالي داخل regenerate_dhparamالملف.

#!/bin/bash
cd /etc/ssl/h2o
umask 022
for length in 2048
do
openssl dhparam -out dhparam_$length.tmp $length && mv dhparam_$length.tmp dhparam_$length.pem
chmod 444 dhparam_$length.pem
done

جعل ملف bash الذي تم إنشاؤه للتو قابل للتنفيذ.

sudo chmod +x /etc/cron.daily/regenerate_dhparam

قم بتنفيذ سكربت باش لأول مرة حيث لن يبدأ H2O بشكل صحيح إذا لم يتم إنشاؤه. سيستغرق ذلك حوالي دقيقة أو دقيقتين ليتم إنشاؤه عند التشغيل لأول مرة.

sudo /etc/cron.daily/regenerate_dhparam

لمعالجة PHP ، يجب تثبيت البرنامج الخفي 7.1 PHP-FPM وتكوينه. لتثبيت إصدار PHP-FPM أحدث من الإصدار الافتراضي 5.4.x ، يجب تثبيت REMI repo الذي يحتوي على إصدارات PHP 5.6.x و 7.0.x و 7.1.x. اكتب الأوامر التالية أدناه لتثبيت PHP الإصدار 7.1.x.

sudo yum install http://rpms.remirepo.net/enterprise/remi-release-7.rpm -y
sudo yum install php71-php-fpm -y

انتقل إلى /etc/opt/remi/php71/الدليل.

cd /etc/opt/remi/php71/

إعادة تسمية الافتراضي php-fpm.confل php-fpm.conf.original.

sudo mv php-fpm.conf php-fpm.conf.original

قم بإنشاء php-fpm.confملف جديد .

sudo nano php-fpm.conf

Copy and paste the text below into the php-fpm.conf file.

include=/etc/opt/remi/php71/php-fpm.d/*.conf
[global]
daemonize = yes
emergency_restart_threshold = 2
emergency_restart_interval = 1m
error_log = /var/log/php-fpm/php-fpm-7.1-error.log
pid = /var/run/php-fpm-7.1.pid
process_control_timeout = 10s

Rename the default www.conf file in the php-fpm.d directory.

sudo mv php-fpm.d/www.conf php-fpm.d/www.conf.original

Create a new www.conf file.

sudo nano php-fpm.d/www.conf

Copy and paste the following text into the www.conf file. Change your pm.max\_children to match the number of CPUs in accordance with your VPS instance.

[www]
group = h2o
listen = /var/run/php-fpm-7.1.sock
listen.backlog = 65536
listen.owner = h2o
listen.group = h2o
pm = static
pm.max_children = 2
pm.max_requests = 10240
user = h2o

Rename the default php.ini file.

sudo mv php.ini php.ini.original

Create a new php.ini file.

sudo nano php.ini

Copy and paste the following text below into the new php.ini file. Change the memory\_limit, post\_max\_size, upload\_max\_filesize and date.timezone in accordance with your VPS instance.

[PHP]
allow_url_fopen = On
always_populate_raw_post_data = -1
display_errors = Off
error_reporting = E_ALL & ~E_DEPRECATED & ~E_STRICT
expose_php = Off
log_errors = On
memory_limit = 256M
output_buffering = 4096
post_max_size = 64M
register_argc_argv = Off
request_order = "GP"
upload_max_filesize = 64M
variables_order = "GPCS"
[Date]
date.timezone = America/New_York
[Session]
session.cache_limiter =
session.gc_divisor = 1000
session.hash_bits_per_character = 5
session.save_handler = files
session.save_path = "/var/opt/remi/php71/lib/php/session/"
url_rewriter.tags = "a=href,area=href,frame=src,input=src,form=fakeentry"

Change the group ownership for the /var/opt/remi/php71/lib/php/session/ directory from the apache group to the h2o group.

sudo chown root.h2o /var/opt/remi/php71/lib/php/session/

Create a directory where the PHP-FPM server logs will reside.

sudo mkdir /var/log/php-fpm/

Enable and start the PHP-FPM server.

sudo systemctl enable php71-php-fpm 
sudo systemctl start php71-php-fpm

Enable and start the H2O server.

sudo systemctl enable h2o
sudo systemctl start h2o

Create a directory where the default index.php will reside listed by the directory option file.dir above in /var/www/example.com.

sudo mkdir /var/www/example.com

Create a default index.php using the phpinfo command to test PHP.

sudo nano /var/www/example.com/index.php

Copy and paste the text below in the new index.php file.

<?php
phpinfo();
?>

Now, open your browser and enter the server domain name (example.com or www.example.com) for your instance. Are you getting an Unable to connect or a This site can’t be reached message? CentOS's default firewall setting disallows incoming connections to the http port. Do the following to open it.

sudo firewall-cmd --permanent --zone=public --add-service=http
sudo firewall-cmd --permanent --zone=public --add-service=https
sudo firewall-cmd --reload

Refresh the page in your browser (F5) and you will get the standard PHP info page.


Redirect http://example.com, http://www.example.com, and https://example.com to https://www.example.com (Dynamic Page, PHP-FPM 7.1.x) Configuration

Navigate to the /etc/h2o/ directory.

cd /etc/h2o/

إعادة تسمية الافتراضي h2o.confل h2o.conf.original.

sudo mv h2o.conf h2o.conf.original

قم بإنشاء h2o.confملف جديد .

sudo nano h2o.conf

انسخ والصق النص أدناه في h2o.confالملف.

access-log: /var/log/h2o/access.log
compress: ON
error-log: /var/log/h2o/error.log
expires: 1 day
file.index: [ 'index.php' ]
hosts:
  "example.com:80":
    listen:
      port: 80
    paths:
      "/":
        redirect:
          status: 301
          url: "https://example.com/"
  "www.example.com:80":
    listen:
      port: 80
    paths:
      "/":
        redirect:
          status: 301
          url: "https://www.example.com/"
  "example.com:443":
    listen:
      port: 443
      ssl:
        <<: !file /etc/h2o/conf.d/ssl.conf
        certificate-file: /location/of/certificate/file/fullchain.ext
        key-file: /location/of/private/key/file/privkey.ext
    paths:
      "/":
        header.add: "strict-transport-security: max-age=31536000; includeSubDomains; preload"
        redirect:
          status: 301
          url: "https://www.example.com/"
  "www.example.com:443":
    listen:
      port: 443
      ssl:
        <<: !file /etc/h2o/conf.d/ssl.conf
        certificate-file: /location/of/certificate/file/fullchain.ext
        key-file: /location/of/private/key/file/privkey.ext
    paths:
      "/":
        file.dir: /var/www/www.example.com
        header.add: "strict-transport-security: max-age=31536000; includeSubDomains; preload"
        redirect:
          internal: YES
          status: 307
          url: /index.php
file.custom-handler:
  extension: .php
  fastcgi.connect:
    port: /run/php-fpm-7.1.sock
    type: unix
pid-file: /var/run/h2o/h2o.pid
send-server-name: OFF
setenv:
  HTTP_PROXY: ""
user: h2o

قم بإنشاء دليل مخصص لتخزين خيارات SSL الافتراضية لجميع مواقع الويب التي تستخدم SSL.

sudo mkdir conf.d

قم بإنشاء ssl.confملف جديد .

sudo nano conf.d/ssl.conf

انسخ والصق النص أدناه في ssl.confالملف.

cipher-preference: server
cipher-suite: ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA256
dh-file: /etc/ssl/h2o/dhparam_2048.pem

قم بعمل دليل لتخزين dhparam_2048.pemالملف الذي سيتم تجديده يوميًا عبر cronjob.

sudo mkdir /etc/ssl/h2o/

قم بإنشاء regenerate_dhparamملف جديد .

sudo nano /etc/cron.daily/regenerate_dhparam

انسخ والصق النص التالي داخل regenerate_dhparamالملف.

#!/bin/bash
cd /etc/ssl/h2o
umask 022
for length in 2048
do
openssl dhparam -out dhparam_$length.tmp $length && mv dhparam_$length.tmp dhparam_$length.pem
chmod 444 dhparam_$length.pem
done

جعل ملف bash الذي تم إنشاؤه للتو قابل للتنفيذ.

sudo chmod +x /etc/cron.daily/regenerate_dhparam

قم بتنفيذ سكربت باش لأول مرة حيث لن يبدأ H2O بشكل صحيح إذا لم يتم إنشاؤه. سيستغرق ذلك حوالي دقيقة أو دقيقتين ليتم إنشاؤه عند التشغيل لأول مرة.

sudo /etc/cron.daily/regenerate_dhparam

In order to process PHP, the PHP-FPM 7.1 daemon must be installed and configured. In order to install a version of PHP-FPM newer than the default 5.4.x, the REMI repo must be installed which contains PHP versions 5.6.x, 7.0.x and 7.1.x. Type the following commands to install PHP version 7.1.x.

sudo yum install http://rpms.remirepo.net/enterprise/remi-release-7.rpm -y
sudo yum install php71-php-fpm -y

Navigate to the /etc/opt/remi/php71/ directory.

cd /etc/opt/remi/php71/

Rename the default php-fpm.conf to php-fpm.conf.original.

sudo mv php-fpm.conf php-fpm.conf.original

Create a new php-fpm.conf file.

sudo nano php-fpm.conf

Copy and paste the following text into the php-fpm.conf file.

include=/etc/opt/remi/php71/php-fpm.d/*.conf
[global]
daemonize = yes
emergency_restart_threshold = 2
emergency_restart_interval = 1m
error_log = /var/log/php-fpm/php-fpm-7.1-error.log
pid = /var/run/php-fpm-7.1.pid
process_control_timeout = 10s

Rename the default www.conf file in the php-fpm.d directory.

sudo mv php-fpm.d/www.conf php-fpm.d/www.conf.original

Create a new www.conf file.

sudo nano php-fpm.d/www.conf

Copy and paste the text below into the www.conf file. Change your pm.max\_children to match the number of CPUs in accordance with your VPS instance.

[www]
group = h2o
listen = /var/run/php-fpm-7.1.sock
listen.backlog = 65536
listen.owner = h2o
listen.group = h2o
pm = static
pm.max_children = 2
pm.max_requests = 10240
user = h2o

Rename the default php.ini file.

sudo mv php.ini php.ini.original

Create a new php.ini file.

sudo nano php.ini

انسخ والصق النص التالي أدناه في الجديد php.ini file. تغيير memory\_limit، post\_max\_size، upload\_max\_filesizeو date.timezoneفقا المثال VPS الخاص بك.

[PHP]
allow_url_fopen = On
always_populate_raw_post_data = -1
display_errors = Off
error_reporting = E_ALL & ~E_DEPRECATED & ~E_STRICT
expose_php = Off
log_errors = On
memory_limit = 256M
output_buffering = 4096
post_max_size = 64M
register_argc_argv = Off
request_order = "GP"
upload_max_filesize = 64M
variables_order = "GPCS"
[Date]
date.timezone = America/New_York
[Session]
session.cache_limiter =
session.gc_divisor = 1000
session.hash_bits_per_character = 5
session.save_handler = files
session.save_path = "/var/opt/remi/php71/lib/php/session"
url_rewriter.tags = "a=href,area=href,frame=src,input=src,form=fakeentry"

قم بتغيير ملكية المجموعة /var/opt/remi/php71/lib/php/session/للدليل من apacheالمجموعة إلى h2oالمجموعة.

sudo chown root.h2o /var/opt/remi/php71/lib/php/session/

قم بإنشاء دليل حيث توجد سجلات خادم PHP-FPM.

sudo mkdir /var/log/php-fpm/

قم بتمكين وبدء خادم PHP-FPM.

sudo systemctl enable php71-php-fpm 
sudo systemctl start php71-php-fpm

قم بتمكين خادم H2O وبدء تشغيله.

sudo systemctl enable h2o
sudo systemctl start h2o

قم بإنشاء دليل حيث index.phpسيكون الإعداد الافتراضي مدرجًا بواسطة خيار الدليل file.dirأعلاه /var/www/example.com.

sudo mkdir /var/www/www.example.com

قم بإنشاء افتراضي index.phpباستخدام phpinfoالأمر لاختبار PHP.

sudo nano /var/www/www.example.com/index.php

انسخ والصق النص أدناه في index.phpالملف الجديد .

<?php
phpinfo();
?>

الآن ، افتح المستعرض الخاص بك وأدخل اسم مجال الخادم ( example.comأو www.example.com) لمثيلك. هل تحصل على رسالة Unable to connectأو This site can’t be reached؟ لا يمنع إعداد جدار الحماية الافتراضي الخاص بـ CentOS الاتصالات الواردة إلى منفذ http. قم بما يلي لفتحه.

sudo firewall-cmd --permanent --zone=public --add-service=http
sudo firewall-cmd --permanent --zone=public --add-service=https
sudo firewall-cmd --reload

قم بتحديث الصفحة في متصفحك ( F5) وستحصل على صفحة معلومات PHP القياسية.


بهذا ينتهي تعليمي. شكرا للقراءة.

اترك تعليقاً

نظرة ثاقبة على 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. قراءة هذه المادة لمعرفة المزيد