كيفية تجميع Nginx من المصدر على CentOS 7

يمكن استخدام NGINX كخادم HTTP / HTTPS أو خادم وكيل عكسي أو خادم وكيل بريد أو موازن تحميل أو فاصل TLS أو خادم تخزين مؤقت. إنه نموذجي للغاية حسب التصميم. لديها وحدات أصلية ووحدات خارجية تم إنشاؤها من قبل المجتمع. مكتوب بلغة البرمجة C ، إنه برنامج سريع وخفيف الوزن للغاية.

ملاحظة : يحتوي NGINX على دفقين للإصدار يعملان بالتوازي - مستقر وخط رئيسي . يمكن استخدام كلا الإصدارين على خادم الإنتاج. من المستحسن استخدام الإصدار الرئيسي في الإنتاج.

يعد تثبيت NGINX من التعليمات البرمجية المصدر أمرًا "سهلًا" نسبيًا - قم بتنزيل أحدث إصدار من رمز مصدر NGINX وقم بتكوينه وإنشائه وتثبيته.

في هذا البرنامج التعليمي ، سأستخدم إصدار الخط الرئيسي ، وهو 1.13.2 في وقت الكتابة. قم بتحديث أرقام الإصدارات وفقًا لذلك عندما تتوفر إصدارات أحدث.

متطلبات بناء NGINX من المصدر

متطلبات الزامية:

المتطلبات الاختيارية:

قبل ان تبدأ

  1. إنشاء مستخدم عادي مع sudoوصول .
  2. التبديل إلى المستخدم الجديد:

    su - <username>
    
  3. تحديث النظام:

    sudo yum check-update || sudo yum update -y
    

