Cara Menyusun Nginx Dari Sumber di Ubuntu 16.04

NGINX dapat digunakan sebagai pelayan HTTP / HTTPS, pelayan proksi terbalik, pelayan proksi surat, penyeimbang beban, penghentian TLS, atau pelayan caching. Reka bentuknya agak modular. Ia mempunyai modul asli dan modul pihak ketiga yang dibuat oleh komuniti. Ditulis dalam bahasa pengaturcaraan C, ia adalah perisian yang sangat pantas dan ringan.

CATATAN : NGINX mempunyai dua aliran versi yang berjalan secara selari - stabil dan utama . Kedua-dua versi boleh digunakan pada pelayan pengeluaran. Sebaiknya gunakan versi utama dalam pengeluaran.

Memasang NGINX dari kod sumber agak "mudah" - muat turun versi terkini kod sumber NGINX, konfigurasikan, bina dan pasangnya.

Dalam tutorial ini saya akan menggunakan versi utama , iaitu 1.13.1 pada masa penulisan. Kemas kini nombor versi dengan sewajarnya apabila versi yang lebih baru tersedia.

Keperluan untuk membina NGINX dari sumber

Keperluan mandatori:

  • Versi perpustakaan OpenSSL antara 1.0.2 - 1.1.0
  • Versi perpustakaan Zlib antara 1.1.3 - 1.2.11
  • Versi perpustakaan PCRE antara 4.4 - 8.40
  • Penyusun GCC

Keperluan pilihan:

Sebelum awak bermula

  1. Buat pengguna biasa dengan sudoakses .

  2. Tukar ke pengguna baru:

    su - <username>
    
  3. Kemas kini sistem:

    sudo apt update && sudo apt upgrade -y
    

