วิธีการคอมไพล์ Nginx จากซอร์สบน Fedora 25

สามารถใช้NGINXเป็นเซิร์ฟเวอร์ HTTP / HTTPS, พร็อกซีเซิร์ฟเวอร์ย้อนกลับ, พร็อกซีเซิร์ฟเวอร์เมล, ตัวปรับสมดุลโหลด, จุดสิ้นสุด TLS หรือแคชเซิร์ฟเวอร์ มันเป็นแบบแยกส่วนโดยการออกแบบ มันมีโมดูลพื้นเมืองและโมดูลของบุคคลที่สามที่สร้างขึ้นโดยชุมชน เขียนด้วยภาษาการเขียนโปรแกรม C เป็นซอฟต์แวร์ที่รวดเร็วและมีน้ำหนักเบา

หมายเหตุ : NGINX มีสองรุ่นลำธารที่ทำงานในแบบคู่ขนาน - มีเสถียรภาพและฉีด ทั้งสองเวอร์ชันสามารถใช้บนเซิร์ฟเวอร์ที่ใช้งานจริง ขอแนะนำให้ใช้เวอร์ชันmainlineในการผลิต

การติดตั้ง NGINX จากซอร์สโค้ดค่อนข้าง "ง่าย" - ดาวน์โหลดซอร์สโค้ด NGINX เวอร์ช��นล่าสุดกำหนดค่าสร้างและติดตั้ง

ในบทช่วยสอนนี้ฉันจะใช้เวอร์ชันmainlineซึ่งเป็น 1.13.3 ณ เวลาที่เขียน อัปเดตหมายเลขเวอร์ชันตามเมื่อเวอร์ชันที่ใหม่กว่ามีให้ใช้งาน

ข้อกำหนดสำหรับการสร้าง NGINX จากแหล่งที่มา

ข้อกำหนดที่บังคับ:

  • เวอร์ชันไลบรารีOpenSSLระหว่าง 1.0.2 - 1.1.0
  • ไลบรารีzlibเวอร์ชันระหว่าง 1.1.3 - 1.2.11
  • รุ่นPCRE ไลบรารี่ระหว่าง 4.4 - 8.41
  • GCC Compiler

ข้อกำหนดเพิ่มเติม:

ก่อนที่จะเริ่ม

  1. สร้างผู้ใช้ปกติด้วยsudoการเข้าถึง :

  2. เปลี่ยนเป็นผู้ใช้ใหม่:

    su - <username>
    
  3. ระบบอัพเดท:

    sudo dnf check-update || sudo dnf upgrade -y
    

