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

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

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

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

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

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

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

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

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

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

  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. Symlink /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. สร้างไฟล์ systemd unit สำหรับ 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 เวอร์ชันใหม่นี้คุณสามารถใช้ประโยชน์จาก 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