How to upgrade nginx to latest on Amazon Linux AMI 2018.03? - nginx

I have an Elastic Beanstalk web application using Amazon Linux AMI that requires the latest build of nginx. The nginx build that comes with AMI version 2018.03 is version 1.12.1, whereas the latest stable build on nginx.org is 1.15.4. Only 1.12.1 is available from Amazon's yum repositories. The preferred strategy we would like to use would be to create a custom RPM and pull that from an endpoint and install. How would I go about creating a custom RPM of nginx that would run on Amazon Linux? Or is there a pre-built source that I could take advantage of?

It turns out the best way to do this is to create a custom AMI. You can find instructions on how to create a custom AMI here:
https://docs.aws.amazon.com/elasticbeanstalk/latest/dg/using-features.customenv.html
And how to install from source here:
How to install nginx 1.9.15 on amazon linux disto
If you want to swap out a running instance try here:
https://www.photographerstechsupport.com/tutorials/upgrade-running-nginx-amazon-linux/
I personally got it working with a mix of the code from those two sources. I also had to yum install gcc to get make to work, and had to manually add the folder /var/cache/nginx before the nginx service would work. Happy upgrading!

Related

Replicating Homestead Environment on Ubuntu 14.04.5

I am currently working on a laravel project on my MAC using homestead environment. Am i able to replicate a homestead environment on Ubuntu 14.04.5?
If you want to replicate the homestead environment you need to install this softwares as listed in the docs:
Git
PHP 7.1
Nginx
MySQL
MariaDB
Sqlite3
Postgres
Composer
Node (With Yarn, Bower, Grunt, and Gulp)
Redis
Memcached
Beanstalkd
Mailhog
ngrok
Probably you do not need all of them so remove what you do not use.
To install each software you can try so search in the apt repository and search for a guide con configure each of them.
For a LEMP stack you can try this: https://www.digitalocean.com/community/tutorials/how-to-install-linux-nginx-mysql-php-lemp-stack-in-ubuntu-16-04
Homestead uses a script called settler that it uses to provision the environment you use in Homestead, the script can be found here:
https://github.com/laravel/settler/blob/master/scripts/provision.sh

Install Extensible Service Proxy on GCE/RHEL7

Quickstart for Endpoints on Compute Engine says
you need to run the Extensible Service Proxy before sending requests
to the API
But it also says
This quickstart works only on Debian. Make sure you create a VM that
runs Debian.
I have an existing GCE VM instance running Red Hat EL 7 that I'm adding this Endpoint to. Where are instructions for installing and running Extensible Service Proxy on it?
FWIW I examined the contents of the Debian package. It appears to be just nginx with custom configs and some extra scripts. If there's no RPM or other way of installing ESP on RHEL7, can I just manually install the contents extracted from the .deb package?
Yes, it should work (not tested). nginx in the .deb package is a statically compiled binary with a custom module that runs fine standalone. Please make sure to place the remaining files (config templates, root CA certificates, start-up script) in the same directories as in the .deb package.
The instructions for installing the ESP are implied in the instructions for installing the Cloud SDK on Red Hat and CentOS, since the endpoints-runtime RPM is available from the same repo as is the SDK.
$ sudo tee -a /etc/yum.repos.d/google-cloud-sdk.repo << EOM
[google-cloud-sdk]
name=Google Cloud SDK
baseurl=https://packages.cloud.google.com/yum/repos/cloud-sdk-el7-x86_64
enabled=1
gpgcheck=1
repo_gpgcheck=1
gpgkey=https://packages.cloud.google.com/yum/doc/yum-key.gpg
https://packages.cloud.google.com/yum/doc/rpm-package-key.gpg
EOM
$
$ sudo yum install google-cloud-sdk
Note that the ESP installs as nginx, with supporting scripts and config files, that will replace any existing nginx and any files with the same name, which will overwrite any existing nginx functionality (like proxy, cache etc). It might be best to archive any host-specific nginx configs first, then install ESP, then merge old configs into the new ones installed by yum.

Installing nginx + geoip with puppet

I'm currently using:
mod 'nginx', :git => 'https://github.com/puphpet/puppet-nginx.git'
with a customised puphpet file that loads nginx but the version we get installed does support
–with-http_geoip_module.
All of the posts on installing geoip functionality, suggest that the only way to get geoip support is to recompile nginx.
Search for compiling packages with puppet suggests it's not the best way forward. Is there anywhere I can get the pre-packaged nginx module that supports geoip?
I'm using ubuntu 12.04
You'll need to find a repo that has this module already added. If you find it, you can simply use that.
This one may be what you need: https://launchpad.net/~nicolas-zin/+archive/ubuntu/nginx
Puppet workflows that rely on compiling your own packages are actually commonplace. What's not a good idea is for Puppet to do the actual compiling.
Build and maintain your packages with whatever tool chain fits your needs best. Maintain a package repository, and use Puppet to configure your nodes to use your repo. Puppet can then install your custom packages just like any other.

amazon ec2 micro RHEL: how to install nginx or others?

I chose micro free RHEL6.4 instance with EC2/Amazon, when I login, I found there no gcc, which I can yum install it. and there no nginx to yum install ?
I must install gcc and develop tools and download nginx source code to install ? oh ,the free is only 30Gb one month?
Check the installation page inside nginx website

How to configure additional modules to nginx after installation?

I have installed Nginx in our redhat machine using rpm. Now we want to add nginx-rtmp module, but inorder to add new module as per the document i need to build it by downloading the tar ball. Does it mean that i have to remove the rpm and install it as per the document.
Ref: https://github.com/arut/nginx-rtmp-module/wiki/Getting-started-with-nginx-rtmp
./configure --add-module=/usr/build/nginx-rtmp-module
make
make install
With nginx 1.9.11, it's not necessary to recompile the server, as they added support for dynamic modules. Take a look here:
https://www.nginx.com/blog/dynamic-modules-nginx-1-9-11/
Unlike Apache, all modules, including the 3rd party modules, are going to be compiled into nginx. So every time you want to add a new module, you have to recompile nginx.
So yes, you have to install it as per the document. There is no much value of keeping 2 nginx runtimes on the same server any way. So you may also want to remove the previous nginx.
I had a similar problem where the auth-pam module broke after an upgrade. Here's what fixed it for me (debian stretch/sid, nginx 1.10.2):
apt install libnginx-mod-http-auth-pam
ln -s /usr/share/nginx/modules-available/mod-http-auth-pam.conf /etc/nginx/modules-enabled/50-mod-http-auth-pam.conf
The config file contains a single “load_module” directive which tells nginx to dynamically load the module on startup. As jekennedy mentioned, this would only apply to newer versions of nginx that support dynamic module loading.
Yes, you have to uninstall nginx (installed via rpm) and re-install it according to the mentioned document that is from source file. There are some disadvantages of installing nginx using source, like you cannot use nginx as a service. Here, you can find instructions to do same thing with all the functionalities you get while installing nginx using OS-respective packages.
Following the steps in this post from the nginx blog page called "Compilation of Dynamic Modules for NGINX Plus", i could compiled the RTMP módule, downloading the nginx-rtmp-module from Github and import it on my webserver.
Regards.

Resources