قم ببناء NGINX من المصدر

  1. قم بتثبيت "أدوات التطوير" ومحرر Vim:

    sudo yum groupinstall -y 'Development Tools' && sudo yum install -y vim
    
  2. قم بتثبيت حزم إضافية لـ Enterprise Linux (EPEL):

    sudo yum install -y epel-release
    
  3. قم بتنزيل وتثبيت تبعيات NGINX الاختيارية:

    sudo yum install -y perl perl-devel perl-ExtUtils-Embed libxslt libxslt-devel libxml2 libxml2-devel gd gd-devel GeoIP GeoIP-devel
    
  4. قم بتنزيل أحدث إصدار رئيسي من شفرة مصدر NGINX واستخرجه:

    wget https://nginx.org/download/nginx-1.13.2.tar.gz && tar zxvf nginx-1.13.2.tar.gz
    
  5. قم بتنزيل شفرة مصدر تبعيات NGINX واستخراجها:

    يعتمد NGINX على 3 مكتبات: PCRE و zlib و OpenSSL :

    # PCRE version 8.40
    wget https://ftp.pcre.org/pub/pcre/pcre-8.40.tar.gz && tar xzvf pcre-8.40.tar.gz
    
    # zlib version 1.2.11
    wget https://www.zlib.net/zlib-1.2.11.tar.gz && tar xzvf zlib-1.2.11.tar.gz
    
    # OpenSSL version 1.1.0f
    wget https://www.openssl.org/source/openssl-1.1.0f.tar.gz && tar xzvf openssl-1.1.0f.tar.gz
    
  6. قم بإزالة كافة .tar.gzالملفات. نحن لسنا بحاجة إليها بعد الآن:

    rm -rf *.tar.gz
    
  7. انتقل إلى دليل مصدر NGINX:

    cd ~/nginx-1.13.2
    
  8. للحصول على مقياس جيد ، قم بإدراج ملفات أدلة مصدر nginx والدلائل:

    ls
    # auto  CHANGES  CHANGES.ru  conf  configure  contrib  html  LICENSE  man  README  src
    
  9. انسخ صفحة دليل NGINX إلى /usr/share/man/man8:

    sudo cp ~/nginx-1.13.2/man/nginx.8 /usr/share/man/man8
    sudo gzip /usr/share/man/man8/nginx.8
    # Check that Man page for NGINX is working
    man nginx
    
  10. للحصول على تعليمات ، يمكنك سرد مفاتيح التبديل المتوفرة عن طريق تشغيل:

    ./configure --help
    # To see want core modules can be build as dynamic run:
    ./configure --help | grep -F =dynamic
    
  11. تكوين وتجميع وتثبيت NGINX:

    ./configure --prefix=/etc/nginx \
                --sbin-path=/usr/sbin/nginx \
                --modules-path=/usr/lib64/nginx/modules \
                --conf-path=/etc/nginx/nginx.conf \
                --error-log-path=/var/log/nginx/error.log \
                --pid-path=/var/run/nginx.pid \
                --lock-path=/var/run/nginx.lock \
                --user=nginx \
                --group=nginx \
                --build=CentOS \
                --builddir=nginx-1.13.2 \
                --with-select_module \
                --with-poll_module \
                --with-threads \
                --with-file-aio \
                --with-http_ssl_module \
                --with-http_v2_module \
                --with-http_realip_module \
                --with-http_addition_module \
                --with-http_xslt_module=dynamic \
                --with-http_image_filter_module=dynamic \
                --with-http_geoip_module=dynamic \
                --with-http_sub_module \
                --with-http_dav_module \
                --with-http_flv_module \
                --with-http_mp4_module \
                --with-http_gunzip_module \
                --with-http_gzip_static_module \
                --with-http_auth_request_module \
                --with-http_random_index_module \
                --with-http_secure_link_module \
                --with-http_degradation_module \
                --with-http_slice_module \
                --with-http_stub_status_module \
                --http-log-path=/var/log/nginx/access.log \
                --http-client-body-temp-path=/var/cache/nginx/client_temp \
                --http-proxy-temp-path=/var/cache/nginx/proxy_temp \
                --http-fastcgi-temp-path=/var/cache/nginx/fastcgi_temp \
                --http-uwsgi-temp-path=/var/cache/nginx/uwsgi_temp \
                --http-scgi-temp-path=/var/cache/nginx/scgi_temp \
                --with-mail=dynamic \
                --with-mail_ssl_module \
                --with-stream=dynamic \
                --with-stream_ssl_module \
                --with-stream_realip_module \
                --with-stream_geoip_module=dynamic \
                --with-stream_ssl_preread_module \
                --with-compat \
                --with-pcre=../pcre-8.40 \
                --with-pcre-jit \
                --with-zlib=../zlib-1.2.11 \
                --with-openssl=../openssl-1.1.0f \
                --with-openssl-opt=no-nextprotoneg \
                --with-debug
    
    
    make 
    sudo make install
    
  12. الارتباط الرمزي /usr/lib64/nginx/modulesإلى /etc/nginx/modulesدليل، بحيث يمكنك تحميل وحدات ديناميكية في إنجن إكس تكوين مثل هذه load_module modules/ngx_foo_module.so;:

    sudo ln -s /usr/lib64/nginx/modules /etc/nginx/modules
    
  13. قم بطباعة إصدار NGINX وإصدار المترجم وتكوين معلمات البرنامج النصي:

    sudo nginx -V
    
    # nginx version: nginx/1.13.2 (CentOS)
    # built by gcc 4.8.5 20150623 (Red Hat 4.8.5-11) (GCC)
    # built with OpenSSL 1.1.0f  25 May 2017
    # TLS SNI support enabled
    # configure arguments: --prefix=/etc/nginx --sbin-path=/usr/sbin/nginx . . .
    # . . .
    # . . .
    
  14. قم بإنشاء مستخدم ومجموعة نظام NGINX:

    sudo useradd --system --home /var/cache/nginx --shell /sbin/nologin --comment "nginx user" --user-group nginx
    
  15. تحقق من بناء الجملة والأخطاء المحتملة:

    sudo nginx -t
    # Will throw this error: nginx: [emerg] mkdir() "/var/cache/nginx/client_temp" failed (2: No such file or directory)
    # Just create directory
    sudo mkdir -p /var/cache/nginx && sudo nginx -t
    
  16. إنشاء ملف وحدة systemd لـ nginx:

    sudo vim /usr/lib/systemd/system/nginx.service
    
  17. انسخ / الصق المحتوى التالي:

    ملاحظة : قد يختلف موقع ملف PID وثنائي NGINX اعتمادًا على كيفية تصنيف NGINX.

    [Unit]
    Description=nginx - high performance web server
    Documentation=https://nginx.org/en/docs/
    After=network-online.target remote-fs.target nss-lookup.target
    Wants=network-online.target
    
    [Service]
    Type=forking
    PIDFile=/var/run/nginx.pid
    ExecStartPre=/usr/sbin/nginx -t -c /etc/nginx/nginx.conf
    ExecStart=/usr/sbin/nginx -c /etc/nginx/nginx.conf
    ExecReload=/bin/kill -s HUP $MAINPID
    ExecStop=/bin/kill -s TERM $MAINPID
    
    [Install]
    WantedBy=multi-user.target
    
  18. ابدأ وتمكين خدمة NGINX:

    sudo systemctl start nginx.service && sudo systemctl enable nginx.service
    
  19. تحقق مما إذا كان NGINX سيبدأ التشغيل بعد إعادة التشغيل:

    sudo systemctl is-enabled nginx.service
    # enabled
    
  20. تحقق مما إذا كان NGINX قيد التشغيل:

    sudo systemctl status nginx.service
    ps aux | grep nginx
    curl -I 127.0.0.1
    
  21. أعد تشغيل VPS للتحقق من أن NGINX يبدأ تشغيله تلقائيًا:

    sudo shutdown -r now
    
  22. إزالة الملفات القديمة من /etc/nginxالدليل:

    sudo rm /etc/nginx/koi-utf /etc/nginx/koi-win /etc/nginx/win-utf
    
  23. وضع تسليط الضوء على تركيب NGINX لتكوين vimفي ~/.vim/. ستحصل على تمييز جيد في بناء الجملة عند تعديل ملف تكوين NGINX:

    mkdir ~/.vim/
    cp -r ~/nginx-1.13.2/contrib/vim/* ~/.vim/
    
  24. إزالة كافة .defaultملفات النسخ الاحتياطي من /etc/nginx/:

    sudo rm /etc/nginx/*.default
    

استنتاج

هذا هو. لديك الآن أحدث إصدار مثبت من NGINX. يتم تجميعه بشكل ثابت ضد بعض المكتبات الهامة مثل OpenSSL. غالبًا ما يكون إصدار OpenSSL للنظام قديمًا. باستخدام طريقة التثبيت هذه مع إصدار أحدث من OpenSSL ، يمكنك الاستفادة من الشفرات الجديدة مثل CHACHA20_POLY1305والبروتوكولات مثل TLS 1.3 التي ستكون متاحة في OpenSSL 1.1.1(التي لم يتم إصدارها وقت كتابة هذا التقرير).



Leave a Comment

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