#!/bin/sh mem=$(LC_ALL=C free | awk '/Mem:/ {print $4}') swap=$(LC_ALL=C free | awk '/Swap:/ {print $3}') if [ $mem -lt $swap ]; then echo "ERROR: not enough RAM to write swap back, nothing done" >&2 exit 1 fi swapoff -a && swapon -a
#!/bin/sh mem=$(LC_ALL=C free | awk '/Mem:/ {print $4}') swap=$(LC_ALL=C free | awk '/Swap:/ {print $3}') if [ $mem -lt $swap ]; then echo "ERROR: not enough RAM to write swap back, nothing done" >&2 exit 1 fi swapoff -a && swapon -a
Recently I bought an SSL certificate for this blog from MegaSSLStore. My website is hosted on a FreeBSD machine and served by Nginx web server. In order to install the certificate on this machine, I downloaded from MegaSSLStore the certificate and CSR+private key and I copied them on my server in /usr/local/etc/nginx/ssl
# scp -P22 * root@razvantudorica.com:/usr/local/etc/nginx/ssl root@RTU001 /usr/local/etc/nginx/ssl # ls -lh total 32 -r-------- 1 root wheel 5.5K Dec 14 11:39 razvantudorica.com.ca-bundle -r-------- 1 root wheel 1.9K Dec 14 11:39 razvantudorica.com.crt -r-------- 1 root wheel 1.1K Dec 14 11:39 razvantudorica.com.csr -r-------- 1 root wheel 1.7K Dec 14 11:39 razvantudorica.com.key
Because I have an .crt certificate and also a ca-bundle I need to combine these two files in one certificate:
cd /usr/local/etc/nginx/ssl cat razvantudorica.com.crt razvantudorica.com.ca-bundle > razvantudorica.com-bundle.crt
After this, I changed the nginx website configuration file, in order to redirect all the traffic that is coming on http (port 80) on https (port 443).
Nowadays there are many professional solutions to monitor your application for the errors. Some web frameworks have even build-in tools or support plugins to catch the programming exceptions and act accordingly.
Anyway, I wanted just to build a simple proof of concept how to monitor the web server error file and, when an event occurs and the file is changed, the monitoring script should send out an email. To monitor the log file I used pyinotify python module. This is an implementation on top of inotify, offering an easy interface to interact with the changes of the filesystem.
Continue reading Monitor an error log with python and RabbitMQ
In my working environment I am connecting to the production server using a gateway where I have my public key but sometimes I need to copy files from/to production servers.
I could copy it first on the ssh gateway and after that in my machine, but I prefer to do it through an SSH tunnel.