Πώς να μεταγλωττίσετε το Nginx από την πηγή στο Fedora 25

Το NGINX μπορεί να χρησιμοποιηθεί ως διακομιστής HTTP/HTTPS, διακομιστής ανάστροφου διακομιστή μεσολάβησης, διακομιστής μεσολάβησης αλληλογραφίας, εξισορρόπησης φορτίου, τερματιστής TLS ή διακομιστής προσωρινής αποθήκευσης. Είναι αρκετά αρθρωτό από τη σχεδίασή του. Διαθέτει εγγενείς λειτουργικές μονάδες και λειτουργικές μονάδες τρίτων που δημιουργήθηκαν από την κοινότητα. Γραπτό στη γλώσσα προγραμματισμού C, είναι ένα πολύ γρήγορο και ελαφρύ λογισμικό.

NOTE: NGINX has two version streams that run in parallel - stable and mainline. Both versions can be used on a production server. It is recommended to use the mainline version in production.

Η εγκατάσταση του NGINX από τον πηγαίο κώδικα είναι σχετικά "εύκολη" - κατεβάστε την πιο πρόσφατη έκδοση του πηγαίου κώδικα NGINX, διαμορφώστε, δημιουργήστε και εγκαταστήστε τον.

Σε αυτό το σεμινάριο θα χρησιμοποιήσω την κύρια έκδοση, η οποία είναι 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 και ξεφορτώστε την:

    wget https://nginx.org/download/nginx-1.13.3.tar.gz && tar zxvf nginx-1.13.3.tar.gz
    
  3. Κατεβάστε τον πηγαίο κώδικα των εξαρτήσεων NGINX και εξαγάγετε τους:

    NGINX depends on 3 libraries: PCRE, zlib and 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 για το NGINX:

    sudo vim /etc/systemd/system/nginx.service
    
  15. Αντιγράψτε/επικολλήστε το ακόλουθο περιεχόμενο:

    NOTE: The location of the PID file and the NGINX binary may be different depending on how NGINX was compiled.

    [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, μπορείτε να επωφεληθείτε από νέους τύπους κρυπτογράφησης CHACHA20_POLY1305και πρωτόκολλα όπως το TLS 1.3 που θα είναι διαθέσιμα στο OpenSSL 1.1.1(το οποίο δεν έχει κυκλοφορήσει τη στιγμή της σύνταξης).

Αφήστε ένα σχόλιο

The Rise of Machines: Real World Applications of AI

The Rise of Machines: Real World Applications of AI

Η Τεχνητή Νοημοσύνη δεν είναι στο μέλλον, είναι εδώ ακριβώς στο παρόν Σε αυτό το blog Διαβάστε πώς οι εφαρμογές Τεχνητής Νοημοσύνης έχουν επηρεάσει διάφορους τομείς.

Επιθέσεις DDOS: Μια σύντομη επισκόπηση

Επιθέσεις DDOS: Μια σύντομη επισκόπηση

Είστε επίσης θύμα των επιθέσεων DDOS και έχετε μπερδευτεί σχετικά με τις μεθόδους πρόληψης; Διαβάστε αυτό το άρθρο για να λύσετε τις απορίες σας.

Έχετε αναρωτηθεί ποτέ πώς κερδίζουν χρήματα οι χάκερ;

Έχετε αναρωτηθεί ποτέ πώς κερδίζουν χρήματα οι χάκερ;

Μπορεί να έχετε ακούσει ότι οι χάκερ κερδίζουν πολλά χρήματα, αλλά έχετε αναρωτηθεί ποτέ πώς κερδίζουν τέτοια χρήματα; ας συζητήσουμε.

Επαναστατικές εφευρέσεις από την Google που θα σας φέρουν εύκολη στη ζωή.

Επαναστατικές εφευρέσεις από την Google που θα σας φέρουν εύκολη στη ζωή.

Θέλετε να δείτε επαναστατικές εφευρέσεις της Google και πώς αυτές οι εφευρέσεις άλλαξαν τη ζωή κάθε ανθρώπου σήμερα; Στη συνέχεια, διαβάστε στο blog για να δείτε τις εφευρέσεις της Google.

Friday Essential: Τι συνέβη με τα αυτοκίνητα που κινούνται με AI;

Friday Essential: Τι συνέβη με τα αυτοκίνητα που κινούνται με AI;

Η ιδέα των αυτοκινούμενων αυτοκινήτων να βγαίνουν στους δρόμους με τη βοήθεια της τεχνητής νοημοσύνης είναι ένα όνειρο που έχουμε εδώ και καιρό. Όμως, παρά τις πολλές υποσχέσεις, δεν φαίνονται πουθενά. Διαβάστε αυτό το blog για να μάθετε περισσότερα…

Τεχνολογική μοναδικότητα: Ένα μακρινό μέλλον του ανθρώπινου πολιτισμού;

Τεχνολογική μοναδικότητα: Ένα μακρινό μέλλον του ανθρώπινου πολιτισμού;

Καθώς η Επιστήμη εξελίσσεται με γρήγορους ρυθμούς, αναλαμβάνοντας πολλές από τις προσπάθειές μας, αυξάνονται και οι κίνδυνοι να υποβάλλουμε τον εαυτό μας σε μια ανεξήγητη Ιδιότητα. Διαβάστε τι σημαίνει η μοναδικότητα για εμάς.

Λειτουργίες Αρχιτεκτονικών Επιπέδων Αναφοράς Μεγάλων Δεδομένων

Λειτουργίες Αρχιτεκτονικών Επιπέδων Αναφοράς Μεγάλων Δεδομένων

Διαβάστε το ιστολόγιο για να μάθετε διαφορετικά επίπεδα στην Αρχιτεκτονική Μεγάλων Δεδομένων και τις λειτουργίες τους με τον απλούστερο τρόπο.

Εξέλιξη της αποθήκευσης δεδομένων – Infographic

Εξέλιξη της αποθήκευσης δεδομένων – Infographic

Οι μέθοδοι αποθήκευσης των δεδομένων εξελίσσονται μπορεί να είναι από τη γέννηση των Δεδομένων. Αυτό το ιστολόγιο καλύπτει την εξέλιξη της αποθήκευσης δεδομένων με βάση ένα infographic.

6 εκπληκτικά οφέλη από την ύπαρξη έξυπνων οικιακών συσκευών στη ζωή μας

6 εκπληκτικά οφέλη από την ύπαρξη έξυπνων οικιακών συσκευών στη ζωή μας

Σε αυτόν τον ψηφιακό κόσμο, οι έξυπνες οικιακές συσκευές έχουν γίνει κρίσιμο μέρος της ζωής. Ακολουθούν μερικά εκπληκτικά οφέλη των έξυπνων οικιακών συσκευών σχετικά με το πώς κάνουν τη ζωή μας να αξίζει και να απλοποιείται.

Η ενημέρωση του συμπληρώματος macOS Catalina 10.15.4 προκαλεί περισσότερα προβλήματα από την επίλυση

Η ενημέρωση του συμπληρώματος macOS Catalina 10.15.4 προκαλεί περισσότερα προβλήματα από την επίλυση

Πρόσφατα, η Apple κυκλοφόρησε το macOS Catalina 10.15.4 μια συμπληρωματική ενημέρωση για την επιδιόρθωση προβλημάτων, αλλά φαίνεται ότι η ενημέρωση προκαλεί περισσότερα προβλήματα που οδηγούν σε bricking των μηχανών mac. Διαβάστε αυτό το άρθρο για να μάθετε περισσότερα