Finally moved from DreamHost & Drupal to FutureHosting & WordPress
If you’re reading this, I’ve moved apocryph.org over to FutureHosting, and I have finally migrated away from Drupal and into WordPress. Right now I’m running the stock skin and I haven’t done any configuration apart from migrate in my Drupal content and set up the Permalink Redirect plugin so the old Drupal-style links continue to work. As time permits I’ll be porting my custom Drupal theme into WordPress and generally adapting the look and feel to my tastes. Here’s hoping I don’t regret this…
Note that subdomains like svn.apocryph.org and wiki.apocryph.org haven’t been migrated over yet, so you’ll have to bear with me for a little while.
Moving to Future Hosting, Part II
The saga continues. In the last installment, I talked about the signup and initial use experience. This quick post is about performance.
I ran the UnixBench 4.1.0 WHT variant on both of my VPS boxes at various times, to see how they perform.
My two VPS boxes, lio and raz (Yes, I’m on an Anathem kick right now), are both brand-new FutureHosting ‘Elite’ VPS accounts. I’ve not done any optimization, nor are either of them hosting any sites with any traffic.
I ran the test with no arguments, then with 8 to make it utilize all eight virtual cores. I repeated this for both boxes. Then I ran the test simultaneously in both boxes, so see if they’re on the same node and if that degraded performance. The results are below.
Summary
lio turns in a WAY better score with 8 threads than raz, though they’re supposed to be identical. As in, 150 for raz, 250 for lio. Why the difference? I don’t know. Still, both of these scores are respectable for $35/mo, imho.
Raz, default thread count
System -- Linux raz.bulshytt.com 2.6.9-023stab046.2-enterprise #1 SMP Mon Dec 10 15:22:33 MSK 2007 i686 i686 i386 GNU/Linux
/dev/vzfs 41943040 1300448 40642592 4% /
Start Benchmark Run: Thu Sep 25 19:11:34 CDT 2008
19:11:34 up 9:45, 1 user, load average: 0.13, 0.03, 0.01
End Benchmark Run: Thu Sep 25 19:23:12 CDT 2008
19:23:12 up 9:57, 1 user, load average: 17.11, 6.92, 2.98
INDEX VALUES
TEST BASELINE RESULT INDEX
Dhrystone 2 using register variables 376783.7 13403469.3 355.7
Double-Precision Whetstone 83.1 1345.6 161.9
Execl Throughput 188.3 3856.0 204.8
File Copy 1024 bufsize 2000 maxblocks 2672.0 55015.0 205.9
File Copy 256 bufsize 500 maxblocks 1077.0 150.0 1.4
File Read 4096 bufsize 8000 maxblocks 15382.0 303300.0 197.2
Pipe Throughput 111814.6 604792.1 54.1
Pipe-based Context Switching 15448.6 178394.1 115.5
Process Creation 569.3 12508.3 219.7
Shell Scripts (8 concurrent) 44.8 1044.8 233.2
System Call Overhead 114433.5 1207185.3 105.5
=========
FINAL SCORE 107.7
Raz, with 8 threads
BYTE UNIX Benchmarks (Version 4.1-wht.2, 8 threads)
System -- Linux raz.bulshytt.com 2.6.9-023stab046.2-enterprise #1 SMP Mon Dec 10 15:22:33 MSK 2007 i686 i686 i386 GNU/Linux
/dev/vzfs 41943040 1300468 40642572 4% /
Start Benchmark Run: Thu Sep 25 19:26:07 CDT 2008
19:26:07 up 10:00, 1 user, load average: 0.95, 3.88, 2.48
End Benchmark Run: Thu Sep 25 19:37:34 CDT 2008
19:37:34 up 10:11, 1 user, load average: 26.39, 10.88, 5.65
INDEX VALUES
TEST BASELINE RESULT INDEX
Dhrystone 2 using register variables 376783.7 22294025.3 591.7
Double-Precision Whetstone 83.1 1187.7 142.9
Execl Throughput 188.3 4524.2 240.3
File Copy 1024 bufsize 2000 maxblocks 2672.0 60357.0 225.9
File Copy 256 bufsize 500 maxblocks 1077.0 1513.0 14.0
File Read 4096 bufsize 8000 maxblocks 15382.0 286290.0 186.1
Pipe Throughput 111814.6 1282962.2 114.7
Pipe-based Context Switching 15448.6 179541.3 116.2
Process Creation 569.3 12956.3 227.6
Shell Scripts (8 concurrent) 44.8 1321.5 295.0
System Call Overhead 114433.5 1134031.5 99.1
=========
FINAL SCORE 152.9
lio, with default threads
BYTE UNIX Benchmarks (Version 4.1-wht.2)
System -- Linux lio.bulshytt.com 2.6.9-023stab046.2-enterprise #1 SMP Mon Dec 10 15:22:33 MSK 2007 i686 i686 i386 GNU/Linux
/dev/vzfs 34207160 1300636 5728564 19% /
Start Benchmark Run: Thu Sep 25 22:37:29 CDT 2008
22:37:29 up 13:08, 1 user, load average: 0.13, 0.04, 0.01
End Benchmark Run: Thu Sep 25 22:48:21 CDT 2008
22:48:21 up 13:19, 1 user, load average: 14.59, 6.19, 2.72
INDEX VALUES
TEST BASELINE RESULT INDEX
Dhrystone 2 using register variables 376783.7 21966322.3 583.0
Double-Precision Whetstone 83.1 1394.1 167.8
Execl Throughput 188.3 4554.2 241.9
File Copy 1024 bufsize 2000 maxblocks 2672.0 342.0 1.3
File Copy 256 bufsize 500 maxblocks 1077.0 18094.0 168.0
File Read 4096 bufsize 8000 maxblocks 15382.0 27651.0 18.0
Pipe Throughput 111814.6 1277497.8 114.3
Pipe-based Context Switching 15448.6 384725.3 249.0
Process Creation 569.3 13990.8 245.8
Shell Scripts (8 concurrent) 44.8 1006.5 224.7
System Call Overhead 114433.5 1249871.1 109.2
=========
FINAL SCORE 104.2
lio, with 8 threads
BYTE UNIX Benchmarks (Version 4.1-wht.2, 8 threads)
System -- Linux lio.bulshytt.com 2.6.9-023stab046.2-enterprise #1 SMP Mon Dec 10 15:22:33 MSK 2007 i686 i686 i386 GNU/Linux
/dev/vzfs 34354440 1300704 5875776 19% /
Start Benchmark Run: Thu Sep 25 23:44:28 CDT 2008
23:44:28 up 14:15, 1 user, load average: 0.00, 0.02, 0.39
End Benchmark Run: Thu Sep 25 23:55:50 CDT 2008
23:55:50 up 14:26, 1 user, load average: 28.57, 11.10, 4.88
INDEX VALUES
TEST BASELINE RESULT INDEX
Dhrystone 2 using register variables 376783.7 35652954.9 946.2
Double-Precision Whetstone 83.1 1362.3 163.9
Execl Throughput 188.3 4617.4 245.2
File Copy 1024 bufsize 2000 maxblocks 2672.0 92159.0 344.9
File Copy 256 bufsize 500 maxblocks 1077.0 30916.0 287.1
File Read 4096 bufsize 8000 maxblocks 15382.0 705176.0 458.4
Pipe Throughput 111814.6 2252648.2 201.5
Pipe-based Context Switching 15448.6 404533.9 261.9
Process Creation 569.3 12242.2 215.0
Shell Scripts (8 concurrent) 44.8 1070.5 239.0
System Call Overhead 114433.5 1826626.0 159.6
=========
FINAL SCORE 277.4
raz and lio, running at the same time, with 8 threads
raz
BYTE UNIX Benchmarks (Version 4.1-wht.2, 8 threads)
System -- Linux raz.bulshytt.com 2.6.9-023stab046.2-enterprise #1 SMP Mon Dec 10 15:22:33 MSK 2007 i686 i686 i386 GNU/Linux
/dev/vzfs 41943040 1300592 40642448 4% /
Start Benchmark Run: Thu Sep 25 23:52:53 CDT 2008
23:52:53 up 14:26, 2 users, load average: 0.01, 0.02, 0.00
End Benchmark Run: Fri Sep 26 00:04:31 CDT 2008
00:04:31 up 14:38, 2 users, load average: 30.74, 11.70, 4.89
INDEX VALUES
TEST BASELINE RESULT INDEX
Dhrystone 2 using register variables 376783.7 29430207.6 781.1
Double-Precision Whetstone 83.1 1298.8 156.3
Execl Throughput 188.3 4788.6 254.3
File Copy 1024 bufsize 2000 maxblocks 2672.0 4551.0 17.0
File Copy 256 bufsize 500 maxblocks 1077.0 26223.0 243.5
File Read 4096 bufsize 8000 maxblocks 15382.0 15476.0 10.1
Pipe Throughput 111814.6 1254858.6 112.2
Pipe-based Context Switching 15448.6 185965.8 120.4
Process Creation 569.3 13295.8 233.5
Shell Scripts (8 concurrent) 44.8 772.5 172.4
System Call Overhead 114433.5 1508631.3 131.8
=========
FINAL SCORE 122.5
lio
BYTE UNIX Benchmarks (Version 4.1-wht.2, 8 threads)
System -- Linux lio.bulshytt.com 2.6.9-023stab046.2-enterprise #1 SMP Mon Dec 10 15:22:33 MSK 2007 i686 i686 i386 GNU/Linux
/dev/vzfs 34328540 1300728 5849852 19% /
Start Benchmark Run: Thu Sep 25 23:56:24 CDT 2008
23:56:24 up 14:27, 1 user, load average: 16.16, 9.93, 4.72
End Benchmark Run: Fri Sep 26 00:09:12 CDT 2008
00:09:12 up 14:39, 1 user, load average: 29.57, 12.20, 6.97
INDEX VALUES
TEST BASELINE RESULT INDEX
Dhrystone 2 using register variables 376783.7 33713810.3 894.8
Double-Precision Whetstone 83.1 1357.9 163.4
Execl Throughput 188.3 4615.5 245.1
File Copy 1024 bufsize 2000 maxblocks 2672.0 21267.0 79.6
File Copy 256 bufsize 500 maxblocks 1077.0 33052.0 306.9
File Read 4096 bufsize 8000 maxblocks 15382.0 755979.0 491.5
Pipe Throughput 111814.6 2226506.9 199.1
Pipe-based Context Switching 15448.6 386106.1 249.9
Process Creation 569.3 11791.2 207.1
Shell Scripts (8 concurrent) 44.8 1232.2 275.0
System Call Overhead 114433.5 1487546.9 130.0
=========
FINAL SCORE 240.9
Moving to Future Hosting, Part I
Lately I’ve been having tons of problems with my cheap web hosting service from DreamHost. When I first moved to DreamHost, I couldn’t believe the boundless disk space I was able to get for practically nothing. Of course, I allowed myself to forget the old adage about anything too good to be true.
I should’ve known something was up after their devastating outage, but the hosting was still cheap and moving is a major pain.
However, last week I logged into my shell account to work on a Ruby on Rails idea I had. It was a quick-and-dirty thing so I just worked over SSH within vim. However, performance was so shitty that a w command (write changes to my little 25 line file) would take five seconds to complete, and things like cd, ls, and especially tar ran an order of magnitude slower than they should have. I opened a ticket with support who assured me they didn’t see anything wrong. I just sent them a response suggesting they run the ffmpeg configure script and see what happens; I gave up after ten minutes of waiting.
Anyway, I’ve already decided this is bullshit, and it’s time to move on. Sadly, the awesome $/GB deal offered by DreamHost is still pretty exceptional. I now know they achieve this by overselling, hence their incessant suckyness, so I was looking at shared hosting plans that come with bandwidth and disk resources allocated just to me, and the markup was huge. MediaLayer is a good example of this. 2500MB of storage, 500GB of bandwidth, and 12 domains, for a whopping $40/mo! That’s double what I pay at DreamHost for 500GB of storage and 10TB of bandwidth!
So, I started looking into dedicated hosting, which is, um, fucking insane. Then I started looking into Virtual Private Servers (VPS), which is a trend in hosting in recent years that leverages virtualization to allow you to have root on a box that runs in a VM, which allows the hosting provider to capitalize on the economies of scale offered by virtualization, so you get a quasi-dedicated account for (relatively) cheap.
After much research on WebHostingTalk and other useful sources of information, I decided to case my lot with Future Hosting. This is the first part of what should be a series documenting my experiences.
My first impression of Future Hosting was their domain name. I’ve been conditioned over long years on the Internet that .biz == shady. To even consider a hosting provider on the .biz TLD took alot of convincing. But, the following were in their favor:
- They have a Corporate Sponsor account on WebHostingTalk, which had the good sense to ban such shit hosts as CI Host. This constitutes evidence they suck less than C I Host; faint praise to be sure, but praise nonetheless
- Numerous positive reviews on WebHostingTalk and elsewhere, including explicit reports of excellent VPS performance
- A post on WebHostingTalk attempting to explain away the shady .biz domain (I can’t find it now but I recall reading it somewhere)
- A long-running Sticky in the VPS Hosting Offers forum on WHT, with a pretty compelling value
- Month-to-month plans only. They won’t let you prepay even if you wanted to
- Options of managed or unmanaged, cPanel or Plesk or DirectAdmin
What sold me was a spreadsheet I put together with about twenty VPS plans from around the ‘net, ranked by value in terms of $/MB of RAM, $/GB of bandwidth, $/GB of storage, and the arithmatic mean of all three. FutureHost’s Elite VPS plan came in third for overall value, behind two very-shady-seeming hosts, SmokyHosts (whose main page could easily be coming through a time warp leading back to 1994) and FortBox (whose ad on WHT uses the name ‘ForBox’; great attention to detail).
So, determined not to go penny-wise pound-foolish again, but also seeking a good deal, I decided FutureHost was a good balance of cheap and seemingly reputable.
Initially I emailed their Sales department with a question about upgrading storage. Their top-tier VPS plan maxes out at 50GB of storage, and my gallery alone is 35GB, so I wanted more breathing room. I submitted the inquiry sometime late at night, and woke up the next day with an answer. The response time was good; the answer was not. They don’t offer storage upgrades; you must upgrade to the next service tier, which in this case was their ‘hybrid’ VPS at $130/mo! Shit! So, that sucks right away. FutureHosting, if you’re reading this, start offering storage upgrades on your VPS accounts. Storage is cheap, and your $/GB of storage numbers are way higher than other plans I was looking at, even with the 40% discount I got.
Next I emailed their Sales department to confirm my interpretation of the upgrades and discounts listed on the WHT posting, to make sure they were combined and without any extra costs. I never heard back from that inquiry, which is disturbing, but my buddy Yousif went ahead and ordered with them anyway so I knew from his experience that my interpretation of the pricing structure was indeed accurate.
Having decided to give them a try, I decided I could work around the storage limitation by getting two of the Elite VPS plans, which have 40GB of storage each, and come in at $35/mo after a 40% discount. I wanted to be sure their 40% discount could be applied to both plans as long as I ordered them together, so I submitted another inquiry to sales, at 6:19 PM ET. At 7:37 PM ET I received a response from Vik Patel, the CEO, confirming they would allow me to use the discount on two instances.
With this in hand, I placed an order for one Elite VPS (their ordering system doesn’t permit you to order more than one server at a time). I then immediately ordered another one, but the 40% off coupon code wouldn’t work (presumably because I was no longer a ‘new’ customer). I place the order anyway, and emailed Vik requesting he apply the discount to my second order. He opened a ticket with Jim and it was taken care of promptly.
I placed the orders around 10PM ET, and by 11 AM ET the next day, the boxes were provisioned. I would’ve liked them sooner, but I assume they provision during business hours, so that’s roughly two hours into the work day. A two hour turnaround is not bad.
At the time of my first order I had to create an account on their system. I used KeePass to generate a long and complex password, which their system accepted. The ordering process seemed to indicate that the password I had used would become the root password on the two boxes. However, once they were provisioned this password would not work with root on either box. I know I had the password correct as I could log in to their Parallels Business Automation system using that password. Furthermore, my buddy Yousif had the exact same problem with his order.
I opened a ticket requesting help with this. They did reset my root passwords within an hour, after I verified some information, but no explanation was offered as to the cause of the problem. I would’ve liked a bit more insight into it, but it’s not worth pushing.
Once the boxes were provisioned, I began to explore my new hosting service. Maybe I’m just a VPS hosting n00b, but I found the way Future Hosting manages this service to be unnecessarily complicated. I have six accounts to keep track of:
- Parallels Business Automation account
- Support Portal
- DirectAdmin account on Server A
- DirectAdmin account on Server B
rootaccount on Server A (and the Virtuozzo Power Panel, with the same username and password)rootaccount on Server B (ditto)
Obviously the two root accounts would be there anywhere; I don’t mind that. But why must I have a separate DirectAdmin account for each box, which is separate from the support portal, which is separate from the Parallels BA account?
It was also not obvious at first what these various things were for. For example, you can add domains in Parallels, but also in DirectAdmin. Only after reading in the Knowledgebase does it become clear that you must add a domain in Parallels for their DNS infrastructure to service the domain, while adding the domain in DirectAdmin configures Apache to service HTTP requests for that domain. Not complicated once you know it, but not obvious if you don’t.
To add further complication to the domain stuff, when I first signed up my account included one domain, the domain I specified upon signup. So, when I went to add more domains in Parallels, it failed, saying I didn’t have any domains left on my account. I had to go to the ‘Store’ and ‘buy’ more domains. Since there is no domain limit on my account, new domains cost $0.00 each, but I still had to go through with the ‘purchase’, and even got a receipt. I bought 20 domains to start with, though the quantity is obviously irrelevant. This strikes me as a clumsy and confusing way to handle accounts with unlimited domain hosting, and I imagine it costs them alot of help desk calls.
I haven’t done any perf testing yet, nor have I moved any of my sites over. Those results in the next installment…
UPDATE: Part II is up.
Got Laconi.ca installed on my DreamHost account
I’ve been aware of the frenetic activity around Twitter for at least a year now, but I refuse to use it, both because it’s hard for me to see the value of 140 character text messages and because centralized Internet services leave a bad taste in my mouth. Such is the extent of my aversion that I limped along with my own PostFix/Courier-IMAP mail system with shitty webmail clients like SquirrelMail for years before my time in Iraq convinced me there’s simply no open-source email system remotely competitive with Gmail. When I switched my domain over to Google Apps for Domains, it was with a strong sense of shame, as though I’d been beaten in some epic contest.
The difference, of course, is that I desperately need stable, performant, spam-free, accessible email. I do not desperately need Twitter.
However, I am interested in the concept, and I’m not arrogant enough to believe all those millions of Twitter fans are all wrong. So, now that Twitter is down more than it’s up and everyone’s casting about for an alternative, I was excited to discover laconi.ca, an open-source microblogging platform which powers identi.ca. Of course everyone’s building a Twitter clone now, but I like laconi.ca because it’s open-source, and more importantly it uses a federated architecture not unlike XMPP (or SMTP email for that matter), built around the OpenMicroBlogging standard (which is really not a standard as yet, but one can hope).
So, the idea is I can run laconi.ca on apocryph.org, and other users can run laconi.ca on a hosted service like identi.ca or whatever, and through the magic of federation we’re able to communicate seamlessly, just like you can send an email to someone on hotmail, even though you use gmail, and it Just Works.
That’s the idea. We’re a long ways from there right now. Laconi.ca is pretty raw today, and Twitter has nothing to fear from the 0.4.1 version. It’s probably unlikely laconi.ca will go anywhere, really. But it’s an open-source, federated attempt at duplicating Twitter, so I want to support it. If another such tool comes along with as much buzz around it as laconi.ca, I’ll want to play with that one too.
Anyway, on to the installation drama. Laconi.ca was NOT easy to get running on DreamHost.
I started with the excellent install walkthrough from decafbad. Without this it would’ve taken me much longer to get going.
First I had to set up a local PEAR install with all the dependencies required by laconi.ca. DH has a system-wide PEAR install but it contains just the bare PEAR packages, and obviously I don’t have root and thus can’t install the required packages system-wide. Fortunately PEAR accommodates this rather well. I just did the following:
pear config-create $HOME .pearrc
pear config-show
pear install -o PEAR
pear channel-update pear.php.net
pear install channel://pear.php.net/Validate-0.8.1
pear install DB_DataObject
pear install MDB2
pear install MDB2#mysql
pear install DB_DataObject#mysql
pear install Mail
pear install Net_SMTP
Once that was done, I had a ~/pear directory containing a PEAR install with all the modules I needed. I then modified ~/.bash_profile to set up the path correctly:
# Put the custom PEAR install in the path
export PHP_PEAR_PHP_BIN=/usr/local/php5/bin/php
export PATH=/home/codebloc/pear:/usr/local/php5/bin:$PATH
That took care of PEAR. There were a number of non-PEAR dependencies as well, which I got installed by using decafbad’s guide verbatim. Just download the laconi.ca source tarball (I guess you can use darcs, but I didn’t), extract it, cd into the directory containing its contents, and create extlib and xfers directories, then rock and roll:
cd xfers
curl -O http://openidenabled.com/files/php-openid/packages/php-openid-2.1.1.zip
curl -O http://michelf.com/docs/projets/php-markdown-1.0.1m.zip
curl -O http://oauth.googlecode.com/svn/code/php/OAuth.php
curl -O http://xmpphp.googlecode.com/files/xmpphp-0.1beta-r21.tar.gz
unzip php-markdown-1.0.1m.zip
cp 'PHP Markdown 1.0.1m/markdown.php' ../extlib/
unzip php-openid-2.1.1.zip
cp -r php-openid-2.1.1/Auth ../extlib/
cp OAuth.php ../extlib/
tar -zxf xmpphp-0.1beta-r21.tar.gz
cp xmpphp/*.php ../extlib/
cd ..
rm -rf xfers
MySQL setup was also easy. I used the DreamHost control panel to create a new MySQL database, and database user. I then ran the MySQL command line client to run the db/laconica.sql script to populate the database.
Next up was configuration. I copied config.php.sample to config.php and set about editing the configuration parameters. Most of them are straightforward and decafbad’s guide covers them. The one gotcha I’ll point out is caused by my use of a local PEAR install.
config.php has a spot for you to specify extra include directories, and decafbad has you use this to point PHP to the extlib dir you created co contain all the non-PEAR dependencies. That’s fine, but if you try to use this to add the ~/pear/php directory to the PHP include path, you’ll get no joy. The reason is clear if you look at lib/common.php. config.php isn’t required until after PEAR.php and DB/Data_Object.php are, so the include path won’t be set correctly. You can’t move the include of config.php up, because its configuration settings will be replaced by the initialization of the $config variable.
So, you have to modify the include path to include the pear/php directory by changing lib/common.php. Here’s an excerpt of my modified version:
define('AVATAR_PROFILE_SIZE', 96);
define('AVATAR_STREAM_SIZE', 48);
define('AVATAR_MINI_SIZE', 24);
define('MAX_AVATAR_SIZE', 256 * 1024);
#ANELSON
#Put local PEAR install into include path
set_include_path('/home/codebloc/pear/php' . PATH_SEPARATOR . get_include_path());
# global configuration object
require_once('PEAR.php');
require_once('DB/DataObject.php');
require_once('DB/DataObject/Cast.php'); # for dates
#ANELSON and the two lines after it were added by me. Replace codebloc with your username.
Once I had that going, I was able to navigate to the URL and log in with my OpenID.
Unfortunately, without federation it’s not much use, since you can’t link up with other installs. I’ll keep waiting for the next version, which hopefully will flesh out more functionality.
Kneecapped by major DreamHost outage
The hosting provider for apocryph.org, DreamHost, is experiencing a serious outage that has resulted in apocryph.org sucking serious wind and/or being completely offline. DH’s latest claim is a fix from their storage vendor will cure all ills, but this has been going on for a week now so it’s hard to imagine a QFE from a vendor will just make it vanish.
Anyway, I probably brought this down upon myself, since I went from fairly-cheap-but-still-shitty CI Host to considerably-cheaper DreamHost, based on the promise of ridiculous expanses of disk space and lavish transfer quotas. Of course, I probably should have asked myself how they could afford such generosity, but in the face of mind-boggling cheapness it’s hard to be objective.
Even though apocryph’s traffic numbers are asymptotic to zero it still really pisses me off to experience such a nasty outage. I wanted to work on my Drupal-to-Wordpress migration tool today, but the server hosting Drupal is so blasted even the shell is unusably slow. I’d threaten to pack up my shit and go to another host, but I don’t know where I’d go. I didn’t just pick DreamHost at random; they really due have insane disk and transfer quotas (I think I’m at 500GB and multiple terabytes of transfer, for something less than $20/mo), and as displeased as I’ve been with their reliability lately they have a much lower fail factor than the made-in-China discount hosts in the same price range.
Dammit, why can’t hosting be fast, good, AND cheap?
Setting up SVN on Dreamhost
Now that I’m decommissioning my colo box at CI Host, I finally have to move my SVN server over to my Dreamhost account. I tried back in February when I moved everything else over to Dreamhost but I couldn’t get it to work. I tried again this time around and had better luck.
I think my problem before was that I created the SVN repository before the host that contained it had finished initializing (things like creating domains and subdomains and enabling services with Dreamhost are asynchronous and often take way longer than it seems they should), which is what this excerpt from the Dreamhost Support Wiki hints at:
If you create your repository before its intended host is fully created (and resolved), you may have an inaccessible repository. Assuming it doesn’t yet contain any information (how could it?), just delete it and recreate it
So, I deleted the repository, created a new subdomain (svn.apocryph.org) and created a new SVN repository at svn.apocryph.org/svn. This time I waited for the subdomain to finish creating before creating the SVN repository, and it seems to have worked much better. Unlike my last attempt, this time I actually see the SVN repository files in ~/svn/svn, which means I have something to point svnadmin at.
Once that was done, I went to my old SVN server and did a svndump /usr/local/apocryph_svn | gzip > svndump.gz, which created a compressed dump of the archive. I uploaded that dump to my Dreamhost user directory with sftp, then did a gunzip -c svndump.gz | svnadmin load /home/USERNAME/svn/svn (Note the svn/svn is due to my choice in SVN project name; if I’d called my project foo instead, the path would’ve been svn/foo; hindsight’s always 20/20).
With that, my SVN repository was moved. Now I want to install WebSVN at http://svn.apocryph.org/. I downloaded WebSVN 2.0rc4, and extracted it into the doc root for svn.apocryph.org. Per the instructions in install.txt, I renamed includes/distconfig.inc to config.inc and edited it to reflect my SVN server and credentials. I have public read enabled on my repository, so I used blank strings for the username and password.
I really want syntax highlighting functionality, so I need to install enscript. The Dreamhost Support Wiki WebSVN page has some simple install steps:
mkdir src
cd src
wget http://www.iki.fi/mtr/genscript/enscript-1.6.4.tar.gz
tar xvzf enscript-1.6.4.tar.gz
cd enscript-1.6.4
./configure --prefix=$HOME
make
make install
I then set the enscript path in the config.inc file to /home/USERNAME/bin (NB: This isn’t the path _of_ the enscript binary, it’s the path where the enscript binary is located, which tripped me up). While at it, I also set the appropriate sed and tar and gzip paths, to enable directory tarballs.
To actually enable enscript I uncommented the $config->enableEnscript(); line; similarly for tarball directory downloads I uncommented $config->allowDownload();.
I was disappointed to see that C# isn’t among the enscript supported languages, but I guess one shouldn’t be too surprised.
Anyway, with just a little effort I now have a nice WebSVN front-end to my SVN repository, successfully migrated over to Dreamhost. Too easy.
Move apocryph.org to DreamHost
If you’re reading this, I’ve successfully transferred apocryph.org to DreamHost from CI Host. I pay about one fourth of what CI Host was charging me, and I get sysadmins who know their ass from a hole in the ground (note to CI Host: your security and DNS guys are utter fuckwits).
The move was a breeze. I used rsync -avx [src] celatrix.com:[destpath] to copy over my gallery and drupal folders (including 26GB of Gallery photos). I had a little trouble getting Gallery and Drupal running, but only due to my own stupid mistakes. I did have to download and build a statically-linked version of ffmpeg for Gallery, since DreamHost doesn’t include it in their standard server build, but it was a non-event. mysqldump was a no-brainer; I moved my Gallery and Drupal databases in a couple minutes.
I do wish DreamHost’s DNS was a bit better; I want webmail.apocryph.org to redirect to the Google Apps for Domains URL for my apocryph.org webmail, but they hard-code webmail to alias to their own web mail offering, with no ability to turn it off. Other than that, I’ve had no complains so far.
It’s really nice to have 400GB of breathing room; I can’t believe it’s so cheap. I keep waiting for the catch, but I’ve not found it yet.
UPDATE : OK, the honeymoon didn’t last too long. apocryph.org was down all day yesterday, due to the following litany of problems:
- First, the server hosting apocryph.org went down inexplicably. I opened a support ticket, and got this response:
Hey there Adam,
I took a look at your site, and it looks like it’s back up. It looks like the server your site’s on was having issues earlier, and ended up needing a complete reboot about 20 minutes ago. It could have been an abusive user, or a high load on the server. I’m assuming one of our admins
resolved it. I’ll keep an eye on it to see if I can stop this from happening again. If you have any more question, please let me know, and I’ll see what I can do to help.That’s awesome. How often is that going to happen, in the middle of the day, on a weekday?
- Second, the aliases I setup to serve the
gallery2anddrupalcontent, which take ten minutes to apply according to the DreamHost control panel, took hours. Here’s the support reply (note: the first attempt at describing this problem was misunderstood as a question about theAliasdirective inhttpd.conf):
Hello,
Its possible that the server was slow to update the apache instance and thus it took longer to take effect,usually it takes about an hour or so. Sorry for my misunderstanding of your initial email. I am glad to hear its working for you. If there is anything else I can help with let me know.
So, it usually takes an hour, despite the panel saying ten minutes, and it in fact took multiple hours? What’s going on over there?
- Third, the subdirectory remapping thing has a huge caveat:
Note also that PHP scripts in remapped sub-directories – within your own home directory – can only run with the server’s default PHP version, which is presently PHP 4.4.2. Software that requires PHP 5 cannot run in a remapped directory.
Um..lame!
So, while I’m not ready to claim the refund yet, I no longer deify DreamHost, and if these shitty experiences continue, I may have to beg CI Host to take me back.
OMFG How Is This Possible
Currently I pay $588/yr ($50/mo) for 1U colo services with CI Host. The box I have in their colo facility has 250GB of storage, and a handful of VMs running apocryph.org and a few other things. It hosts my expansive image gallery, a few databases, etc.
I’m starting to run out of space on this machine, and need a better solution. I could keep my machine at CI Host, but it would cost me $200 to ship it back here for an HDD upgrade, then back out again, plus a few hundred dollars for new drives. So, I starting looking around, and found the unbelievably good deal at Dreamhost.
For $19.95/mo (prepaid one year in advance, with 97-day refund policy), I get 400GB of storage (no, that’s not a typo, 0.4TB), and it increases by a GB or two every week, just like GMail storage. I also get 4096GB of monthly transfer bandwidth (yes, 4.0TB), which also increases each month. With a promo code I found in the forums, I saved $97 off the first year of service, so I paid $142.40 (as in, < $12/mo) for nearly twice the storage I currently have, for 1/4th of what I’m currently paying.
I’ll be transitioning all my properties over to my dreamhost account between now and May, when my CI Host contract is up for renewal, at which point I will enjoy no small bit of satisfaction in telling those incompetent fuckwits to get lost (though I’ll still have to pay $100 to get my box back).
If you sign up with them, use promo code ADAMSENTME; you’ll get the max possible discount, and I won’t get anything other than the satisfaction of knowing I’m spreading the wealth.