After a month (count them, 30 days!) of working on the new site I've rolled it out. The amount of work involved in completely recreating a working production website that's been online for years is quite a lot. Below I've created a table to give you an idea of what was done.
|Old Site||New Site|
|Host Operating System||CentOS 5.3||Xen Cloud Platform 1.1|
|Hypervisor||Xen 3.4.0||Xen 3.4.2|
|Virtualization Stack||OSS Xen||XAPI|
|Guest Operating System||CentOS 5.6||CentOS 6.1|
|Memory||2 GB||7 GB|
|Guest Operating System||CentOS 5.6||CentOS 6.1|
|Storage Subsystem||File based local disk||iSCSI SAN|
|Content Management System||Joomla! 1.5 Legacy mode||Joomla! 1.7 Native mode|
|Directory component||Sobi2||Sobi Pro|
|Photo Gallery||Gallery 2.1||Gallery 2.3|
|Joomla Theme||Modified JA-Purity||Modified JA-Purity ii|
If you look at this chart it may not seem like it was that big of a deal however, it was.
I built new hardware based around AMD's Phenom II hexacore CPU. The old server has been awesome but just buying ram to upgrade it was getting difficult and expensive. Also since that server is a real server with real jet airplane speed fans it has to be in remote parts of the building otherwise you'd need new eardrums. Because of this the network connection was tunneled across a wifi link. Not ideal but it's always worked. In order to gain reliability the new server is wired directly into the ISPs connection. I'm looking into a dedicated connection and another speed increase.
Open source Xen has served me well for many years but as I move everything over to clouds I've been rolling out more Xen Cloud Platform installations. I could have cheated and just migrated the old disk image but I really wanted to take the time to create a new fresh disk image and also roll out CentOS 6.x. .While going through this process I created new XCP howtos on how to install CentOS 6.x on Xen Cloud Platform.
Content Management System:
Once I had that done and the bugs worked out I created I migrated Joomla! 1.5 to Joomla 1.7. This is NOT an upgrade, it's an entire migration. There are some scripts that help you bit in reality what they do is move your articles over and not much more. Because ALL of my components, modules and plugins stopped working on Joomla 1.7 I had to find replacements. The big one was Superblogger which doesn't have a Joomla 1.7 version.
After a great deal of research I went with K2 made by the same folks as Superblogger. K2 isn't an exact replacement since Superblogger is made for blogging and includes trackbacks, Disqus comments and some theming. K2 is really a component that replaces a lot of Joomla! Ironically a lot of it doesn't need to be replaced and I hope in the future we'll see a newer leaner K2. For instance K2 provides nested categories and access control lists, two features not included in Joomla 1.5. However, Joomla! 1.7 has both so K2 doesn't really need them anymore. Using K2 is really an all or nothing proposal since it takes over all of Joomla! categories/articles, access control and some theming. It does NOT include Disqus commenting but there is an extra plugin for that... which unfortunately doesn't work on Joomla! 1.7 (common theme here) so I went with SP Comments.
I used Sobi2 for my restaurant reviews and recipes which as you may have guess also didn't work. The folks that make Sobi have come out with Sobi Pro which won't import Sobi2 data. Sobi Pro looks pretty good and will allow me to get around the hack I had to use to run two copies of Sobi2 in one instance of Joomla!. Most of Sobi Pro's additional functionality though is commercial so it looks like I'll be paying out some money. One example is a tie in with Google maps. It would be nice to do a restaurant review with address and have a Google map appear automatically.
My old photo gallery was Gallery2 embedded in Joomla! 1.5 using the g2bridge component which as you may have guessed isn't available for Joomla 1.7. I found a replacement in Jfusion which not only will bridge Gallery2 but PHPbb and a bunch of other software. However, I can't figure out how to provide a menu item that links to a specific gallery. I could do this with g2bridge. I also used g2image so I could insert Gallery2 images in articles. I don't have an equivalent with JFusion. I used the PGtheme theme for my embedded Gallery2 which (wait for it....) doesn't work with the downloadable version of Gallery2! Gallery3 is out but JFusion doesn't support it so the latest version of Gallery2 is what I will use. I haven't even begun writing a new theme for it so it's currently pretty ugly.
My old Joomla 1.5 theme was JA-Purity which I've always liked. I hacked it up pretty good and it eventually started having problems. JA-Purity doesn't work on Joomla 1.7 (why would it???) but the folks that developed it came up with JA-Purity ii for Joomla! 1.7 which I've also spent quite a lot of time hacking on to get it near where I want it.
In addition, my contact module had to be replaced, my visitor counter had to be replaced, all articles tagged for the new Tag Cloud (which is nice) and more. I've spent so much time on this migration that I don't even remember what I've done anymore. I wished now that I'd documented it all.
- Keep working on the Joomla 1.7 theme. There's a ton of cleaning up and redesigning I want to do.
- Get serious about SEO. I have SEF working as well as I can so my URLs are better.
- Crate a Gallery2 theme
- Create the entire directory structure in Sobi Pro so I can get back to writing reviews and putting recipes up
- Find a way to link to specific Gallery2 gallery.
- Create metadata for everything
- Finish tagging the last 100 articles for the tag cloud
- Find a downloads component that works with Joomla 1.7
- Find a way to handle weblinks in K2 instead of Joomla! articles
- Get an autotweet/facebook plugin
- Install tracking/analytics component of some sort
- Experiment with putting Varnish between the webserver and the ISP (which is why there's no login form on the front page)
- Create a URL map of my old comments mapped to the new URLs for Disqus. Until then old comments won't link properly
- Experiment with a server side PHP accelerator
- Perhaps look into Adwords/Referrals
- Create content!
That's it! It's been a lot of work to get a new site that does exactly what the old one accomplished and it's still not quite there.
Sometimes I want to be fancy. Food is fun. I could just throw some beaten eggs in a pan until they're solid, toss some egg soaked bread on the grill and fry up some bacon but what fun is that?
My daughter had been asking me for French Toast so I gave in today and mixed an egg, some flour, sugar, salt and milk together to slather onto Texas Toast. The eggs were totally French style done in a double boiler. I didn't have any morels or truffles so I just added a touch of vanilla to them. The Bacon was coated with cracked pepper.
The fancy part comes with the preparation. I cut off the top of the egg with your typical $20 "cut a muffler pipe" knifeset by ginsu (I think they're called Master Chef now) serrated knife. I washed out the eggshell nicely and filled it with the French style egg custard.
A strip of bacon pressed flat while fried worked nicely as the dipper utensil for the eggs. Overall this fancy breakfast didn't cost any more than the traditional "slap it on a plate" method but was more fun for sure.
You don't have to go out to breakfast and spend a fortune for something with pizzazz.
Food reviews are always subjective so should be taken with a grain of salt but while reminiscing about Paris today I checked the Yelp reviews of one of my favorite bistros in the 15th arrondissement. The reason I liked it is because they had not one but two excellent duck dishes on the menu. The first was Magret de Canard in an orange honey sauce and roasted potatoes. The second being duck pieces shaped in a cylinder over sweet potatoes. Both were wonderful. Anyone that knows duck will agree that you can't cook it to medium or it will best be used as a football. The best Magret is served pink (really red) all the way through and it's the best thing ever. If you look to the photo on the right of the very Magret de Canard that I speak of you'll notice the the meat is very pink ringed by the wonderful duck fat cap. THIS is how it should be cooked. I apologize for the photo but I took this when I didn't know anything about taking food photos. I also took a friend to this restaurant who said she couldn't stand duck so she ordered linguine. I gave her one bite of my Magret and she exclaimed "That's not duck, that's a steak". Au contraire, it's better than a steak....Which brings me to a Yelp review of said bistro where an Irish couple gave it one star. <bolding is mine>
"..Irish Tourist Here... This is a place to be definitely avoided if you wish to get value for money!!!! .. Asked for Duck and Steak to be cooked well done. Both orders were cooked close to rare. Spuds were coldish. When asking for a glass of water we got landed a 2 ltr bottle of water on the table and 2 glasses.. When dishes were sent back. Duck was re cooked in juices of the steak so duck tasted like steak. Also we were rudely told we are big eaters sending food back!!!. When questioning why our food was not cooked correctly, standing beside the kitchen I seen why its horrible and messy!! Plus service was extremely rude. I refused to pay and asked for a reduction in the bill due to the rudeness and lack of respect to paying tourists. I was told that's the way we do food over here. Sorry... Now please pay your bill... So if you would like some nice food and manners go to Place Cambronne. Or a lovely side street pizza shop.."
What's to be said about this? I've bolded quite a lot because there's a lot wrong here. First of all I won't make any cracks about Irish cuisine because anything I'd say could also be said of American cuisine and I'm American. I also don't think it needs to be said so I'll just say this, the French are really good at some things that the folks living in the Mayonnaise belt (former British colonies) just don't understand. So to start they asked for both their Duck and Steak to be cooked well done. You probably couldn't eat a duck well done without a chain saw and I can only imagine the French chef in the kitchen not even comprehending that someone has CHOSEN to make their food inedible so he cooked it the best he could and sent it out. They also asked for what sounds like tap water. If you ask for water in France you'll get a choice of still bottled water or sparkling (with gas) bottled water. I'm not sure what they ended up with but it was in fact a bottle of water. The secret phrase in France is "une carafe d'eau s'il vous plaît!" which will get you a carafe of chilled tap water. Whenever I ask for my carafe I get a surprised look from the waiter followed by a look of respect, like I was just let into the back room of a secret clubhouse.
The last point I'd like to make is that these folks believed they had some sort of buying power because they were tourists with money. They very clearly don't understand the French. You could walk into a French bank with a million dollars in cash and they'd want references before they'd let you open an account. Money talks in America but only whispers in France.
So here's a couple of thoughts and lessons to take away.
- Don't go to another country to which you know nothing of their culture and tell their chefs how to cook their dishes. Especially don't go to France and tell French chefs how to cook French food. If you like your food having the flavor and texture of a football you will probably have to go back home to get it.
- Don't assume that people in France will bow down to your almighty dollar and want to serve you anymore than if you walked into someone else's house with money in your wallet.
- Treat France like you're visiting a friend with an exquisite house and you'll be fine. This means you will be treated with politeness and respect as long as you keep your feet off the coffee table.
I actually experienced this very same situation in this very same restaurant. An American family sat down at a table, spoke perfect American English to the French staff and expected them to understand everything they said (even though French, not English is the language of the land) and when they didn't bring what the American family had ordered they man became enraged and demanded they take it back. His exact words to his wife were "They had BETTER make us what we ordered!". I felt ashamed and the manager treated them so much better than they deserved. Had it been me I would have thrown them out.
So the moral of the story is that we should exert at least a little bit of effort to understand the culture and customs of the country that we're in so we don't make total asses of ourselves and in addition we may very well enjoy our stay more. Huh, there's a thought.
Usually I can look at a recipe and have a pretty good idea whether it's worth the trouble or not. Sometimes I make a recipe that doesn't seem like a good idea just in case I'm wrong. On occasion I have been wrong.
One of my foodie friends on Google+ posted a recipe for Brown Butter Pumpkin cake with Cinnamon Buttercream Frosting and roasted marshmallow filling. My immediate thought was that there is a lot of adjectives in the name followed by "I bet that's way too rich". Sometimes I make recipes just because I like getting new ideas. This time was a mixture of reasons but partly because it was pretty.
I'd planned on making Pumpkin pots de Creme for Thanksgiving dessert which are a favorite but none of the stores had Munchkin pumpkins so I made this cake instead.
The instructions go something like this - brown a bunch of butter as if you were making a browned butter sage sauce. Then make a pumpkin cake with it spiced with cinnamon, ginger and allspice. Then roast marshmallows under the broiler, combine with marshmallow fluff, more sugar and more butter. Then make the Cinnamon Swiss Meringue Buttercream comprising of lots more butter, more sugar, egg whites, cinnamon and vanilla of course. In total this recipe uses 7.5 sticks of butter (almost two lbs), 3.5 cups of sugar, 16 marshmallows and half a pound of marshmallow fluff. What's amazing is the final product although over the top isn't as crazy as the ingredients sound.
Conclusion: I think if I adapted this cake into a two layer (one layer split or two full layers) with just a thin layer of buttercream frosting it would be more practical. You can beat the name and how wonderful it looks though.
Note: updated for XCP 1.5b/1.6 and Xenserver 6.x.
- Network boot
- Access to Internet
- Working DHCP server
- Working DNS name resolution
This tutorial was written in the spirit of my CentOS 6 virtual machine (64 bit) installation on Xen. In those tutorials I created a disk, downloaded a kernel, kickstart file plus a xen config file which installed CentOS using the kickstart file. This has proven very popular since you can't install a paravirtualized domain using an install disk. This has been a very nice installation howto because you don't have to download any install CD/DVDs and you could create VMs using nothing more than a commandline login. It's also very nice because it can be mirrored locally if you're doing a bunch of them just by rsyncing a CentOS mirror locally then downloading my files and editing them.
Having moved to Xen Cloud Platform recently I don't anticipate there being more Howto's in this category in the future. I do however, keep up the CentOS installation tutorials because of popular demand.
- Centos 5 virtual machine (32 bit) installation on Xen
- Centos 5 virtual machine (64 bit) installation on Xen
- Centos 6 virtual machine (32 bit) installation on Xen
- Centos 6 virtual machine (64 bit) installation on Xen
- Convert Xen disk image to LVM Logical Volume
- Create a Zimbra mail server on Xen
- Getting Started with Xen
- Install Xen 3.4 on CentOS 5 (32 bit) the easy way
- Install Xen 3.4 on CentOS5 (64bit) the easy way
- Install xen-tools on CentOS 5.x
- Resize Disk Image used as Xen DomU hard drive
- Resize Disk Image used as Xen DomU partition
- Resize Logical Volume used as DomU hard drive
- Resize Logical Volume used as DomU partition
Xen Cloud Platform is the free/open community driven version of Citrix Xenserver. I've moved all of my Xen Virtual Machines to Xen cloud Platform so any future tutorials will most likely be about XCP. I've found XCP to be a wonderful product but not necessarily an easy tool sometimes thus the tutorials you see below.
Citrix Xenserver has been opensourced and thus there's no need for Xen Cloud Platform any longer. Most of the tutorials here work on both but all future tutorials will be targeting Xenserver. As time permits I'm updating tutorials for Xenserver 6.5 (Creedence) - Jan 15, 2014.
How to get started: Go to xenserver.org and download the latest ISO disk image of Xenserver and install it on a machine. If you don't have a CD drive on your Xenserver host put the installer on a USB drive. It uses the whole machine as it's an appliance so beware. By the way I think this is the best design strategy. It's a good idea to let your Hypervisor/Cloud stack focus on what it's good at and not use it for playing World of Warcraft. ;-)
Expect a great deal more Howtos in the future. Feel free to request them as well. If it's within scope of what I'm doing I may create one just for you.
- Access VHD VDIs from the Control Domain
- Add a CD to a VM
- Add a hard disk to a VM
- Apply hotfixes to XCP 1.6
- Automated install of CentOS 6 VM (32 bit)
- Automated install of CentOS 6 VM (64 bit)
- Automated install of CentOS 7 VM (64 bit)
- Automated install of Debian Wheezy VM (64 bit) using preseed
- Automated install of Fedora 20 VM (32 bit)
- Automated install of Fedora 20 VM (64 bit)
- Automated install of Kali Linux VM (64 bit) using preseed
- Automated install of Ubuntu 12.04 VM (32 bit) using preseed
- Automated install of Ubuntu 12.04 VM (64 bit) using kickstart
- Automated install of Ubuntu 12.04 VM (64 bit) using preseed
- Create an EXT CD repository
- Create an iSCSI target on a Control Domain
- Create an LVM CD repository
- Create an NFS CD repository
- Create custom templates
- Fix the XCP expired license issue
- Install git on XCP/Xenserver host
- Install XCP/Xenserver from a USB thumbdrive
- Install xe on CentOS6
- Install Xenapi Admin Tools from github
- Install XenWebManager Appliance
- Install XenWebManager on XCP host
- Install XVP Appliance
- Interactive install of OpenSuse 11.4 VM (64 bit)
- Make VMs autoboot
- Reboot stuck VMs
This is not a joke! Well, it is sort of but I bet Betty Crocker didn't think so. My daughter checked out a Betty Crocker cookbook from the local library. She was showing me some recipes in it as normally I would not have even opened it. About halfway through there was an Easy Cassoulet recipe. Intrigued I looked it over. Seconds later my jaw dropped in disbelief. You, my faithful readers probably remember my Cassoulet article from the past. If not then go there now and read up on it, I'll wait for you. In that recipe (which is quite good) there are no less than 19 ingredients and start to finish it takes about 3 days to prepare spread out over one month. I never thought any meal could be worth that kind of labor and yet I've made it 4 times. Now my least favorite season - Fall, is welcomed open armed just because it gives me an excuse to break out the butcher knife and soak those great northern white beans until they're smooth as butter. Yes, I'm hooked.
I'm sure Betty Crocker they're doing their readers a great service having an Easy Cassoulet recipe because who wouldn't want to partake in this rustic southern French dish? The recipe is as follows.
- 1 pound of Polish sausage
- 1 can of great northern beans
- 1 can of kidney beans
- 1 can of black beans
- 1 can of tomato sauce
- 3 medium carrots
- 2 small onions
- 2 tbs brown sugar
- 1/2 cup of dry red wine or beef broth
- 1 1/2 tsp dried thyme leaves
- 2 cloves of garlic
In the interest of their consummate readers they've even included microwave directions *gag cough gag* as follows.
To Microwave: Place carrots and red wine in 3 qt microwavable casserole. Cover and microwave on high for 5 minutes. Place sausage on carrots. Mix remaining ingredients. Pour over top. Cover tightly and microwave on high 18 to 22 minutes, stirring after 12 minutes, until hot and bubbly.
Can we have a moment of silence to honor the death of our dear old friend? If you don't mind I'd like to say a few words. "Cassoulet, I'm sorry for what has become of you. I'm sorry for how little we've tried to understand your complexity and how we've attempted to make you into something you're not out of our own laziness and for the sake of convenience. But most of all I'm sorry that you had to go out this way, with such a loss of dignity, please forgive us - amen."
Polish sausage and 3 cans of beans? Are you on crack Betty Crocker? Betty Coker is more like it. What can they possibly think to accomplish by putting Polish sausages and 3 types of canned beans in a microwave dish and cooking it for 20 minutes? I'm not saying you have to spend three days cooking Cassoulet but there are some dishes that if you don't plan on cooking them right you should just leave them the hell alone! Or here's another idea, microwave your sausage and beans but call it microwaved sausage and beans - not Cassoulet.
I have other issues with it. I don't believe I'm actually giving it any time at all but dry red wine OR beef broth? Oh you don't have any dry red wine for your wine reduction to pour over that Chateaubriand? Just use beef broth, they taste about the same. Ack! I can't think of an instance where you'd substitute beef broth for red wine. I just can't. Speechless I may not be but flabbergasted I am.