Bina NGINX dari sumber

  1. NGINX adalah program yang ditulis dalam C, jadi kita perlu memasang penyusun C (GCC).

    sudo apt install build-essential -y
    
  2. Muat turun kod sumber NGINX versi terkini dan ekstraknya:

    wget https://nginx.org/download/nginx-1.13.1.tar.gz && tar zxvf nginx-1.13.1.tar.gz
    
  3. Muat turun kod sumber kebergantungan NGINX dan ekstraknya:

    NGINX bergantung pada 3 perpustakaan: PCRE , zlib dan 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. Keluarkan semua .tar.gzfail. Kami tidak memerlukannya lagi:

    rm -rf *.tar.gz
    
  5. Pergi ke direktori sumber NGINX:

    cd ~/nginx-1.13.1
    
  6. Untuk mendapatkan bantuan, anda boleh menyenaraikan suis konfigurasi yang tersedia dengan menjalankan:

    ./configure --help
    
  7. Konfigurasikan, kompilasi, dan pasang 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. Keluarkan semua fail yang dimuat turun dari direktori utama, dalam kes ini /home/username:

    cd ~
    rm -r nginx-1.13.1/ openssl-1.1.0f/ pcre-8.40/ zlib-1.2.11/
    
  9. Periksa versi NGINX dan susun pilihan masa:

    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. Periksa sintaks dan kemungkinan kesalahan:

    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. Buat fail unit systemd untuk NGINX:

    sudo vim /etc/systemd/system/nginx.service
    
  12. Salin / tampal kandungan berikut:

    CATATAN : Lokasi fail PID dan binari NGINX mungkin berbeza bergantung pada bagaimana NGINX disusun.

    [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. Mulakan dan aktifkan perkhidmatan NGINX:

    sudo systemctl start nginx.service && sudo systemctl enable nginx.service
    
  14. Periksa sama ada NGINX akan dimulakan selepas but semula:

    sudo systemctl is-enabled nginx.service
    # enabled
    
  15. Periksa sama ada NGINX sedang berjalan:

    sudo systemctl status nginx.service
    ps aux | grep nginx
    curl -I 127.0.0.1
    
  16. Nyalakan semula Ubuntu VPS anda untuk mengesahkan bahawa NGINX dimulakan secara automatik:

    sudo shutdown -r now
    
  17. Buat profil aplikasi UFW NGINX:

    sudo vim /etc/ufw/applications.d/nginx
    
  18. Salin / tampal kandungan berikut:

    [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. Sekarang, sahkan bahawa profil aplikasi UFW dibuat dan dikenali:

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

Kesimpulannya

Itu sahaja. Anda kini memasang versi terbaru NGINX. Ia disusun secara statik terhadap beberapa perpustakaan penting seperti OpenSSL. Selalunya, versi OpenSSL sistem sudah ketinggalan zaman. Dengan menggunakan kaedah pemasangan ini dengan OpenSSL versi yang lebih baru, anda dapat memanfaatkan cipher baru CHACHA20_POLY1305dan protokol seperti TLS 1.3 yang akan tersedia di OpenSSL 1.1.1(yang belum dilepaskan).



Leave a Comment

Cara Memasang Platform Keranjang Belanja LiteCart di Ubuntu 16.04

Cara Memasang Platform Keranjang Belanja LiteCart di Ubuntu 16.04

LiteCart adalah platform keranjang belanja sumber terbuka dan bebas yang ditulis dalam PHP, jQuery, dan HTML 5. Ia adalah perisian elektronik e-dagang yang ringkas, ringan, dan mudah digunakan

Sediakan NFS Share di Debian

Sediakan NFS Share di Debian

NFS adalah sistem fail berasaskan rangkaian yang membolehkan komputer mengakses fail di seluruh rangkaian komputer. Panduan ini menerangkan bagaimana anda boleh mendedahkan folder di atas NF

Cara Memasang Matomo Analytics di Fedora 28

Cara Memasang Matomo Analytics di Fedora 28

Menggunakan Sistem Berbeza? Matomo (dahulunya Piwik) adalah platform analitik sumber terbuka, alternatif terbuka kepada Google Analytics. Sumber Matomo dihoskan o

Sediakan Pelayan TeamTalk di Linux

Sediakan Pelayan TeamTalk di Linux

TeamTalk adalah sistem persidangan yang membolehkan pengguna melakukan perbincangan audio / video berkualiti tinggi, sembang teks, memindahkan fail, dan berbagi layar. Ia i

Cara Pasang dan Konfigur CyberPanel pada Server CentOS 7 anda

Cara Pasang dan Konfigur CyberPanel pada Server CentOS 7 anda

Menggunakan Sistem Berbeza? Pengenalan CyberPanel adalah salah satu panel kawalan pertama di pasaran yang merupakan sumber terbuka dan menggunakan OpenLiteSpeed. Apa itu

Cara Memasang Apache Maven 3.5 di CentOS 7

Cara Memasang Apache Maven 3.5 di CentOS 7

Apache Maven adalah alat pengurusan projek perisian sumber terbuka dan bebas yang banyak digunakan untuk menyebarkan aplikasi berbasis Java. Prasyarat yang baru

Cara Memasang Backdrop CMS 1.8.0 pada VPS CentOS 7 LAMP

Cara Memasang Backdrop CMS 1.8.0 pada VPS CentOS 7 LAMP

Menggunakan Sistem Berbeza? Backdrop CMS 1.8.0 adalah Sistem Pengurusan Kandungan (CMS) sumber mudah alih, mudah alih, percuma dan terbuka yang membolehkan kami

Cara Mengakses VPS Vultr Anda

Cara Mengakses VPS Vultr Anda

Vultr menyediakan beberapa cara yang berbeza untuk mengakses VPS anda untuk mengkonfigurasi, memasang, dan menggunakan. Akses Kredensial Kelayakan akses lalai untuk VPS anda

Cara Membangun Brotli Dari Sumber di Ubuntu 18.04 LTS

Cara Membangun Brotli Dari Sumber di Ubuntu 18.04 LTS

Menggunakan Sistem Berbeza? Brotli adalah kaedah pemampatan baru dengan nisbah mampatan yang lebih baik daripada GZIP. Kod sumbernya dihoskan secara umum di Githu ini

Menggunakan Paparan MySQL pada Debian 7

Menggunakan Paparan MySQL pada Debian 7

Pengenalan MySQL mempunyai ciri hebat yang dikenali sebagai pandangan. Paparan adalah pertanyaan yang disimpan. Anggap mereka sebagai alias untuk pertanyaan yang panjang. Dalam panduan ini,

Cara Pasang AirSonic pada CentOS 7

Cara Pasang AirSonic pada CentOS 7

Menggunakan Sistem Berbeza? AirSonic adalah pelayan streaming media sumber terbuka dan terbuka. Dalam tutorial ini, saya akan membimbing anda melalui proses penyebaran a

Cara Pasang CD Strider pada Ubuntu 18.04

Cara Pasang CD Strider pada Ubuntu 18.04

Pengenalan CD Strider adalah platform penyebaran sumber terbuka berterusan. Aplikasi ini ditulis dalam Node.js dan menggunakan MongoDB sebagai backend penyimpanan. Selesaikan

Cara Memasang Subrion 4.1 CMS pada Ubuntu 16.04 LAMP VPS

Cara Memasang Subrion 4.1 CMS pada Ubuntu 16.04 LAMP VPS

Menggunakan Sistem Berbeza? Subrion 4.1 CMS adalah Sistem Pengurusan Kandungan sumber terbuka (CMS) yang kuat dan fleksibel yang membawa kandungan intuitif dan jelas

Cara Pasang DokuWiki pada Ubuntu 16.04 LTS

Cara Pasang DokuWiki pada Ubuntu 16.04 LTS

Menggunakan Sistem Berbeza? DokuWiki adalah program wiki sumber terbuka yang ditulis dalam PHP yang tidak memerlukan pangkalan data. Ia menyimpan data dalam fail teks. DokuWik

Siapkan Komposer Untuk Ketergantungan PHP Di CentOS 6

Siapkan Komposer Untuk Ketergantungan PHP Di CentOS 6

Pengenalan Komposer adalah pengurus pergantungan yang popular untuk PHP yang dapat mempermudah pemasangan dan kemas kini perpustakaan yang diperlukan untuk projek anda

Menyiapkan Chroot di Debian

Menyiapkan Chroot di Debian

Artikel ini akan mengajar anda cara menyediakan penjara chroot di Debian. Saya menganggap bahawa anda menggunakan Debian 7.x. Sekiranya anda menjalankan Debian 6 atau 8, ini mungkin berfungsi,

Cara Memasang PiVPN pada Debian

Cara Memasang PiVPN pada Debian

Pengenalan Cara mudah untuk menyediakan pelayan VPN di Debian adalah dengan PiVPN. PiVPN adalah pemasang dan pembungkus untuk OpenVPN. Ini membuat perintah mudah untuk anda

Cara Pasang Edisi Komuniti GitLab (CE) 11.x pada Debian 9

Cara Pasang Edisi Komuniti GitLab (CE) 11.x pada Debian 9

Menggunakan Sistem Berbeza? Sejak GitHub diambil alih oleh Microsoft, sebilangan besar pembangun telah merancang untuk memindahkan repositori kod mereka sendiri dari github.co

Pasang PBX dalam Flash 5 pada Debian 8

Pasang PBX dalam Flash 5 pada Debian 8

PBX In A Flash 5 (PIAF5) adalah sistem operasi berasaskan Debian 8 yang menjadikan Vultr VPS anda menjadi PBX lengkap. Ia mempunyai ciri-ciri berikut, dan banyak lagi.

Cara Pasang dan Konfigurasi CyberPanel pada Ubuntu 18.04 LTS

Cara Pasang dan Konfigurasi CyberPanel pada Ubuntu 18.04 LTS

Menggunakan Sistem Berbeza? Pengenalan CyberPanel adalah salah satu panel kawalan pertama di pasaran yang merupakan sumber terbuka dan menggunakan OpenLiteSpeed. Apa itu

Pandangan tentang 26 Teknik Analisis Data Besar: Bahagian 1

Pandangan tentang 26 Teknik Analisis Data Besar: Bahagian 1

Pandangan tentang 26 Teknik Analisis Data Besar: Bahagian 1

6 Perkara Yang Sangat Menggila Tentang Nintendo Switch

6 Perkara Yang Sangat Menggila Tentang Nintendo Switch

Ramai daripada anda tahu Switch akan keluar pada Mac 2017 dan ciri baharunya. Bagi yang tidak tahu, kami telah menyediakan senarai ciri yang menjadikan 'Tukar' sebagai 'gajet yang mesti ada'.

Janji Teknologi Yang Masih Tidak Ditepati

Janji Teknologi Yang Masih Tidak Ditepati

Adakah anda menunggu gergasi teknologi memenuhi janji mereka? semak apa yang masih belum dihantar.

Fungsi Lapisan Seni Bina Rujukan Data Besar

Fungsi Lapisan Seni Bina Rujukan Data Besar

Baca blog untuk mengetahui lapisan berbeza dalam Seni Bina Data Besar dan fungsinya dengan cara yang paling mudah.

Bagaimana AI Boleh Mengambil Automasi Proses ke Tahap Seterusnya?

Bagaimana AI Boleh Mengambil Automasi Proses ke Tahap Seterusnya?

Baca ini untuk mengetahui cara Kecerdasan Buatan semakin popular di kalangan syarikat berskala kecil dan cara ia meningkatkan kebarangkalian untuk menjadikan mereka berkembang dan memberikan pesaing mereka kelebihan.

CAPTCHA: Berapa Lama Ia Boleh Kekal Sebagai Teknik Berdaya maju Untuk Perbezaan Manusia-AI?

CAPTCHA: Berapa Lama Ia Boleh Kekal Sebagai Teknik Berdaya maju Untuk Perbezaan Manusia-AI?

CAPTCHA telah menjadi agak sukar untuk diselesaikan oleh pengguna dalam beberapa tahun kebelakangan ini. Adakah ia dapat kekal berkesan dalam pengesanan spam dan bot pada masa hadapan?

Keunikan Teknologi: Masa Depan Tamadun Manusia yang Jauh?

Keunikan Teknologi: Masa Depan Tamadun Manusia yang Jauh?

Apabila Sains Berkembang pada kadar yang pantas, mengambil alih banyak usaha kita, risiko untuk menundukkan diri kita kepada Ketunggalan yang tidak dapat dijelaskan juga meningkat. Baca, apakah makna ketunggalan bagi kita.

Teleperubatan Dan Penjagaan Kesihatan Jauh: Masa Depan Ada Di Sini

Teleperubatan Dan Penjagaan Kesihatan Jauh: Masa Depan Ada Di Sini

Apakah teleperubatan, penjagaan kesihatan jauh dan impaknya kepada generasi akan datang? Adakah ia tempat yang baik atau tidak dalam situasi pandemik? Baca blog untuk mencari paparan!

Pernahkah Anda Terfikir Bagaimana Penggodam Mendapatkan Wang?

Pernahkah Anda Terfikir Bagaimana Penggodam Mendapatkan Wang?

Anda mungkin pernah mendengar bahawa penggodam memperoleh banyak wang, tetapi pernahkah anda terfikir bagaimana mereka memperoleh wang seperti itu? Mari berbincang.

Kemas Kini Tambahan macOS Catalina 10.15.4 Menyebabkan Lebih Banyak Isu Daripada Penyelesaian

Kemas Kini Tambahan macOS Catalina 10.15.4 Menyebabkan Lebih Banyak Isu Daripada Penyelesaian

Baru-baru ini Apple mengeluarkan macOS Catalina 10.15.4 kemas kini tambahan untuk menyelesaikan masalah tetapi nampaknya kemas kini itu menyebabkan lebih banyak masalah yang membawa kepada pemusnahan mesin mac. Baca artikel ini untuk mengetahui lebih lanjut