สร้าง NGINX จากแหล่งที่มา

  1. ติดตั้ง "เครื่องมือสำหรับการพัฒนา", เครื่องมือแก้ไข Vim, wget และ gcc-c ++:

    sudo dnf install -y @development-tools && sudo dnf install -y vim wget gcc-c++
    
  2. ดาวน์โหลดล่าสุดฉีดรุ่นของรหัสที่มา NGINX และ Untar มัน

    wget https://nginx.org/download/nginx-1.13.3.tar.gz && tar zxvf nginx-1.13.3.tar.gz
    
  3. ดาวน์โหลดซอร์สโค้ดอ้างอิงของ NGINX และแตกไฟล์:

    NGINX ขึ้นอยู่กับ 3 ไลบรารี: PCRE , zlibและOpenSSL :

    # PCRE version 8.41
    wget https://ftp.pcre.org/pub/pcre/pcre-8.41.tar.gz && tar xzvf pcre-8.41.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
    
  4. ดาวน์โหลดและติดตั้งการพึ่งพา NGINX ซึ่งเป็นตัวเลือก:

    # perl
    sudo dnf install -y perl perl-devel perl-ExtUtils-Embed
    
    # libxslt
    sudo dnf install -y libxslt libxslt-devel
    
    # libxml2
    sudo dnf install -y libxml2 libxml2-devel
    
    # libgd
    sudo dnf install -y gd gd-devel
    
    # GeoIP
    sudo dnf install -y GeoIP GeoIP-devel
    
    # Libatomic_Ops
    sudo dnf install -y libatomic_ops libatomic_ops-devel
    
  5. ลบ.tar.gzไฟล์ทั้งหมด เราไม่ต้องการอีกต่อไป:

    rm -rf *.tar.gz
    
  6. ไปที่ไดเรกทอรีแหล่ง NGINX:

    cd ~/nginx-1.13.3
    
  7. เพื่อการวัดที่ดีให้แสดงรายการซอร์สไฟล์และไดเรกทอรี NGINX:

    ls
    # auto  CHANGES  CHANGES.ru  conf  configure  contrib  html  LICENSE  man  README  src
    
  8. คัดลอกหน้าคู่มือ NGINX ไปที่/usr/share/man/man8/:

    sudo cp ~/nginx-1.13.3/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
    
  9. สำหรับความช่วยเหลือคุณสามารถแสดงรายการสวิตช์การกำหนดค่าที่ใช้ได้โดยเรียกใช้:

    ./configure --help
    # To see want core modules can be build as dynamic run:
    ./configure --help | grep -F =dynamic
    
  10. กำหนดค่ารวบรวมและติดตั้ง 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=Fedora \
                --builddir=nginx-1.13.3 \
                --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 \
                --with-http_perl_module=dynamic \
                --with-perl=/usr/bin/perl \
                --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.41 \
                --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
    
  11. พิมพ์เวอร์ชัน NGINX เวอร์ชั่นคอมไพเลอร์และกำหนดค่าพารามิเตอร์สคริปต์:

    nginx -V
    
    # nginx version: nginx/1.13.3 (Fedora)
    # built by gcc 6.3.1 20161221 (Red Hat 6.3.1-1) (GCC)
    # built with OpenSSL 1.1.0f  25 May 2017
    # TLS SNI support enabled
    # configure arguments: --prefix=/etc/nginx . . .
    # . . .
    
  12. สร้างผู้ใช้และกลุ่มระบบ NGINX:

    sudo useradd --system --home /var/cache/nginx --shell /sbin/nologin --comment "nginx user" --user-group nginx
    
  13. ตรวจสอบไวยากรณ์และข้อผิดพลาดที่อาจเกิดขึ้น:

    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
    
  14. สร้างไฟล์ systemd unit สำหรับ NGINX:

    sudo vim /etc/systemd/system/nginx.service
    
  15. คัดลอก / วางเนื้อหาต่อไปนี้:

    หมายเหตุ : ตำแหน่งของPIDไฟล์และไบนารีของ NGINX อาจแตกต่างกันไปขึ้นอยู่กับวิธีรวบรวม NGINX

    [Unit]
    Description=Nginx - A high performance web server and a reverse proxy server
    Documentation=http://nginx.org/en/docs/
    After=network.target
    
    [Service]
    Type=forking
    PIDFile=/var/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 /var/run/nginx.pid
    TimeoutStopSec=5
    KillMode=mixed
    
    [Install]
    WantedBy=multi-user.target
    
  16. เริ่ม NGINX:

    sudo systemctl start nginx.service
    
  17. เปิดใช้งาน NGINX เพื่อเริ่มต้นโดยอัตโนมัติเมื่อบูต:

    sudo systemctl enable nginx.service
    
  18. ตรวจสอบว่า NGINX จะเริ่มทำงานหลังจากรีบูตหรือไม่:

    sudo systemctl is-enabled nginx.service
    # enabled
    
  19. ตรวจสอบว่า NGINX ทำงานอยู่หรือไม่:

    sudo systemctl status nginx.service
    ps aux | grep nginx
    curl -I 127.0.0.1
    
  20. รีบูต VPS ของคุณเพื่อตรวจสอบว่า NGINX เริ่มทำงานโดยอัตโนมัติ:

    sudo shutdown -r now
    
  21. ลบไฟล์โบราณจาก/etc/nginx/ไดเรกทอรี:

    sudo rm /etc/nginx/koi-utf /etc/nginx/koi-win /etc/nginx/win-utf
    
  22. สถานที่การเน้นไวยากรณ์ไฟล์ของการกำหนดค่าสำหรับ NGINX เข้าvim ~/.vim/คุณจะพบกับการเน้นไวยากรณ์ที่ดีเมื่อแก้ไขไฟล์กำหนดค่า NGINX:

    mkdir ~/.vim/
    cp -r ~/nginx-1.13.3/contrib/vim/* ~/.vim/
    
  23. สร้างconf.d/ไดเรกทอรีใน/etc/nginx/ไดเรกทอรี ในไดเรกทอรีนี้คุณสามารถวางเซิร์ฟเวอร์เสมือนและ upstreams:

    sudo mkdir /etc/nginx/conf.d/
    
  24. ลบไดเร็กทอรีและไฟล์ที่แยกออกจากโฮมไดเร็กทอรีของคุณ:

    rm -rf nginx-1.13.3/ openssl-1.1.0f/ pcre-8.41/ zlib-1.2.11/
    

ข้อสรุป

แค่นั้นแหละ. ตอนนี้คุณติดตั้ง NGINX เวอร์ชันใหม่ล่าสุดแล้ว มันถูกรวบรวมแบบคงที่กับห้องสมุดที่สำคัญบางอย่างเช่น OpenSSL บ่อยครั้งที่รุ่น OpenSSL ของระบบล้าสมัย ด้วยการใช้วิธีการติดตั้งด้วย OpenSSL เวอร์ชันใหม่นี้คุณสามารถใช้ประโยชน์จาก ciphers ใหม่CHACHA20_POLY1305และโปรโตคอลเช่นTLS 1.3ที่จะมีใน OpenSSL 1.1.1(ซึ่งยังไม่วางจำหน่ายในขณะที่เขียน)

ฝากความเห็น

วิธีการติดตั้ง Directus 6.4 CMS บน CentOS 7 LAMP VPS

วิธีการติดตั้ง Directus 6.4 CMS บน CentOS 7 LAMP VPS

เรียนรู้วิธีการติดตั้ง Directus 6.4 CMS บน CentOS 7; ระบบการจัดการเนื้อหา Headless ที่มีความยืดหยุ่นสูงและปลอดภัย

ตั้งค่า Nginx บน Ubuntu เพื่อสตรีมวิดีโอสด HLS

ตั้งค่า Nginx บน Ubuntu เพื่อสตรีมวิดีโอสด HLS

เรียนรู้วิธีการตั้งค่า Nginx บน Ubuntu สำหรับการสตรีมวิดีโอสด HLS ด้วยคำแนะนำที่ชัดเจนและเป็นประโยชน์

การสำรองข้อมูลยอดนิยมด้วย Percona XtraBackup บนแอพ WordPress แบบคลิกเดียว

การสำรองข้อมูลยอดนิยมด้วย Percona XtraBackup บนแอพ WordPress แบบคลิกเดียว

เรียนรู้การใช้ Percona XtraBackup สำหรับการสำรองข้อมูลด้วยวิธีที่เป็นระบบและง่ายดายบน WordPress ออนไลน์ของคุณ

ReactOS: นี่คืออนาคตของ Windows หรือไม่?

ReactOS: นี่คืออนาคตของ Windows หรือไม่?

ReactOS ซึ่งเป็นโอเพ่นซอร์สและระบบปฏิบัติการฟรีพร้อมเวอร์ชันล่าสุดแล้ว สามารถตอบสนองความต้องการของผู้ใช้ Windows ยุคใหม่และล้ม Microsoft ได้หรือไม่? มาหาข้อมูลเพิ่มเติมเกี่ยวกับรูปแบบเก่านี้ แต่เป็นประสบการณ์ OS ที่ใหม่กว่ากัน

AI สามารถต่อสู้กับการโจมตีของแรนซัมแวร์ที่เพิ่มขึ้นได้หรือไม่

AI สามารถต่อสู้กับการโจมตีของแรนซัมแวร์ที่เพิ่มขึ้นได้หรือไม่

การโจมตีของ Ransomware กำลังเพิ่มขึ้น แต่ AI สามารถช่วยจัดการกับไวรัสคอมพิวเตอร์ตัวล่าสุดได้หรือไม่? AI คือคำตอบ? อ่านที่นี่รู้ว่า AI boone หรือ bane

เชื่อมต่อผ่าน WhatsApp Desktop App 24*7

เชื่อมต่อผ่าน WhatsApp Desktop App 24*7

ในที่สุด Whatsapp ก็เปิดตัวแอพเดสก์ท็อปสำหรับผู้ใช้ Mac และ Windows ตอนนี้คุณสามารถเข้าถึง Whatsapp จาก Windows หรือ Mac ได้อย่างง่ายดาย ใช้ได้กับ Windows 8+ และ Mac OS 10.9+

AI จะนำกระบวนการอัตโนมัติไปสู่อีกระดับได้อย่างไร

AI จะนำกระบวนการอัตโนมัติไปสู่อีกระดับได้อย่างไร

อ่านข้อมูลนี้เพื่อทราบว่าปัญญาประดิษฐ์กำลังได้รับความนิยมในหมู่บริษัทขนาดเล็กอย่างไร และเพิ่มโอกาสในการทำให้พวกเขาเติบโตและทำให้คู่แข่งได้เปรียบ

การอัปเดตเสริม macOS Catalina 10.15.4 ทำให้เกิดปัญหามากกว่าการแก้ปัญหา

การอัปเดตเสริม macOS Catalina 10.15.4 ทำให้เกิดปัญหามากกว่าการแก้ปัญหา

เมื่อเร็ว ๆ นี้ Apple เปิดตัว macOS Catalina 10.15.4 การอัปเดตเสริมเพื่อแก้ไขปัญหา แต่ดูเหมือนว่าการอัปเดตทำให้เกิดปัญหามากขึ้นที่นำไปสู่การสร้างเครื่อง Mac อ่านบทความนี้เพื่อเรียนรู้เพิ่มเติม

13 เครื่องมือดึงข้อมูลเชิงพาณิชย์ของ Big Data

13 เครื่องมือดึงข้อมูลเชิงพาณิชย์ของ Big Data

13 เครื่องมือดึงข้อมูลเชิงพาณิชย์ของ Big Data

ระบบไฟล์บันทึกคืออะไรและทำงานอย่างไร

ระบบไฟล์บันทึกคืออะไรและทำงานอย่างไร

คอมพิวเตอร์ของเราจัดเก็บข้อมูลทั้งหมดในลักษณะที่เรียกว่าระบบไฟล์บันทึก เป็นวิธีการที่มีประสิทธิภาพที่ช่วยให้คอมพิวเตอร์สามารถค้นหาและแสดงไฟล์ได้ทันทีที่คุณกดค้นหาhttps://wethegeek.com/?p=94116&preview=true