الشيء الأكثر طبيعية في العالم عندما يكون لديك خادم ، هو التفكير في الأمان والمزيد من الأمان ، لا يمكنك أبدًا أن تصاب بجنون العظمة بما فيه الكفاية
هناك ممارسة شائعة إلى حد ما ولا يوصى بأي شيء ، وهي استخدام نفس المستخدم لجميع قواعد البيانات ، والأسوأ من ذلك إذا تم استخدام الجذر ، وهو أمر لا يصدق كما قد يبدو ، فهناك من (بسبب التشرد أو الجهل) افعل هذا ، لقد تحدثت بالفعل عن سبب عدم التصرف بهذا الشكل آخر للأطفالحان الوقت الآن لشرح كيف ولماذا من الأفضل فصل معالجة خادم الويب في مستخدمين مختلفين ، هذه المرة سيستخدم إنجن إكس.
ما هو ذلك للمستخدمين وخادم الويب؟
لشرح ذلك بطريقة مختصرة وبسيطة ، يحتاج خادم الويب (apache ، nginx ، أيًا كان) إلى فتح العمليات في النظام ، والعمليات التي ستكون هي التي تأخذ الملفات من محرك الأقراص الثابتة (الصور ، وما إلى ذلك) وتصنعها متاح لمتصفح العميل. لا يمكن لخادم الويب ببساطة أخذ الملفات والتلاعب بها لكونه لا أحد ، أي أنه يحتاج إلى مستخدم سيكون هو الشخص الذي سيفعل كل هذا في النهاية ، وهذا المستخدم هو الشخص الذي أتحدث عنه ، هل تفهم؟
ما هو الفصل في عدة مستخدمين؟
لنفترض أن لدينا على خادمنا موقعان على الويب ، فموقعنا مشروع شخصي والآخر (دعونا نتخيل أنها صديقتنا أو أخونا). حتى عندما نستخدم قواعد بيانات منفصلة ومستخدمين مختلفين للوصول إليها ، في النهاية يتم التلاعب بملفات كلا الموقعين بواسطة نفس المستخدم ، تتم إدارة معالجة PHP بواسطة نفس المستخدم لجميع المواقع (عادة www-data). هذه ممارسة غير موصى بها ، فمن الأفضل فصل كل شيء جيدًا ، كما يقول المثل القديم ، من الأفضل أن تكون آمنًا على أن تكون آسف.
حسنًا ، أفهم كيف أفعل ذلك مع Nginx
أول شيء يجب ملاحظته هو أن Nginx ليس لديه وحدة خاصة به تتعامل مع معالجة PHP كما تفعل Apache ، بالنسبة لـ Nginx نحتاج إلى استخدام PHP-CGI أو PHP-FPM ، والتي تعمل بشكل جيد (أو أفضل) من Apache. لذلك لفصل معالجة PHP عبر مستخدمين مختلفين ، سنحتاج إلى تغيير الأسطر في ملفات تكوين PHP (CGI أو FPM) ، وليس Nginx نفسه.
افترض أنك تستخدم PHP-FPM، سننشئ ملف تكوين لـ تجمع بالنسبة لموقع معين ، فإن التجمع هو طريقة لفصل معالجة PHP عن PHP-FPM ، لكننا ننتقل إلى أجزاء.
1. أولاً ، يجب أن نعرف مستخدم النظام الذي سنستخدمه ، وسأفترض أننا ما زلنا لم نخلق أي مستخدم ، ولنقم بإنشائه:
adduser blog
سنبدأ العملية العادية لإنشاء مستخدم ، وإدخال كلمة المرور ، وما إلى ذلك.
1. لننتقل أولاً إلى /etc/php5/fpm/pool.d/:
cd /etc/php5/fpm/pool.d/
2. الآن ، سننشئ ملفًا يسمى blog.conf:
touch blog.conf
3. سنضع الآن تكوين التجمع الذي سنستخدمه لمدونة VHost:
[ مدونة] المستخدم = مدونة المجموعة = مدونة استمع = / var / run / php5-fpm- مدونة.sock listen.owner = مدونة Listen.group = مدونة pm = ondemand pm.max_children = 96 chdir = /
ملاحظة: ما أضعه باللون الأحمر هو ما يجب عليهم تعديله اعتمادًا على المستخدم الذي أنشأوه مسبقًا. على سبيل المثال ، إذا قاموا بإنشاء مضيف VHost آخر مع مستخدم آخر (منتدى على سبيل المثال) ثم بدلا من بلوق ببساطة وضع المنتدى في كل سطر ، لا يفهم؟
4. بمجرد تكوين التجمع الجديد (ملف blog.conf الذي أنشأناه وحررناه للتو) ، حان الوقت لإخبار Nginx VHost باستخدام جورب مختلف لهذا المضيف ، لهذا الموقع. سيكون الجورب الذي سيتم استخدامه هو الذي أعلناه سابقًا (/var/run/php5-fpm-blog.sock). دعنا نعدل Nginx VHost وفي جزء معالجة PHP ، نشير إلى استخدام تلك الجوارب. فمثلا:
location ~ \ .php $ {if (! -f $ request_filename) {return 404؛ }
fastcgi_pass unix: / var / run / php5-fpm- مدونة.جورب؛
تشمل fastcgi_params ؛ fastcgi_param SCRIPT_FILENAME $ document_root $ fastcgi_script_name؛ fastcgi_read_timeout 300 ؛ }
كما ترى ، أشير إلى أن معالجة PHP لمضيف VHost (هذه السطور هي على سبيل المثال داخل / etc / nginx / sites-enabled / vhost-blog) افعل ذلك مع الجوارب الموجودة في /var/run/php5-fpm-blog.sock ... وهو الذي أنشأناه سابقًا عند تحرير /etc/php5/fpm/pool.d/blog.conf ... هو لا يفهم؟
5. بمجرد الانتهاء من ذلك ، نعيد تشغيل كلتا الخدمتين (php5-fpm و nginx) و voila ، سنرى أن معالجة هذا الموقع (vhost) لا تتم بواسطة www-data أو root أو أي شخص مشابه ، ولكن من قبل المستخدم محددة مسبقا.
هنا أريكم إخراج ملف ملاحظة aux | grep fpm على أحد خوادم عقدي:
ps aux | grep fpm ebook 586 0.0 0.0 349360 1204؟ S Mar30 0:00 php-fpm: pool ebook 589 0.0 0.0 349360 1204؟ S Mar30 0:00 php-fpm: pool ebook www 608 0.0 0.2 350084 5008؟ S مارس 30 0:00 php-fpm: pool www 609 0.0 0.2 350600 5048؟ S Mar30 0:00 php-fpm: pool www tv3 611 0.0 0.0 349360؟ S Mar1204 30:0 php-fpm: pool tv00 tv3 3 615 0.0 0.0؟ S مارس 349360 1204:30 php-fpm: pool tv0 magazine 00 3 1818 1.7 1.7؟ S 437576:36396 09:55 php-fpm: مجلة البلياردو 0 46 2264 1.9 1.7؟ S 437332:35884 10:15 php-fpm: تلميذ مجلة البلياردو 0 26 2338 4.3 1.0؟ S 428992:22196 10:18 php-fpm: مجلة التلاميذ 0 53 2413 1.8 1.7؟ S 437764:36152 10:22 php-fpm: pool gutl magazine 0 18 2754 3.5 1.3؟ S 356724:27164 10:38 php-fpm: pool gutl cgr 0 00 5624 0.0 1.0؟ S 365168 أبريل 22696:28 php-fpm: pool cgr تلميذ 0 16 7900 0.3 2.5؟ S 457052 أبريل 52444:25 php-fpm: تلميذ حمام السباحة 20 23 11021 0.4 2.5؟ S 458316 أبريل 52864:28 php-fpm: تلميذ البلياردو cgr 5 57 11254 0.0 1.0؟ S 363152 أبريل 21708:28 php-fpm: pool cgr cgr 0 12 13184 0.0 1.0؟ S 362872 أبريل 21360:28 php-fpm: pool cgr
كما ترى ... يعد فصل معالجة PHP بواسطة المستخدمين باستخدام Nginx + PHP-FPM أمرًا سهلاً حقًا ، حيث ترى أن هناك العديد من المجمعات ، حيث يوجد العديد من المستخدمين.
استنتاجات
عندما يتعلق الأمر بالخوادم ، فأنت لا تشعر بجنون العظمة مطلقًا ... فالأمان ليس شيئًا للعب به ، فكلما حاولنا دائمًا تحسين أمان خوادمنا وخدماتها ، قل احتمال خوفنا من (ناجح) محاولة الاختراق أو أي شيء مشابه 😉
Gaara ، في الأوقات الحالية ، يجب أتمتة هذه الأشياء قدر الإمكان ، أوصيك بتجربة Ansible. بدون وكيل ، فأنت تحتاج فقط إلى python على المضيف البعيد ، وهو سهل التكوين للغاية ، وملفات yaml ، وقوالب Jinja.
https://github.com/ansible/ansible-examples/tree/master/wordpress-nginx
دعونا نرى ، هذا ليس دائمًا لمواقع WordPress ، و ... هاها ربما أنسبل نقرات volao ، لكنني أفضل أن أعرف بالضبط كيف يعمل كل شيء على الخادم ، حتى لو كان عليّ قضاء دقيقة واحدة في إنشاء جوارب جديدة و مضيف V جديد 😀
مع Ansible ، يمكنك أتمتة كل شيء ، فأنت تفعل عمليًا ما تريده ، وتتمثل ميزة هذه الطريقة في أنك تلخص الممارسة ثم تنفذها حسب الرغبة ، وتخيل أن لديك موقعًا محملاً بكثافة وتريد القيام بموازنة التحميل بين خوادم التطبيق ، هذه يجب أن يتم تهيئتها بنفس الطريقة تمامًا ، فلا يمكنك تخطي خطوة أو القيام بأي شيء مختلف في إحداها ، هل يمكنك تخيل القيام بالإجراء خطوة بخطوة 4 مرات؟ مع Ansible الأمر بسيط مثل إضافة اسم المضيف إلى ملف الجرد و Voilá !!
http://www.ansible.com/how-ansible-works
آسف على عبادة Ansible ، لكنها إحدى هذه التقنيات التي تكتشفها وتريد أن يستخدمها الجميع الآن لأنها رائعة وعملية للغاية ، كما لو كنت تكتشف NGINX وتريد أن يغادر جميع أصدقائك Apache على الفور.
https://speakerdeck.com/slok/ansible-all-the-things
أنا متأكد من أن منشوري يكمل هذا ...
http://blog.ngen.com.ar/configuracion-segura-de-un-webserver-con-nginx-php-fpm/
أنا (أو أدرس لأكون) مطورًا ولدي NGIX الكثير من المشكلات عند تكوين nginx + php-fpm. أعلم أن توزيعة archlinux ليست هي الأفضل لجعلها خادمًا ، ولكن في كل مرة أقوم بتحديث إصدار من ngix أو php ، يتعطل كل شيء دائمًا ، لذا تخليت عن محاولة lol ... واليوم أبقى مع Apache الكلاسيكي + PHP لكنني سأرى ما إذا كنت سأذهب حول NGIX مرة أخرى ... ربما في جهاز افتراضي
تتغير العقلية قليلاً ، يخدم nginx المحتوى الثابت ويعمل كوكيل عكسي لـ php-fpm الذي يدير PHP الحقيقي ، عليك أن تبدأ في أجزاء وتحقق النشر خطوة بخطوة ، ابحث عن دليل للنشر الإطار الذي تعمل به ، كل واحد لديه تفاصيله من خلال أسماء الجمهور ، ثابت ، موارد ، إلخ ...
هل للمجتمع مصلحة كبيرة في التخلي عن كلمة "مضيف" ، التي لا وجود لها. والله هل يصعب قول "مضيف"؟
تحياتي ، باتباع مثالك ، أود معرفة ما إذا كان يمكن إنشاء تجمع لـ wordpress backen ، أي لـ wp-admin من خلال إنشاء مقبس جديد للاتصالات الواردة إلى الواجهة الخلفية
الموقع / wp-admin {
الجذر /var/www/yoursite.com/wp-admin ؛
index index.php index.html index.htm؛
الموقع ~ ^ / wp-admin /(.+. php) $ {
try_files $ uri = 404؛
الجذر /var/www/yoursite.com/wp-admin ؛
include / etc / nginx / fastcgi_params؛
fastcgi_pass server unix:/run/php5-fpm2.sock;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_buffer_size 128k;
fastcgi_buffers 256 4k;
fastcgi_busy_buffers_size 256k;
fastcgi_temp_file_write_size 256k;
fastcgi_read_timeout 1240;
}
location ~* ^/wp-admin/(.+\.(jpg|jpeg|gif|css|png|js|ico|html|xml|txt))$ {
root /var/www/tusitio.com/wp-admin/;
}
}