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

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

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

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

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

مورد نیاز برای ساخت 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 apt update && sudo apt upgrade -y
    

NGINX را از مبدا بسازید

  1. NGINX برنامه ای است که به زبان C نوشته شده است ، بنابراین باید کامپایلر C (GCC) را نصب کنیم.

    sudo apt install build-essential -y
    
  2. آخرین نسخه کد منبع NGINX را بارگیری کرده و آن را استخراج کنید:

    wget https://nginx.org/download/nginx-1.13.1.tar.gz && tar zxvf nginx-1.13.1.tar.gz
    
  3. کد منبع وابستگی NGINX را بارگیری کنید و آنها را استخراج کنید:

    NGINX به 3 كتابخانه بستگی دارد: PCRE ، zlib و OpenSSL :

    # PCRE version 4.4 - 8.40
    wget https://ftp.pcre.org/pub/pcre/pcre-8.40.tar.gz && tar xzvf pcre-8.40.tar.gz
    
    # zlib version 1.1.3 - 1.2.11
    wget http://www.zlib.net/zlib-1.2.11.tar.gz && tar xzvf zlib-1.2.11.tar.gz
    
    # OpenSSL version 1.0.2 - 1.1.0
    wget https://www.openssl.org/source/openssl-1.1.0f.tar.gz && tar xzvf openssl-1.1.0f.tar.gz
    
  4. همه .tar.gzپرونده ها را حذف کنید . ما دیگر به آنها احتیاج نداریم:

    rm -rf *.tar.gz
    
  5. به فهرست منبع NGINX بروید:

    cd ~/nginx-1.13.1
    
  6. برای کمک ، می توانید سوئیچ های پیکربندی موجود را با اجرا لیست کنید:

    ./configure --help
    
  7. پیکربندی ، کامپایل و نصب NGINX:

    ./configure --prefix=/usr/share/nginx \
                --sbin-path=/usr/sbin/nginx \
                --modules-path=/usr/lib/nginx/modules \
                --conf-path=/etc/nginx/nginx.conf \
                --error-log-path=/var/log/nginx/error.log \
                --http-log-path=/var/log/nginx/access.log \
                --pid-path=/run/nginx.pid \
                --lock-path=/var/lock/nginx.lock \
                --user=www-data \
                --group=www-data \
                --build=Ubuntu \
                --http-client-body-temp-path=/var/lib/nginx/body \
                --http-fastcgi-temp-path=/var/lib/nginx/fastcgi \
                --http-proxy-temp-path=/var/lib/nginx/proxy \
                --http-scgi-temp-path=/var/lib/nginx/scgi \
                --http-uwsgi-temp-path=/var/lib/nginx/uwsgi \
                --with-openssl=../openssl-1.1.0f \
                --with-openssl-opt=enable-ec_nistp_64_gcc_128 \
                --with-openssl-opt=no-nextprotoneg \
                --with-openssl-opt=no-weak-ssl-ciphers \
                --with-openssl-opt=no-ssl3 \
                --with-pcre=../pcre-8.40 \
                --with-pcre-jit \
                --with-zlib=../zlib-1.2.11 \
                --with-compat \
                --with-file-aio \
                --with-threads \
                --with-http_addition_module \
                --with-http_auth_request_module \
                --with-http_dav_module \
                --with-http_flv_module \
                --with-http_gunzip_module \
                --with-http_gzip_static_module \
                --with-http_mp4_module \
                --with-http_random_index_module \
                --with-http_realip_module \
                --with-http_slice_module \
                --with-http_ssl_module \
                --with-http_sub_module \
                --with-http_stub_status_module \
                --with-http_v2_module \
                --with-http_secure_link_module \
                --with-mail \
                --with-mail_ssl_module \
                --with-stream \
                --with-stream_realip_module \
                --with-stream_ssl_module \
                --with-stream_ssl_preread_module \
                --with-debug \
                --with-cc-opt='-g -O2 -fPIE -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2' \
                --with-ld-opt='-Wl,-Bsymbolic-functions -fPIE -pie -Wl,-z,relro -Wl,-z,now'
    make 
    sudo make install
    
  8. در این حالت همه پرونده های بارگیری شده را از فهرست اصلی حذف کنید /home/username:

    cd ~
    rm -r nginx-1.13.1/ openssl-1.1.0f/ pcre-8.40/ zlib-1.2.11/
    
  9. نسخه NGINX را بررسی کنید و گزینه های زمان را کامپایل کنید:

    sudo nginx -v && sudo nginx -V
    
    # nginx version: nginx/1.13.0 (Ubuntu)
    # built by gcc 5.4.0 20160609 (Ubuntu 5.4.0-6ubuntu1~16.04.4)
    # built with OpenSSL 1.1.0f  25 May 2017
    # TLS SNI support enabled
    # configure arguments: --prefix=/etc/nginx . . .
    # . . .
    # . . .
    
  10. نحو و خطاهای احتمالی را بررسی کنید:

    sudo nginx -t
    # Will throw this error nginx: [emerg] mkdir() "/var/lib/nginx/body" failed (2: No such file or directory)
    # Just create directory
    mkdir -p /var/lib/nginx && sudo nginx -t
    
  11. ایجاد فایل واحد سیستمی برای NGINX:

    sudo vim /etc/systemd/system/nginx.service
    
  12. محتوای زیر را کپی / چسباندن:

    توجه : مکان فایل PID و باینری NGINX بسته به نحوه تهیه NGINX ممکن است متفاوت باشد.

    [Unit]
    Description=A high performance web server and a reverse proxy server
    After=network.target
    
    [Service]
    Type=forking
    PIDFile=/run/nginx.pid
    ExecStartPre=/usr/sbin/nginx -t -q -g 'daemon on; master_process on;'
    ExecStart=/usr/sbin/nginx -g 'daemon on; master_process on;'
    ExecReload=/usr/sbin/nginx -g 'daemon on; master_process on;' -s reload
    ExecStop=-/sbin/start-stop-daemon --quiet --stop --retry QUIT/5 --pidfile /run/nginx.pid
    TimeoutStopSec=5
    KillMode=mixed
    
    [Install]
    WantedBy=multi-user.target
    
  13. سرویس NGINX را شروع و فعال کنید:

    sudo systemctl start nginx.service && sudo systemctl enable nginx.service
    
  14. بررسی کنید که NGINX بعد از راه اندازی مجدد راه اندازی می شود:

    sudo systemctl is-enabled nginx.service
    # enabled
    
  15. بررسی کنید که NGINX در حال اجرا است:

    sudo systemctl status nginx.service
    ps aux | grep nginx
    curl -I 127.0.0.1
    
  16. برای تأیید اینکه NGINX به طور خودکار شروع به کار کند ، Ubuntu VPS خود را دوباره راه اندازی کنید:

    sudo shutdown -r now
    
  17. نمایه برنامه UFW NGINX را ایجاد کنید:

    sudo vim /etc/ufw/applications.d/nginx
    
  18. محتوای زیر را کپی / چسباندن:

    [Nginx HTTP]
    title=Web Server (Nginx, HTTP)
    description=Small, but very powerful and efficient web server
    ports=80/tcp
    
    [Nginx HTTPS]
    title=Web Server (Nginx, HTTPS)
    description=Small, but very powerful and efficient web server
    ports=443/tcp
    
    [Nginx Full]
    title=Web Server (Nginx, HTTP + HTTPS)
    description=Small, but very powerful and efficient web server
    ports=80,443/tcp
    
  19. اکنون ، بررسی کنید که پروفایل برنامه UFW ایجاد و به رسمیت شناخته شده است:

    sudo ufw app list
    
    # Available applications:
      # Nginx Full
      # Nginx HTTP
      # Nginx HTTPS
      # OpenSSH
    

نتیجه

خودشه. اکنون جدیدترین نسخه NGINX نصب شده است. این استاتیک در برابر برخی از کتابخانه های مهم مانند OpenSSL گردآوری شده است. اغلب ، نسخه OpenSSL سیستم منسوخ شده است. با استفاده از این روش نصب با نسخه جدید OpenSSL می توانید از رمزهای جدید مانند CHACHA20_POLY1305و پروتکل هایی مانند TLS 1.3 که در OpenSSL 1.1.1(که هنوز منتشر نشده است) استفاده کنید.



Leave a Comment

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

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

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

نحوه نصب 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

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

نحوه نصب 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

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

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

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

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

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

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