Install latest Nginx version from source – Debian 10 (Buster)

by | Jul 13, 2022 | Debian Buster (10)

This article shows you how to install Nginx version 1.23 (at the time of writing this article) on a RaspberryPi running Debian 10 (Buster). This scenario might arise as Debian 10 comes pre-packaged with version 1.14 and if you want to upgrade, the only way around is, to compile from source to get to the latest version.

First start off by installing the required utils and libraries that will be required for compiling from source

# sudo apt-get install curl build-essential make gcc libpcre3 libpcre3-dev libpcre++-dev zlib1g-dev libbz2-dev libxslt1-dev libxml2-dev libgeoip-dev libgoogle-perftools-dev libgd-dev libperl-dev libssl-dev libcurl4-openssl-dev

Now download the latest Nginx package using wget

# sudo wget http://nginx.org/download/nginx-1.23.0.tar.gz

Now untar the file and cd into the directory

# sudo tar xvf nginx-1.23.0.tar.gz && cd nginx-1.23.0/

Now configure the options for Nginx. You can include or exclude options based on your prefrences.

./configure \
--prefix=/etc/nginx                                        \
--sbin-path=/usr/sbin/nginx                                \
--conf-path=/etc/nginx/nginx.conf                          \
--error-log-path=/var/log/nginx/error.log                  \
--http-log-path=/var/log/nginx/access.log                  \
--pid-path=/var/run/nginx.pid                              \
--lock-path=/var/run/nginx.lock                            \
--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           \
--user=nginx                                               \
--group=nginx                                              \
--with-http_ssl_module                                     \
--with-http_realip_module                                  \
--with-http_addition_module                                \
--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_random_index_module                            \
--with-http_secure_link_module                             \
--with-http_stub_status_module                             \
--with-http_auth_request_module                            \
--with-mail                                                \
--with-mail_ssl_module                                     \
--with-file-aio                                            \
--with-http_v2_module                                      \
--with-threads                                             \
--with-stream                                              \
--with-stream_ssl_module                                   \
--with-http_slice_module

Copy the above code in its entirety and paste it in the terminal, then hit Enter to start the configuration.

Now start the compilation by using Make

# sudo make

Now install it on the RaspberryPi

# sudo make install

Now create the required User and Group

# sudo useradd -r nginx

Now create a tmp file for Nginx process

# sudo mkdir /var/cache/nginx && sudo touch /var/cache/nginx/client_temp

Now create a systemd service for Nginx. Create a file for it

# sudo vi /lib/systemd/system/nginx.service

Now copy the following code into it.

[Unit]
Description=The NGINX HTTP and reverse proxy server
After=syslog.target network.target remote-fs.target nss-lookup.target

[Service]
Type=forking
PIDFile=/run/nginx.pid
ExecStartPre=/usr/sbin/nginx -t
ExecStart=/usr/sbin/nginx
ExecReload=/bin/kill -s HUP $MAINPID
ExecStop=/bin/kill -s QUIT $MAINPID
PrivateTmp=true

[Install]
WantedBy=multi-user.target

Now kill the Nginx process if any, and then restart the service and enable it at runtime

sudo pkill nginx
sudo systemctl start nginx
sudo systemctl status nginx
sudo systemctl enable nginx

Now verify the installed version and it should show up as nginx 1.23

# nginx -v

Output

# nginx -v
nginx version: nginx/1.23.0

That’s about it and the latest Nginx should be up and running now. If you encounter any issues, please get in touch via Contact Us and we will try our best to resolve.

Related Articles….