Created
April 12, 2020 08:11
-
-
Save rakibulinux/d2564c0387423804947ff0bf099a06b2 to your computer and use it in GitHub Desktop.
How to Build NGINX from source on Ubuntu 18.04 LTS
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/bin/sh | |
sudo apt update && sudo apt upgrade -y | |
sudo apt install -y build-essential git tree | |
wget http://nginx.org/download/nginx-1.16.1.tar.gz && tar zxvf nginx-1.16.1.tar.gz | |
#Download the mandatory NGINX dependencies' source code and extract them: | |
# PCRE version 8.42 | |
wget https://ftp.pcre.org/pub/pcre/pcre-8.42.tar.gz && tar xzvf pcre-8.42.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.0h | |
wget https://www.openssl.org/source/openssl-1.1.0h.tar.gz && tar xzvf openssl-1.1.0h.tar.gz | |
#Install optional NGINX dependencies: | |
sudo add-apt-repository -y ppa:maxmind/ppa | |
sudo apt update && sudo apt upgrade -y | |
sudo apt install -y perl libperl-dev libgd3 libgd-dev libgeoip1 libgeoip-dev geoip-bin libxml2 libxml2-dev libxslt1.1 libxslt1-dev | |
Clean up all .tar.gz files. We don't need them anymore: | |
rm -rf *.tar.gz | |
#Enter the NGINX source directory: | |
cd ~/nginx-1.16.1 | |
#For good measure list directories and files that compose NGINX source code with tree utility: | |
tree -L 2 . | |
#Copy NGINX manual page to /usr/share/man/man8/ directory: | |
sudo cp ~/nginx-1.16.1/man/nginx.8 /usr/share/man/man8 | |
sudo gzip /usr/share/man/man8/nginx.8 | |
ls /usr/share/man/man8/ | grep nginx.8.gz | |
# Check that Man page for NGINX is working: | |
man nginx | |
#For help, you can see full list of up-to-date NGINX compile time options by running: | |
./configure --help | |
# To see want core modules can be build as dynamic run: | |
./configure --help | grep -F =dynamic | |
#Configure, compile and install NGINX: | |
./configure --prefix=/etc/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 \ | |
--pid-path=/var/run/nginx.pid \ | |
--lock-path=/var/run/nginx.lock \ | |
--user=nginx \ | |
--group=nginx \ | |
--build=Ubuntu \ | |
--builddir=nginx-1.16.1 \ | |
--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_modules_path=/usr/share/perl/5.26.1 \ | |
--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.42 \ | |
--with-pcre-jit \ | |
--with-zlib=../zlib-1.2.11 \ | |
--with-openssl=../openssl-1.1.0h \ | |
--with-openssl-opt=no-nextprotoneg \ | |
--with-debug | |
make | |
sudo make install | |
#After building NGINX, navigate to home (~) directory: | |
cd ~ | |
#Symlink /usr/lib/nginx/modules to /etc/nginx/modules directory. etc/nginx/modules is a standard place for NGINX modules: | |
sudo ln -s /usr/lib/nginx/modules /etc/nginx/modules | |
#Now Check the version | |
nginx -V | |
or | |
sudo nginx -V | |
sudo nano /etc/systemd/system/nginx.service | |
[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 | |
sudo systemctl daemon-reload | |
sudo systemctl enable nginx.service | |
sudo systemctl start nginx.service |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment