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

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

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

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

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

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

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

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

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

  1. สร้างผู้ใช้งานทั่วไปที่มีsudoการเข้าถึง

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

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

    sudo apt update && sudo apt upgrade -y
    

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

  1. NGINX เป็นโปรแกรมที่เขียนใน C ดังนั้นเราจำเป็นต้องติดตั้ง C compiler (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. สร้างไฟล์หน่วย systemd สำหรับ 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. รีบูต Ubuntu VPS ของคุณเพื่อตรวจสอบว่า NGINX เริ่มทำงานโดยอัตโนมัติ:

    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 เวอร์ชันใหม่คุณสามารถใช้ประโยชน์จาก ciphers like ใหม่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