{"id":4,"date":"2006-07-05T10:33:54","date_gmt":"2006-07-05T15:33:54","guid":{"rendered":"http:\/\/www.nynaeve.net\/?p=4"},"modified":"2019-12-13T17:43:37","modified_gmt":"2019-12-13T22:43:37","slug":"blogging-software-woes","status":"publish","type":"post","link":"http:\/\/www.nynaeve.net\/?p=4","title":{"rendered":"On the selection of blogging software."},"content":{"rendered":"<p>After wasting about 4 hours on this subject, I think it has deserved the right to be spoken about.<\/p>\n<p>\u00c2\u00a0Since I decided to finally give this whole blogging thing a try, I went looking for an appropriate set of blogging software to use.\u00c2\u00a0 My first instinct was to try Community Server with SQL Server 2005 Express Edition.\u00c2\u00a0 Hey, it works for Microsoft (MSDN Blogs is powered by Community Server), so it should work for me, right?\u00c2\u00a0 And to make things even better, it&#8217;s a native Windows solution (I was\u00c2\u00a0planning on the deploying the blog on a Windows box), not a Unix port (which in my experience tend to be half-hearted and generally low quality, as far as applications go).<\/p>\n<p>\u00c2\u00a0Boy, was I wrong.<\/p>\n<p>\u00c2\u00a0After waiting about half an hour (I think) for SQL Server 2005 to install on my interim hosting box (which, although it isn&#8217;t the fastest box in the world, should really install the &#8220;lite&#8221; edition of SQL Server a little bit faster than that, I think), I set to work on setting up my blog.<\/p>\n<p>\u00c2\u00a0So I start the setup app, and everything is going great until the install almost finishes and goes into the configuration wizard, which then wants me to enter in my database information.\u00c2\u00a0 Now, I&#8217;m no SQL Server expert, but I (foolishly) think &#8211; how hard can this be?\u00c2\u00a0 I try the defaults\u00c2\u00a0&#8211; create the default database name on the locally running SQL Server.\u00c2\u00a0 Well, the installer freezes for about 30 seconds and then comes up with an error messagebox saying that it can&#8217;t talk to the database or I gave it invalid credentials.\u00c2\u00a0 Since SQL Server 2005 Express\u00c2\u00a0is supposed to used integrated Windows authentication by default and I am running the installer as admin (and told it to use integrated Windows authentication, per recommendations), I discount that possibility for the moment.<\/p>\n<p>\u00c2\u00a0I remember back to when I setup SQL Server 2005 half an hour ago, and it having said something about disabling all remote network access (a good thing from a security perspective!).\u00c2\u00a0 So, I figure, something must be stupid here and is trying to connect with one of the network transports instead of one of the local transports and that is why things are failing.\u00c2\u00a0 I (foolishly, as it turns out!) try to cancel out of the Community Server configuration wizard so that I can reconfigure SQL Server 2005 to enable network access.<\/p>\n<p>\u00c2\u00a0That was mistake no. 1. The Community Server installer comes back into focus with a big happy &#8220;setup was successful!&#8221; dialog and no option to go back and re-run the wizard.\u00c2\u00a0 Oops.\u00c2\u00a0 I had to uninstall the *whole thing* and reinstall it to get the post-installation configuration wizard back (which had failed, mind you, not ran successfully!) after reconfiguring SQL Server.\u00c2\u00a0 So, after waiting around for the Community Server installer to take its time, I get back to the SQL Server selection dialog.\u00c2\u00a0 Again, no dice &#8211; nothing I enter seems to appease it.<\/p>\n<p>\u00c2\u00a0Now, I&#8217;m starting to get pretty annoyed.\u00c2\u00a0 This was supposed to be a quick and easy thing to setup, not something that I wanted to spend my whole afternoon on.\u00c2\u00a0 Well, after doing a bit of research on how SQL Server works (not exactly what I was expecting to have to do, this was supposed to all work out of the box, remember?), I figure out that the default configuration is <em>supposed<\/em> to listen on port 1433 if you selected TCP\/IP for a network transport (which I did, for the SQL Server 2005 Surface Area Configuration Wizard thingie).\u00c2\u00a0 Well, a &#8220;netstat -anp tcp&#8221; says that nobody is listening on that port.\u00c2\u00a0 Oops, something is clearly wrong here, even though I followed all of the rules and used the supported UI and everything to configure SQL Server.\u00c2\u00a0 Well, I start poking around a bit more with the management tools that SQL Server installed, and eventually I got to where you tell the TCP transport which IP addresses that it should listen on.\u00c2\u00a0 I figure that maybe I need to manually tell SQL Server to listen on the IP I want on port 1433 here, if it wasn&#8217;t already (even though the TCP transport was enabled according to everything I could see).<\/p>\n<p>\u00c2\u00a0Now, this is a prime example of how you should not design a UI.\u00c2\u00a0 The UI for selecting the IP addresses\/interfaces to listen on is vaguely reminsicent of the Visual Studio property pages where you have a column of property\u00c2\u00a0types (descriptions)\u00c2\u00a0and a column of property values (that you enter in to configure it).\u00c2\u00a0 Each IP address has a bunch of options that you can pick in this form.<\/p>\n<p>Unfortunately, because I had turned on IPv6 support for this box, it has about 26 IP addresses (due to IPv6 over IPv4 automatic tunneling interfaces)\u00c2\u00a0between all of the VMware virtual NICs and the two physical NICs in the box.\u00c2\u00a0 And all of the IP addresses were &#8220;expanded&#8221; by default, in this tiny listbox that only had room for one and a half a property set per IP address.\u00c2\u00a0 To make matters even worse, the IP that I wanted to enable the listern for was #3, but the sorting for the UI was wrong &#8211; it goes 1, 10, 11, &#8230; 2, 20, 21 &#8230; and so forth, so the third IP address was at the *end* of the list.\u00c2\u00a0 Great UI here, guys!<\/p>\n<p>\u00c2\u00a0Anyways, after agonizing over that particular piece of user interface meets train wreck, I (or so I think) tell SQL Server to listen on my internal LAN IP for port 1433, hit OK, and restart the service.<\/p>\n<p>\u00c2\u00a0Then, I go try hitting &#8220;Next&#8221; on the Community Server setup.\u00c2\u00a0 Again, it doesn&#8217;t work.\u00c2\u00a0 Back to netstat and SQL Server STILL isn&#8217;t listening on port 1433.\u00c2\u00a0 Aaargh!\u00c2\u00a0 Well, next I do a &#8220;netstat -anpo tcp&#8221; and match the listening process IDs and port numbers with the SQL Server process ID to see if SQL Server is actually listening on ANYTHING.\u00c2\u00a0 It turns out that it IS listening, but on some completely unexpected (to me, anyway) port &#8211; 1398.\u00c2\u00a0 Huh??\u00c2\u00a0 The TCP transport uses 1433 by default!\u00c2\u00a0 Furthermore, I had configured it through the UI to listen on 1433.\u00c2\u00a0 Well, not being an expert on SQL Server, I start hunting around for how to convince Community Server&#8217;s setup wizard to use port 1398 for a remote TCP connection (still having no idea why the local connection mechanism doesn&#8217;t work, as that too is enabled in the SQL Server configuration manager).<\/p>\n<p>It turns out that I have to go and define a &#8220;connection alias&#8221; in the SQL Server Native Client Configuration section of the SQL Server manager UI.\u00c2\u00a0 After filling in everything here &#8211; connect to the IP that SQL Server was listening on with port 1398, and hitting OK, I went back to the Community Server setup wizard and hit Next, praying for it to work.<\/p>\n<p>\u00c2\u00a0Success! Only about 2.5 hours into the installation attempt, I&#8217;ve at least got it talking to the database.\u00c2\u00a0 The next steps are to give it my initial account and password for the Community Server administrator account when creating the database.\u00c2\u00a0 I enter in the information and continue through the next steps in the wizard, and finally get to the end.\u00c2\u00a0 After hitting the last &#8220;Next&#8221; button, naturally, I get an error message; Community Server failed to create the database properly.\u00c2\u00a0 I am then presented with a Notepad view of the setup log, where the problem is quickly evident &#8211; apparently, the Community Server setup app didn&#8217;t both to escape its strings before passing them to SQL queries, and blew up because the password I used had a &#8216; (single quote) in it.\u00c2\u00a0 This is just giving me warm fuzzies about how safe Community Server is going to be against SQL injection attacks, if I ever got it working, let me tell you.<\/p>\n<p>So, I back out of that part of the wizard and pick a new password that doesn&#8217;t have any characters that are unfriendly to SQL if not properly escaped.\u00c2\u00a0 Now I get ANOTHER error at the end of the wizard; the setup program failed to create the database because it already exists.\u00c2\u00a0 Apparently, the wizard doesn&#8217;t roll back all of its changes if it fails partway through, and some of the database goo from the unsuccessful previous configuration attempt is still there.<\/p>\n<p>\u00c2\u00a0So, then I&#8217;m back to uninstalling and reinstalling Community Server for about the 5th time today, and getting madder every minute.\u00c2\u00a0 After the reinstall finally finishes, and I reenter all of my information yet another time, the configuration wizard actually completes without any visible errors (yay!!!).\u00c2\u00a0 So, the last thing the wizard wants to do is launch the Community Server site for the local IIS install so that I can see all of the Community Server goodness that is now installed.<\/p>\n<p>Guess that?\u00c2\u00a0 The site doesn&#8217;t load.\u00c2\u00a0 Instead, I&#8217;m presented with a 404 Not Found in my browser window, from the URL that the configuration wizard so nicely launched at completion.\u00c2\u00a0 Apparently, there were several problems here:\u00c2\u00a0default.aspx wasn&#8217;t properly registered as an index document, and Community Server had picked the wrong IIS site to configure itself on (without even asking me which one I had wanted).<\/p>\n<p>At this point, I&#8217;ve had it &#8211; after having burned a couple of hours on this problem, I&#8217;m just not willing to give it any more of my time.\u00c2\u00a0 I uninstalled SQL Server and Community Server and went in search of other alternatives, which lead me to my current blog software, WordPress.<\/p>\n<p>\u00c2\u00a0WordPress is not exactly what you would call a native Windows solution &#8211; it relies on PHP, and the only backend database provider that it can talk to is MySQL.\u00c2\u00a0 None of these were really designed to work on Windows, but nonetheless, at this point I&#8217;m ready to try anything that doesn&#8217;t touch SQL Server or doesn&#8217;t have Community Server in it&#8217;s name.\u00c2\u00a0 All in all, it only took me about 15 minutes to download everything I needed (from various sites, too, not one centralized location) to get WordPress to work on IIS (Win32 PHP 5, Win32 MySQL, and of course WordPress itself), work through one or two minor setup hiccups (made a typo in the database user password in the MySQL console once, forgot to tell PHP where to find php.ini, forgot to enable the PHP MySQL extension dll), and get everything working.<\/p>\n<p>\u00c2\u00a0Wow.\u00c2\u00a0 Now, I&#8217;m not what you would call a Unix guy &#8211; I do as much as I can on Windows and avoid Unix whereever possible, and here I am, having figured out this &#8220;crude&#8221; set of tools that don&#8217;t even have any friendly, advanced\u00c2\u00a0setup wizards or anything (well, MySQL has a relatively nice GUI setup, actually), learned how to create the database that WordPress needed myself in MySQL,\u00c2\u00a0and debugged\u00c2\u00a0setting up a complicated ISAPI extension in IIS with partially outdated documentation\u00c2\u00a0in a mere fraction of the time as what the leading Windows solution (with it&#8217;s\u00c2\u00a0do-everything-for-you-the-right-way setup wizards and all)\u00c2\u00a0took to get into an almost-working state.\u00c2\u00a0 I hate to admit it, but sometimes software that came from Unix just does things better sometimes.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>After wasting about 4 hours on this subject, I think it has deserved the right to be spoken about. \u00c2\u00a0Since I decided to finally give this whole blogging thing a try, I went looking for an appropriate set of blogging software to use.\u00c2\u00a0 My first instinct was to try Community Server with SQL Server 2005 [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":[],"categories":[6,2],"tags":[],"_links":{"self":[{"href":"http:\/\/www.nynaeve.net\/index.php?rest_route=\/wp\/v2\/posts\/4"}],"collection":[{"href":"http:\/\/www.nynaeve.net\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"http:\/\/www.nynaeve.net\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"http:\/\/www.nynaeve.net\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"http:\/\/www.nynaeve.net\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=4"}],"version-history":[{"count":1,"href":"http:\/\/www.nynaeve.net\/index.php?rest_route=\/wp\/v2\/posts\/4\/revisions"}],"predecessor-version":[{"id":707,"href":"http:\/\/www.nynaeve.net\/index.php?rest_route=\/wp\/v2\/posts\/4\/revisions\/707"}],"wp:attachment":[{"href":"http:\/\/www.nynaeve.net\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=4"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/www.nynaeve.net\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=4"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/www.nynaeve.net\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=4"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}