Recent Updates Toggle Comment Threads | Keyboard Shortcuts

  • Jay Versluis 7:48 pm on March 5, 2015 Permalink | Reply
    Tags: , Jekyll   

    Categories: Linux ( 61 )

    Getting started with Jekyll on CentOS 7 

    jekyll-iconIt’s not quite as easy to get up and running with Jekyll as the Quick Start Guide makes it sound. But it’s not super difficult either – if explained from one human to another.

    Here’s how I got Jekyll working on a vanilla CentOS 7 instance.

    Installing some necessary packages

    Before we can install Jekyll using Rubygems, we need a few packages which aren’t with us by default. One comes from the Fedora EPEL repository, so let’s enable that first:

    yum install epel-release
    

    I love how easy this has become since CentOS 7! Next, some packages. We’ll need Ruby and the developer extensions. We also need a web server, so I’ll choose Apache – but I understand that others work just as well.

    The installation guide doesn’t mention it, but it is actually mandatory to have a JavaScript runtime present, as mentioned in this project (which I guess Jekyll relies upon): https://github.com/sstephenson/execjs. Let’s choose NodeJS as its available from EPEL.

    What this boils down to are the following packages:

    yum install ruby ruby-devel nodejs httpd
    

    Great! Now that Ruby is working, let’s install Jekyll via Rubygems:

    gem install jekyll
    

    This could take a moment, be patient. When it’s finished, let’s put Jekyll to work.

    Creating and previewing a test site

    Let’s call our new test site “test”. I’m assuming you’re in your home directory from which usually no web files shall ever be served – but thanks to Jekyll we can make that happen for local testing purposes. The following command will create a brand new site in the current directory:

    jekyll new test
    
    New jekyll site installed in /root/test.
    

    Excellent! But how do we get to see it? Well Jekyll has created a directory called “test” for us. Let’s enter it and preview the site:

    cd test
    jekyll serve
    
    Configuration file: /root/test/_config.yml
    Source: /root/test
    Destination: /root/test/_site
    Generating…
    done.
    Auto-regeneration: enabled for ‘/root/test’
    Configuration file: /root/test/_config.yml
    Server address: http://127.0.0.1:4000/
    Server running… press ctrl-c to stop.
    

    What Jekyll is trying to say is that IF we are building this on a system with a desktop environment, we could open a web browser and enter http://localhost:4000 now to preview the site. Jekyll spawns a web server on port 4000 so that we can see any changes we’ve made since last time without affecting a live site.

    Sadly this approach doesn’t work on remote servers though, at least not for me: port 4000 on a remote server simply did not respond. Regardless, on the local sever it was working just fine, and we should see a picture like this:

    Screen Shot 2015-03-05 at 19.40.06

    That’s a good start – let’s put the site live so that our web server can show it to the world!

    Building the site

    Press CTRL-C to stop the preview serving procedure and ask Jekyll to create this site in our default web directory. In CentOS that’s /var/www/html. Mine is empty so I’ll create the site there using

    jekyll build --destination /var/www/html
    
    Configuration file: /root/test/_config.yml
    Source: /root/test
    Destination: /var/www/html
    Generating…
    done.
    Auto-regeneration: disabled. Use –watch to enable.
    

    Nicely done! Now let’s surf to http://localhost (without the 4000 at the end), and the local machine should see this content served up fresh just like any other website. Remote computers should use either the IP address or a domain resolving to it (say http://12.34.56.78).

    Now that you know how it works, enjoy using Jekyll!

     
  • Jay Versluis 11:48 am on March 5, 2015 Permalink | Reply
    Tags: Android, Nook   

    Categories: Linux ( 61 )

    How to mount EXT4 partitions on Android Jelly Bean 

    Jelly-Bean-LogoI was racking my brains over how to mount an SD card formatted with anything other than FAT32 on my Android device. Jelly Bean and Kit Kat automatically mount FAT32 partitions, but they seem to ignore native Linux file systems – which Android clearly understands.

    Apparently there’s a $1.54 app on the Play Store that can auto-mount cards (called EzyMount), but there is a way to do this for free: namely the old fashioned manual way.

    All we need is root access to the device and a Terminal Emulator (available from the Play Store).

    In this example I’m using /sdcard as my mount point, but you can of course mount that card anywhere you like. On my Nook Tablet, the standard mount point for the SD card is /storage/sdcard1, but this differs from device to device of course.

    To mount the card, we’ll use the mount command:

    mount -t ext4 /dev/block/mmcblk1p1 /sdcard
    

    We need to specify the partition format with -t (for example, ext4, ext3, ext2), followed by the partition we want to mount, followed by the mount point. On my Nook Tablet for example, the SD card device itself is /dev/block/mmcblk1, and the first partition in it is mmcblk1p1.

    To figure out what a device is called can use

    ls /dev/block
    

    Run this command before and after inserting your storage device. Watch what changes: the added device will be your SD card or USB stick.

    Why do you need EXT4? Why not just use FAT32?

    I need my files to be larger than the 4GB maximum file size imposed by FAT32. I’m using Anton Skshidlevsky’s amazing Linux Deploy to install fully fledged versions of various Linux distributions on my device. These don’t replace Android, but instead run side by side with Android in a chromed environment.

    Linux Deploy creates ISO images on the SD card which represent a full Linux installation (for example, Debian, Fedora, Ubuntu – anything that runs on your architecture). To be able to use the full size of an SD card, and to make the self-contained file system access more data, those ISO files can be as large as the SD card – even larger: Linux Deploy uses self-expanding ISO images, but you can only define partition sizes larger than 4GB if you have an EXT type file system on the card.

    In a nutshell: Bigger is better.

     
  • Jay Versluis 11:11 am on March 3, 2015 Permalink | Reply
    Tags: , Debian, Fedora, Ubuntu   

    Categories: Linux ( 61 )

    The Debian Experience: Cheat Sheet for CentOS and Fedora users 

    DebianI’ve just installed a LAMP stack on my Nook Tablet using Debian. However I’ve been using CentOS since 2008 and I’m so used to how things are done there that it was a bit of a culture shock doing relatively simple things “on the other side”. It’s like a country whose language you don’t speak well enough.

    Here are a few pointers for how to so these simple things in Debian and Ubuntu, for CentOS and Fedora Users:

    Installing Packages

    While I’m used to yum and it’s super easy search and install options, its counterpart apt is very different. Searching for packages is done with

    apt-cache search package

    instead of yum list. Likewise, installing a package is done with

    apt-get install package

    I believe the cache is not created automatically, so from time to time (or before an update/install operation) we need to run

    apt-get update

    To update all packages (equivalent to yum update), we have to run

    apt-get upgrade

    There are other front ends available which I have not explored yet. aptitude is for the command line and appears to have a similar simplified syntax to yum. synaptic is for GNOME like environments.

     

    LAMP Stack

    Apache is called httpd on CentOS, but it’s called apache2 on Debian. Its system user does not run as apache:apache, but as www-data:www-data.

    The web root directory is not in /var/www/html but instead in /var/www. File ownership should be tweaked to the above user in this directory. SELinux is not enabled by default.

    The Apache config file is not in /etc/httpd/httpd.conf but in /etc/apache2/apache2.conf. The content however is the same, except for the system user which is defined in envvars in the same directory.

    PHP is not just called php, but instead it’s php5 on Debian. This is true for all derivatives, such as

    • php5
    • php5-cli
    • php5-mysql
    • php5-gd

    MySQL is still MySQL in Debian Wheezy, and not MariaDB (yet).

     

    Starting and stopping services on boot

    chkconfig does not work on Debian. Instead we can use a script called update-rc.d. Here’s how to enable something at boot:

    update-rc.d apache2 defaults

    And to disable something:

    update-rc.d -f apache2 remove
     
  • Jay Versluis 2:51 pm on March 2, 2015 Permalink | Reply
    Tags: Darwin   

    Categories: Mac OS X ( 12 )

    How to show uptime and reboot history on your Mac the command line 

    Hexley_the_Platypus.svgUsually the top command shows you how long a Linux system is up and running – but sadly not on OS X, or Darwin more specifically.

    There is however a command line tool with the descriptive name uptime which will tell you how long your Mac has been running, precisely the line that’s missing from top on OS X:

    uptime
    
    14:37  up 14 days, 38 mins, 4 users, load averages: 1.39 1.42 1.38
    

    If you have the OS X Server App installed, it will show you this value in the GUI on the Overview screen too.

    Reboot History

    Sometimes it’s also nice to know when your Mac was last rebooted, especially if it’s a remote system you don’t often get to talk to. There’s another handy command which will show you just that: last reboot:

    last reboot
    
    reboot    ~                         Mon Feb 16 09:24 
    reboot    ~                         Sun Feb 15 09:07 
    reboot    ~                         Sat Feb 14 11:32 
    reboot    ~                         Fri Feb 13 09:27 
    reboot    ~                         Thu Feb 12 16:00 
    reboot    ~                         Wed Feb 11 17:23 
    reboot    ~                         Tue Feb 10 08:56 
    reboot    ~                         Sat Feb  7 12:29 
    reboot    ~                         Fri Feb  6 16:42 
    reboot    ~                         Fri Feb  6 16:22 
    reboot    ~                         Fri Feb  6 13:26 
    reboot    ~                         Fri Feb  6 11:04 
    
    wtmp begins Fri Feb  6 11:04 
    

    Further reading and kudos:

     
  • Jay Versluis 7:23 pm on February 25, 2015 Permalink | Reply  
    Categories: Linux, Mac OS X, Windows ( 61 )

    How to find your CPU details from the command line 

    It’s often necessary to know what the exact type of CPU that’s installed on your system. For example, you may need to know if you’re dealing with a dual core or quad core system, or a 32/64 bit system. Only the CPU can tell you this.

    Here’s how to find out the string you need for further investigation.

     

    Windows

    From the command line, execute the wmic command with the following parameters:

    wmic cpu get name
    
    Name
    Intel(R) Core(TM) i7-3615QM CPU @ 2.30GHz
    

    Thanks to Jonathan @ Next of Windows for this tip!

    Windows also gives you an accurate result via the GUI: open Windows Explorer and head over to Computer – Properties:

    Screen Shot 2015-02-25 at 19.04.01

    Mac OS X

    On the Mac you won’t get a very accurate result from the Apple Icon – About this Mac. It will tell you what CPU type you’re using, but not the exact model number.

    To find that out, head over to Applications – Utilities – Terminal and enter the following command:

    sysctl -n machdep.cpu.brand_string
    
    Intel(R) Core(TM) i7-3615QM CPU @ 2.30GHz
    

    There. Much better than this:

    Screen Shot 2015-02-25 at 19.15.09

    Linux

    You can take a look at the /proc/cpuinfo file which holds a plethora of information about your system’s CPU. So much in fact that it’s difficult to find what you’re looking for. Filtering the output of this file for ‘model name’ gives you an exact match:

    cat /proc/cpuinfo | grep ‘model name’
    
    model name : Intel(R) Atom(TM) CPU N270   @ 1.60GHz
    

     

    Where can I find more information about my CPU?

    Google is of course your friend when trying to find out more information about your processor, but there are two tools provided by Intel and AMD that may also be of help. Intel’s ARK website is particularly helpful:

     
  • Jay Versluis 3:57 pm on February 23, 2015 Permalink | Reply
    Tags: ,   

    Categories: Linux ( 61 )

    How to find which package provides a command in yum 

    CentOS-LogoSometimes you know you need a package, but when you try to install it with yum you’ll get a message like “No matches found”. Yet you’re sure the package exists because you’ve used it before.

    This can happen if the package in question is part of a set which installs multiple packages. The net-tools package springs to mind.

    yum has a great option called whatprovides with which you can query what package you need to install to use a command. Let’s try it out!

    Say I wanted to install mkfs.vfat which is not installed by default in CentOS. Simply trying to install it won’t work:

    yum install mkfs.vfat
    
    Loaded plugins: fastestmirror
    Loading mirror speeds from cached hostfile
     * base: mirrors.advancedhosters.com
     * extras: centos.mirrors.tds.net
     * updates: centos.mirrors.tds.net
    No package mkfs.vfat available.
    Error: Nothing to do
    

    Of course it won’t. But I can ask yum what provides this package:

    yum whatprovides mkfs.vfat
    
    Loaded plugins: fastestmirror
    Loading mirror speeds from cached hostfile
     * base: mirrors.advancedhosters.com
     * extras: ftp.usf.edu
     * updates: centos.mirrors.tds.net
    dosfstools-3.0.20-9.el7.x86_64 : Utilities for making and checking MS-DOS FAT
                                   : filesystems on Linux
    Repo        : base
    Matched from:
    Filename    : /usr/sbin/mkfs.vfat
    
    
    
    dosfstools-3.0.20-9.el7.x86_64 : Utilities for making and checking MS-DOS FAT
                                   : filesystems on Linux
    Repo        : @base
    Matched from:
    Filename    : /usr/sbin/mkfs.vfat
    

    Well fantastic! The package I’m looking for is called dosfstools. Knowing that, I can simply use yum install dosfstools, and a few moments later mkfs.vfat will work as expected.

    Thanks, yum!

     
  • Jay Versluis 10:17 am on February 17, 2015 Permalink | Reply
    Tags: , squid   

    Categories: Linux ( 61 )

    How to view local websites on your iPad with Squid 

    squidI like developing and testing websites on my local network before they go live. On both Mac and PC it’s easy to tweak the /etc/hosts file so that the URL doesn’t point to a numeric IP, but instead to http://yourserver (or something equally catchy).

    On iOS devices we can’t tweak that file unless we deal with the highly unethical practice of jailbreaking. Turns out there is an easier way to surf local websites on mobile devices, simply by using a Proxy Server such as Squid.

    A Proxy Server is often used as a caching server or to disguise where a request is coming from. For example, surfers use proxies to pretend they’re visiting from a different country, or ISPs  use proxies to speed up data delivery in local areas. In simple terms, a proxy is fetching data on our behalf. Then we talk to the proxy and get the data from him. Think of a Proxy Server as a middle man in a network transaction.

    To surf local websites on an iPad or iPhone, we can connect to our WiFi network with a proxy on a machine on which we CAN tweak the /etc/hosts file. Let me show you how this works.

    For this example I’m using a development server on my local network. It’s a simple LAMP Stack running CentOS.

     

    Installing and configuring Squid

    We’ll install Squid on the development server. Websites are accessible via http://localhost but also as something more swish when the /etc/hosts file is tweaked, for example http://yourserver.

    Squid is available via yum, and installation is simple:

    yum install squid
    
    chkconfig squid on
    

    The second line will start Squid on every server restart, just in case.

    Squid should work out of the box on port 3128, but if you ever need to tweak this, you can do so in /etc/squid/squid.conf.

     

    Configuring the iPad Connection

    When you connect your iOS device to your local WiFi network it will do this without a Proxy Server by default. We’ll change this under Settings – WiFi, then tap the little info icon next to your active connection. It goes without saying that the development server needs to be on the same network as your iPad.

    At the bottom of this page, under “http proxy”, select manual and add your development/proxy server’s numeric IP, and 3128 under Port. Leave authentication off. It should look like this:

    image-2

     

    Now any tweaked URL that works on your development server will work on the iOS Device too: visit http://yourserver to verify this.

    Should Safari give you a problem, maybe due to its spurious caching technology, head over to Settings – Safari – Clear History and Website Data.

     

    Notes

    Squid will cache every request you make on your iOS device as long as your WiFi connection uses the proxy setting. Chances are that your development server isn’t going to deliver results as fast as non-cahced results would come in from your router – unless you surf the same slow website over and over.

    Also, Squid will leave a record of every request that has been made in /var/log/squid/access.log. If you’re using such a setup in your office, you may need to tell users on the network that their requests will be logged.

    So if you’re concerned about any of these aspects, simply switch the proxy off in your WiFi settings.

     

     
  • Jay Versluis 6:24 pm on February 16, 2015 Permalink | Reply  
    Categories: Windows ( 11 )

    Where is the /etc/hosts file in Windows 

    Windows IconIt’s in

    • C:\Windows\System32\drivers\etc

    You can edit it with Notepad with Administrator rights.

    Works in Windows 7 and Windows 8.1.

     
  • Jay Versluis 10:06 am on February 16, 2015 Permalink | Reply
    Tags:   

    Categories: WordPress ( 108 )

    How to block Spam Trackbacks in WordPress 

    wordpress-iconTrackbacks are a great way for other blogs to notify your blog about a link back to you. Many blogging platforms support this feature, including WordPress.

    But sometimes it’s very obvious that those trackbacks aren’t coming from a legitimate source, especially when you get several dozen of them every day from the same source.

    No one loves you that much.

    The most recent two examples are semalt.com and buttons-for-website.com, the latter can’t even properly mix a plural with a singular. But that’s not for here.

    To make sure those trackbacks don’t bother our WordPress site anymore, we can add a bit of code to your re-reite rule file. If your host is using Apache then this will be your .htaccess file, famously in use for Pretty Permalinks and some cache plugins.

    A typical .htaccess file is either empty or contains a block of code courtesy of WordPress. It’s a simple text file. If we add this little snippet to the bottom of the file, friendly trackbacks from semalt.com will no longer notify our website:

    # Block Semalt Trackbacks
    RewriteEngine On
    RewriteCond %{HTTP_REFERER} semalt\.com
    RewriteRule ^.* - [F,L]
    

    This rather strange looking code is a rewrite rule. It says “if you encounter a link or a visitor from semalt.com, then forbid them access to anywhere on this site”.

    Notice the backslash, followed by the domain extension in semalt\.com. This is necessary to escape the dot character, otherwise Apache would interpret it as an instruction. In our other example, buttons-for-website.com, we need to deal with the slashes in the domain name in the same way:

    # Block buttons-forwebsite Trackbacks
    RewriteEngine On
    RewriteCond %{HTTP_REFERER} buttons\-for\-website\.com
    RewriteRule ^.* - [F,L]
    

    You can stack these rules in your .htaccess file and add as many as you like for your very own Trackback Spammers. Simply replace the URL in the code with your own, escaping special characters as seen above (a special character is anything that isn’t “a to z” or “0 to 9″).

    Note that these rules do not prevent such websites from linking to you. However as soon as someone from the offending website clicks a link to your website, they will be denied access. On the other hand, when the same visitor would type in your URL, or come from a different website, they will be able so see your content without problems.

     
  • Jay Versluis 10:06 am on February 15, 2015 Permalink | Reply
    Tags: ,   

    Categories: Linux ( 61 )

    How to enable automatic logins in CentOS and GNOME 

    CentOS-LogoI was researching auto login options for CentOS today. I thought those would come in handy when GNOME is used as a standard desktop, so that the computer starts straight into the desktop environment without the need to provide a password.

    It’s also a handy feature to have if the machine lives in another room and needs GNOME to login to the wireless network when I issue a remote restart.

    Turns out there are two parts to the puzzle: providing auto logins and removing a pesky Keyring Dialogue that appears to come up when those are enabled. Let’s tackle both of them here.

    I’m using CentOS 6.6 with GNOME here, but the same principle also works in CentOS 7.

    Enabling Auto Logins

    Head over to the trusty command line and edit /etc/gdm/custom.conf. The file already contains several sections, all of which are empty by default.

    In the daemon section, add the following values (replacing youruser with your actual user name):

    # GDM configuration storage
    
    [daemon]
    AutomaticLoginEnable = true
    AutomaticLogin = youruser
    
    [security]
    
    [xdmcp]
    
    [greeter]
    
    [chooser]
    
    [debug]
    

    Thanks to Keith Wright on the CentOS Forum for this tip.

    Now when you restart your system, youruser is automatically logged in when GNOME starts.

    Disabling the Keyring Dialogue

    However, you may experience a Keyring Dialogue which will ask for your root password every time after a restart. This isn’t much better than the login screen. This may or may not happen, depending on your current configuration:

    Photo Feb 15, 8 47 34 AM

    One article I found suggested to head over to System – Preferences – Startup Applications and simply remove the Keyring Daemon from the list. Turns out this doesn’t actually make a difference, so don’t do that (although it doesn’t seem to have an adverse effect either):

    Remove-Keyring

    The real solution comes courtesy of Jim and iiSeymour: http://superuser.com/questions/43132/why-do-i-need-to-enter-a-password-for-the-default-keyring-to-unlock

    All we have to do is

    – head over to the Network Connections Icon at the top of the screen
    – and right-click it
    – select Edit Connections…
    – pick your current wireless connection and select Edit
    – provide the root password (only necessary this once)
    – check the tick box Available to all users

    Photo Feb 15, 8 59 55 AM

    Photo Feb 15, 9 00 10 AM

    Photo Feb 15, 9 00 30 AM

    In CentOS 7, choose the little gear icon to bring up a window. You can find the available to all users tick box in the Identity section on the left hand side.

    And that’s it! On subsequent logins, GNOME will now start with youruser already logged in and your wireless network connected.

    Wait! My system boots into the Command Line interface, even though I have GNOME installed. What gives?

    You can tell your system in which mode to start. To do this, edit your /etc/inittab file:

    // change this line 
    id:3:initdefault:
    
    // to 
    id:5:initdefault:
    
     
c
compose new post
j
next post/next comment
k
previous post/previous comment
r
reply
e
edit
o
show/hide comments
t
go to top
l
go to login
h
show/hide help
shift + esc
cancel