RSS .92| RSS 2.0| ATOM 0.3
  • Home
  • About me
  • Imprint & Legal Stuff
  • Recommended
  •  

    How to install an Ubuntu based Web Server

    May 24th, 2009

    I recently upgraded my old VPS, which was running with Ubuntu 6.06, to a fresh new Hardy Heron version. That gave me the opportunity to make a clean installation and configuration and then transfer my websites to the new server.

    Hint: I did all the install and update stuff as root user. If you have another user with sudo rights, then apply a sudo before most of the commands here.

    Updating the Apt

    First step I did was updating the packages.

    apt-get update
    apt-get upgrade
    

    LAMP

    After that i installed the primary components, like Apache, PHP5 and MySQL:

    First the webserver itself:

    apt-get install apache2
    

    I installed additional Apache modules. An easy way to do that is to use a3enmod:

    a2enmod ssl
    a2enmod rewrite
    a2enmod suexec
    a2enmod include
    

    Just don’t forget to reload your apache afterwards:

    /etc/init.d/apache2 force-reload
    

    Afterwards install PHP5:

    apt-get install php5
    apt-get install php5-cli
    apt-get install php5-dev
    apt-get install php-pear
    

    Some more PHP5 modules are following later.

    PEAR is a package repository which enables you to install additional PHP package libraries.

    To make sure that my link to PEAR is up to date, I use the following command:

    pear channel-update pear.php.net
    

    Installing MySQL is rather simple:

    apt-get install mysql-client mysql-server libmysqlclient15-dev
    

    Afterwards you get asked to enter a MySQL root password. Make sure to keep that one safe!

    I say I need some more PHP5 modules, so here they come:

    apt-get install php5-gd
    apt-get install php5-mcrypt
    apt-get install php5-imagick
    apt-get install php5-curl
    apt-get install php5-xmlrpc php5-xsl
    apt-get install php5-mhash
    

    Additional tools

    To create statistics based on my webserver’s log files, I use awstats:

    apt-get install awstats
    

    Just make sure that the folder /usr/lib/cgi-bin is password protected (or move the file awstats.pl to a more secure location.

    Configuration of awstats is another topic, I don’t want to talk too much about right now. There is an example file in the folder /etc/awstats just digg through it :)

    To keep the server time up to date you can install ntp:

    apt-get install ntp ntpdate
    

    Now there is always the correct time on your server.

    Finally

    I did some more stuff but those are the basics to install on a fresh web server. Another hint: make sure your server is able to send mails to the outside world (maybe install another MTA, but make sure only the server itself can relay mails, unless you want to use the server as SMTP server as well).

    If you have anything to add to this howto, I am happy for every comment on it.


    Google AdWords API 2009 – Overview and First Thoughts

    May 19th, 2009

    Just recently Google made the new AdWords API 2009 sandbox and documentation available to the public. Some information about it is also in the AdWords API Blog.

    I have started to toy around with it. I have written a mayor part of the current AdWords API integration for the company I work for, so it’s best to be prepared for the mayor overhaul Google has done with this new API implementation. Here is a quick overview and some thoughts I have about it.

    Authentication

    Google seems to unify the use of their APIs with a common login interface: the Account Authentication API. You can make a HTTPS Post Request to the API and use your Google credentials to get an Auth token. This token then will be used to access the functionalities of the API.

    I think it is good to unify different kinds of API authentication into a single login service. I just hope that it is stable enough to endure all the load from not just one kind of service but every piece of Google API which will make use of it.

    Accessing the Sandbox

    I created some example codes (will publish some code in another article soon) to access the Google AdWords Sandbox. At first I had some difficulties because I don’t just use the examples from Google, I created my own kind of library to access the API. That lead to the assumption that I can always use the SOAP end url as namespace – which was wrong because the namespace for the request XML has to be

    https://adwords.google.com/api/adwords/cm/v200902

    while the actual xml request is being sent to

    https://adwords-sandbox.google.com/api/adwords/cm/v200902/....

    When sending the wrong namespace the API returns a server error, but no detailed error code about what kind of error occured. I hope Google will improve their error reporting there.

    Get & Mutate – the new methods of getting data and manipulating data

    Past versions of the AdWords API left the impression of a patchwork API. This time you basically have two functions:

    get

    Getting data is simple: just build an xml which contains all the parameters you need and send it to the API.

    Example:

    <get xmlns="https://adwords.google.com/api/adwords/cm/v200902">
     <selector>
      <StatsSelector>
       <campaignIds></campaignIds>
      </StatsSelector>
     </selector>
    </get>

    This piece of xml tells the API (assuming the header information with the AuthToken, sorry not posting that one here ;) ) to retrieve all the campaigns in the account. You can limit the campaigns by telling it to only include certain campaign IDs (filling the StatsSelecter/campaignIds node with subnodes containing the actual IDs).

    mutate

    Mutate is the method to create and manipulate data structures in the API.

    Example:

    <mutate xmlns="https://adwords.google.com/api/adwords/cm/v200902">
     <operations>
      <operator>ADD</operator>
      <operand>
       <name>Test Campaign - 1242726211</name>
       <status>PAUSED</status>
       <budget>
        <period>DAILY</period>
        <amount>
         <currencyCode>EUR</currencyCode>
         <microAmount>1000000</microAmount>
        </amount>
        <deliveryMethod>STANDARD</deliveryMethod>
       </budget>
      </operand>
     </operations>
    </mutate>

    It tells the API to create a new campaign in the account defined by the client email in the header (again not posted here). The additional OPERATOR tells what kind of operation (ADD, REMOVE, SET). After that all the necessary data for the operation are being added.

    Final words (for now)

    I think the new API is very clean and straight forward, with a new authentication method. The problems I currently see is the amount of work necessary to migrate applications based on the existing API v13 to the new v2009, but if people are using frameworks like APIlity or one of the other provided libraries, it is safe to assume that new versions will be available soon after the release to make a smooth upgrade.

    I am looking forward to work closely with the new API.


    8 Good PHP Tools and Libraries to Create and Test Web Applications

    May 14th, 2009

    Here is a collection of good PHP code libraries I somewhat use to create web based applications. This collection is about PHP only, in another article I will shortly tell you some good Python and Javascript/AJAX libraries.

    Zend Framework

    The Zend Framework is an object-oriented framework which is focusing on web 2.0 applications. It contains a lot of APIs to webservices like Google, Amazon, Yahoo!, Flickr.

    CSV Utilities

    PHP CSV Utilities or PCU, is a small, open source PHP library to simplify working with CSV files.

    phpExcel

    This project provides a set of classes, which allow you to write to and read from different file formats, like Excel 2007, PDF, HTML, … This project is built around Microsoft’s OpenXML standard and PHP.

    phpQuery

    phpQuery is a server-side, chainable, CSS3 selector driven Document Object Model (DOM) API based on jQuery JavaScript Library.

    MC_Google_Visualization

    MC_Google_Visualization provides simple support for integrating Google Visualization charts and graphs with your own internal database. It includes a complete parser for the Google Visualization Query Language, giving you the same ease of pivoting and formatting data from your database as is currently possible with Google Spreadsheets.

    pChart

    pChart is a PHP class oriented framework designed to create aliased charts.

    FirePHP

    FirePHP enables you to log to your Firebug Console using a simple PHP method call.

    SimpleTest

    The SimpleTest PHP unit tester is a PHP unit test and web test framework. It has support for SSL, forms, frames, proxies and basic authentication.

    If you know any more good PHP libraries and tools, just leave a comment.


    My 10 favorite Android Apps

    May 12th, 2009

    Today I want to tell you my 10 favorite Android applications. As you might have guessed already, I have one of those T-Mobile G1 and I love every bit of it!

    twidroid

    This applications is my trip to twitterland, every while and then, when I am not at my desktop, I look up my latest tweets or post a “Hello” here and there.

    Timeriffic

    Since my G1 is giving a “beep” everytime I get an E-Mail I use this application to set specific time frames when the device shall be muted or reactived. I don’t mind the beep, but my girl friend was driving me nuts everytime she woke up because of it. ;)

    Battery Status

    No need to explain this one, don’t you think? ;)

    Delicious Bookmarks

    Bookmarks, like in the sidebar to the right side, can be stored on this Google).

    RTM Tasks

    Helps me keeping track of my ToDo lists.

    Toogle WiFi

    One-click solution to activate the wifi controller. When I am home, I don’t want to miss my DSL broadband connection.

    KeePassDroid

    Keeping track of all the password you collect in the wilderness of the internet keeps your brain very busy. Fortunately there are tools like this which help you save your precious keywords in an encrypted database. Don’t forget the master keyword!

    ConnectBot

    Mobile SSH client with key authentification. When this server goes wild, I have used it the wrong way ;)

    klickTel

    This application is a mobile client for the an online directory for phone numbers and industries. You can get current traffic informations based on your location and it helps you find the nearest coffee house or cashpoint. It’s for Germany only.

    The Schwartz Unsheathed

    Who doesn’t want to have their own personal light sabre?! :)


    Updating T-Mobile G1 to Android 1.5

    May 11th, 2009

    The Update for Android to Version 1.5 is available to Download from Google. I recently updated my G1 to the new version sucessfully. Please remember that this is probably a European version of Android (don’t know for sure), so please be careful @ US guys. Here is the tutorial:

    Download the file and rename it to update.zip. Then put it in the root folder on your G1′s SD card. Then turn off your G1 completly. To start the service update press the key combination [Home]-[Quit], and keep them pressed until a warning sign appears on the screen. Then press [Alt]-[S] to start the update. After installation the G1 reboots twice and then its completed. You have to have Android v1.1 to install the update.