1

Update Java in Linux Ubuntu

Tired of the browser pop-up window asking you to update Java ?

Yes, and we should do it specially because of the usual security concerns.
I’ve done this with Ubuntu 13.04 and 12.04 LTS.

Go to the Java download page and get your “Linux” or “Linux x64” version.

I got the x64 one.

Let’s unpack it. I already have /opt/java/64. You may have a different place.

$ cd /opt/java/64/
 
$ sudo tar zxvf ~biafra/Downloads/jre-7u25-linux-x64.tar.gz

Now update Ubuntu configuration with the new Java options

$ sudo update-alternatives --install "/usr/bin/java" "java" "/opt/java/64/jre1.7.0_25/bin/java" 1
$ sudo update-alternatives --install "/usr/bin/javaws" "javaws" "/opt/java/64/jre1.7.0_25/bin/javaws" 1
 
$ sudo update-alternatives --install "/usr/lib/mozilla/plugins/libjavaplugin.so" "mozilla-javaplugin.so" "/opt/java/64/jre1.7.0_25/lib/amd64/libnpjp2.so" 1

Let’s force Ubuntu to use the new update

$ sudo update-alternatives --config java
There are 2 choices for the alternative java (providing /usr/bin/java).
 
  Selection    Path                               Priority   Status
------------------------------------------------------------
* 0            /opt/java/64/jre1.7.0_21/bin/java   2000      auto mode
  1            /opt/java/64/jre1.7.0_21/bin/java   2000      manual mode
  2            /opt/java/64/jre1.7.0_25/bin/java   1         manual mode
 
Press enter to keep the current choice[*], or type selection number: 2
update-alternatives: using /opt/java/64/jre1.7.0_25/bin/java to provide /usr/bin/java (java) in manual mode

Done!

Warning! You may think that everything is fine now but there’s a bug in the new update. If you try to open a page with a Java application you may be redirected to java.com!

I used this workaround:

$ rm ~/.java/deployment/config.cache

Go to the page which need Java and it will work again as expected.

Update 2013.10.18: Depending on your browser you may have to update your default java plugin with

$ sudo update-alternatives --config mozilla-javaplugin.so

or

$ sudo update-alternatives --config firefox-javaplugin.so

3

Install HP Support Software in your Ubuntu Server

UPDATE: site changed from hp.com to hpe.com. This still works for 14.04 and 16.04 ! Just change the precise down there to trusty or xenial

We have some HP Proliant DL rack servers with Ubuntu 12.04 LTS. Knowing HP officially supports Ubuntu distributions we may install their management software to help with inventory and monitoring.

What to Install

We need to add the HP Support Software repository to every system.

Add the following line

deb http://downloads.linux.hpe.com/SDR/downloads/MCP/ubuntu precise current/non-free

to a new file under aptitude sources directory

$ sudo vi /etc/apt/sources.list.d/hp-proliant-support-pack.list

Please do a sudo apt-get update

Then install all these packages.

$ sudo apt-get install hpsmh hp-snmp-agents hp-smh-templates hponcfg hp-health hpacucli

Depending on what you already have installed apt may install other packages or tell you some suggestions.

Reading package lists... Done
Building dependency tree       
Reading state information... Done
The following extra packages will be installed:
  binutils libperl5.14 libsensors4 libsnmp-base libsnmp15 libssl0.9.8 libxslt1.1 snmpd
  xsltproc
Suggested packages:
  binutils-doc lm-sensors snmp-mibs-downloader
The following NEW packages will be installed:
  binutils hp-health hp-smh-templates hp-snmp-agents hpacucli hponcfg hpsmh libperl5.14
  libsensors4 libsnmp-base libsnmp15 libssl0.9.8 libxslt1.1 snmpd xsltproc
0 upgraded, 15 newly installed, 0 to remove and 2 not upgraded.
Need to get 33.3 MB of archives.
After this operation, 106 MB of additional disk space will be used.
Do you want to continue [Y/n]? 
WARNING: The following packages cannot be authenticated!
  hp-health hp-snmp-agents hpsmh hp-smh-templates hpacucli hponcfg
Install these packages without verification [y/N]?

If you are using snmpd you may like to read a previous note from me.

Final configurations

Along the installation of those packages you may have been warned:

WARNING:hp-snmp-agents is not configured.
You must type '/sbin/hpsnmpconfig' as 'root' user to configure agents.

It’s time to run it now.

Opening your browser with http://servername:2381/ let’s you see the HP System Management Homepage

Please edit /opt/hp/hpsmh/conf/smhpd.xml and restart hpsmhd so you control whom can access.

$ sudo service hpsmhd restart

Finally

Well, now browse through each package man pages to learn features and configuration tweaks. Don’t forget HP maintains a web presence to Ubuntu support

4

How to get the original IP address in Apache2 behind Nginx

Nginx as a reverse proxy for Apache

A traditional setup is having Nginx as a frontend and then running Apache through reverse proxy. The Apache logs become full of just a single IP address, the accesses from the Nginx server – usually 127.0.0.1 if you are running both on the same server.

No more GeoIP decisions on the backend or any other feature by remote address.

But we know that Nginx passes along the original client IP address on a HTTP header named X-Forwarded-For to the backend server. It would be awesome if Apache could deal with that,

Have no fear, Reverse Proxy Add Forward is here!

Fortunately there is already a module that injects the IP on a special header to the HTTP request to Apache: mod_rpaf

The installation couldn’t be more simple than

$ sudo apt-get install libapache2-mod-rpaf

It will enabled it automatically

/etc/apache2/mods-enabled/rpaf.conf
/etc/apache2/mods-enabled/rpaf.load

In Nginx I usually include /etc/nginx/proxy.conf in my configuration. It already has these lines to help that everything works easily

proxy_set_header    Host            $host;
proxy_set_header    X-Real-IP       $remote_addr;
proxy_set_header    X-Forwarded-For $proxy_add_x_forwarded_for;

Just restart the Apache server

$ sudo service apache2 restart

But there’s a problem

Unfortunately it won’t work if you are using Ubuntu 12.04.

mod_rpaf is not working on Precise !

There is a bug with the package that is known to Canonical since last December as you can see in the bug track. Being a LTS version I don’t understand this attitude from them.

$ cat /etc/apache2/mods-enabled/rpaf.conf 
<IfModule mod_rpaf.c>
RPAFenable On
RPAFsethostname On
RPAFproxy_ips 127.0.0.1 ::1
</IfModule>

And the problem is that it is originally named mod_rpaf-2.0.c.

$ strings /usr/lib/apache2/modules/mod_rpaf.so | grep mod_rpaf
mod_rpaf.so
mod_rpaf-2.0.c
Enable mod_rpaf
Let mod_rpaf set the hostname from X-Host header and update vhosts

Just edit the first line of /etc/apache2/mods-enabled/rpaf.conf and change it to

<IfModule rpaf_module>

Restart again the Apache2 server and you will start to get all those remote IPs on your log files.

Conclusion

If it was not for the known bug this post could have been just one line to install mod_rpaf

:-)