نحوه تهیه Nginx از منبع در CentOS 7

NGINX می تواند به عنوان سرور HTTP / HTTPS ، سرور پروکسی معکوس ، سرور پروکسی پست الکترونیکی ، متعادل کننده بار ، ترمینال TLS یا سرور ذخیره کننده استفاده شود. با طراحی کاملاً مدولار است. این ماژول های بومی و ماژول های شخص ثالث ایجاد شده توسط جامعه است. نوشتن به زبان برنامه نویسی C ، این نرم افزار بسیار سریع و سبک است.

توجه : NGINX دارای دو جریان نسخه است که به صورت موازی اجرا می شوند - پایدار و خط اصلی . هر دو نسخه را می توان در سرور تولید استفاده کرد. توصیه می شود از نسخه اصلی در تولید استفاده کنید.

نصب NGINX از کد منبع نسبتاً "آسان" است - آخرین نسخه کد منبع NGINX را بارگیری کنید ، پیکربندی ، ساخت و نصب کنید.

در این آموزش از نسخه اصلی استفاده می کنم که در زمان نوشتن 1.13.2 است. مطابق با دسترسی نسخه های جدیدتر ، تعداد نسخه ها را به روز کنید.

مورد نیاز برای ساخت NGINX از منبع

الزامات اجباری:

  • نسخه کتابخانه OpenSSL بین 1.0.2 - 1.1.0
  • نسخه کتابخانه zlib بین 1.1.3 - 1.2.11
  • نسخه کتابخانه PCRE بین 4.4 - 8.40
  • کامپایلر GCC

الزامات اختیاری:

قبل از اینکه شروع کنی

  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فهرست پیوند دهید تا بتوانید ماژول های پویا را در پیکربندی nginx مانند این بارگذاری کنید 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. ایجاد یک فایل واحد سیستمی برای 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(که در زمان نوشتن منتشر نشده است) استفاده کنید.

یک نظر بگذارید

نحوه نصب Anchor CMS بر روی یک VPS Fedora 26 LAMP

نحوه نصب Anchor CMS بر روی یک VPS Fedora 26 LAMP

با استفاده از یک سیستم متفاوت؟ Anchor CMS یک سیستم مدیریت محتوا (CMS) بسیار ساده و بسیار سبک ، بسیار آزاد و آزاد است.

اشتراک NFS را در Debian تنظیم کنید

اشتراک NFS را در Debian تنظیم کنید

NFS یک سیستم فایل مبتنی بر شبکه است که به رایانه ها اجازه می دهد تا از طریق شبکه رایانه ای به فایلها دسترسی پیدا کنند. این راهنما توضیح می دهد که چگونه می توانید پوشه ها را روی NF قرار دهید

نحوه بروزرسانی CentOS 7 ، Ubuntu 16.04 و Debian 8

نحوه بروزرسانی CentOS 7 ، Ubuntu 16.04 و Debian 8

هنگام راه اندازی سرور جدید لینوکس ، به روزرسانی سیستم های هسته و سایر بسته ها تا آخرین نسخه پایدار یک روش توصیه شده است. در این مقاله

نحوه نصب بستر سبد خرید LiteCart در اوبونتو 16.04

نحوه نصب بستر سبد خرید LiteCart در اوبونتو 16.04

LiteCart یک بستر سبد خرید آزاد و منبع باز است که به زبان های PHP ، jQuery و HTML 5 نوشته شده است. این نرم افزار ساده ، سبک و با کاربرد آسان است.

نحوه نصب Matomo Analytics در Fedora 28

نحوه نصب Matomo Analytics در Fedora 28

با استفاده از یک سیستم متفاوت؟ Matomo (سابقا پیویک) یک بستر تحلیلی منبع باز است ، یک جایگزین باز برای Google Analytics. منبع Matomo میزبان o

یک سرور TeamTalk را در لینوکس تنظیم کنید

یک سرور TeamTalk را در لینوکس تنظیم کنید

TeamTalk یک سیستم کنفرانس است که به کاربران امکان می دهد مکالمات صوتی / تصویری با کیفیت بالا ، چت متنی ، انتقال فایل ها و صفحه های به اشتراک بگذارند. من

با استفاده از کلید SSH خود برای ورود به کاربران غیر ریشه استفاده کنید

با استفاده از کلید SSH خود برای ورود به کاربران غیر ریشه استفاده کنید

Vultr یک ویژگی را فراهم می کند که به شما امکان می دهد با ایجاد یک نمونه جدید ، کلیدهای SSH را از قبل نصب کنید. این اجازه می دهد تا به کاربر root دسترسی داشته باشید ، با این حال ، th

نحوه نصب انجمن NodeBB در FreeBSD 12

نحوه نصب انجمن NodeBB در FreeBSD 12

با استفاده از یک سیستم متفاوت؟ NodeBB یک نرم افزار انجمن مبتنی بر Node.js است. از سوکت های وب برای تعامل فوری و اعلامیه های زمان واقعی استفاده می کند. NodeB

نحوه نصب Ranger Terminal File Manager در لینوکس

نحوه نصب Ranger Terminal File Manager در لینوکس

رنجر یک مدیر فایل مبتنی بر خط فرمان است که دارای کلیدهای اتصال VI است. این برنامه یک رابط لعنتی مینیمالیستی و زیبا با نمای سلسله مراتب فهرست ارائه می دهد

نصب و راه اندازی ZNC در اوبونتو

نصب و راه اندازی ZNC در اوبونتو

ZNC یک پیشرانه پیشرفته شبکه IRC است که تمام وقت بهم متصل می شود تا مشتری IRC بتواند بدون از دست دادن جلسه گپ قطع یا وصل شود.