Baby Steps
Hello again. I've been busy with print work for most of the last couple of months, built a small Joomla site as well, but now it's time to get serious. I have an old friend who needs a new ecommerce site, and after some research, I'm taking a crack at Magento.
First of all, no I'm not crazy. I'm aware that Magento is the man eating shark of ecommerce platforms, and I ain't skeered. I'm diving in. Will it be worth the effort? I'll let you know in a bit. If not, you can read as the entire ugly saga unfolds here. I will be like one of those really awful action TV reality shows. Watched "Wipeout" in the hotel room on a business trip recently. Yeah, if I can't get this site built, it will be like that...
On to some hopefully useful information. First of all, I will say plan on installing Magento at least
twice three times. There is a lot of configuration to do when you first get started, and it will take you a few trips through to get everything really buttoned up... maybe. Secondly, AFAIK there is no sample data for Magento 1.5. So what you get is a blank page once you're through the config. Get used to that feeling. Finally, I will reiterate the warnings from everything else that I've read. This is not going to be a quick, up in a week kind of venture. I've been hacking around in PHP for a good part of the last 6 years, and my first look at the Magento templating structure was pretty daunting. I'm starting to get the hang of it, after about 2 weeks of research and tweaking around on a couple of test sites. I'm hoping to have a working site up within 2-3 months.
Installation I: PHP upgrade
I'm going to focus on Plesk here, because that's what I've been stuck with. Magento 1.5 requires the following (pulled from
Magento China) :
# Linux or another UNIX-compatible operating system (Windows is also supported, but see the Known Issues section below)
# Apache Web Server (1.x or 2.x)
# PHP 5.2.0 or newer, with the following extensions/addons:
* PDO/MySQL
* MySQLi
* mcrypt
* mhash
* simplexml
* DOM
# MySQL 4.1.20 or newer
# A Sendmail-compatible Mail Transfer Agent (MTA) – Magento will connect directly to an SMTP server if you don’t have an MTA
If you happen to be running Plesk 9.5.1, like me, you're in for some fun. After a failed attempt at upgrading PHP on my server, and a fun day of server down time, followed by an OS reload, I discovered the
PHP package upgrade for Plesk from Atomic Corp. This was an absolute lifesaver. After backing up EVERYTHING, I was able to complete this upgrade in a couple of hours, with almost no downtime (just time enough for a server boot). The only gotcha for me was that I didn't have mcrypt loaded. I was able to get that with "yum install php-mcrypt" after completing the rest of the install using the instructions linked above. You will get a warning about a conflict with Sitebuilder somewhere along the way, but can choose to disable sitebuilder. I can't remember exactly how that worked out, but I know that "Edit in Sitebuilder" is now grayed out in my Plesk control panel. Never used it, so I don't know what I'm missing. Everything else was already good to go on my server, so on to Magento.
Installation II: Magento
If you have SSH access to your server and the right permissions, you can upload the Magento ZIp file and then unzip on the server. This will save some upload time. After it's extracted, you can either leave Magento in it's folder, or move all of the files / folders up one level to your document root. That is what I decided on, as I think Magento is enough to deal with on it's own without cluttering up the site with anything else.
If you point your browser at http://your-domain.com/, you should now see the first page of the Magento install widget. If not, Magento will probably be telling you to install additional PHP modules. Good luck with that. If you've made it to the install widget, you're golden.
At this point, you will need to install an empty database on your server, and create a user and grant some permissions for the new database. You'll need a database name, user name, and password to input so that Magento will be able to access your database and create tables. This should be very straightforward if you've ever installed Joomla / Wordpress / Mambo / etc.
A quick word on the URL issue. Complete the installation on localhost is a bit tricky. Magento does not like localhost. If you substitute 127.0.0.1 for localhost, you're good to go. If you google this, you'll find a hack that will enable you to complete the install using a localhost/domain setup, but it looked kind of cheesy to me. So far I haven't had any issues related to using the IP address for this configuration.
Installation III: The Back End
OK So I'm falling asleep now. I hope you're more entertained than me. I promise to finish this up in the next couple of days, and hopefully get to the fun part - a working store - pretty quickly. But I'm all done for tonight. Just have time for a beer and a little Medal of Honor ;)
OK. I'm back again. If you've completed the Install Wizard, and click "Go to frontend", you should be looking at something about like this:
Yeah. Before you get too excited though, make sure you can log in to the back end. Go to your backend URL, which should be something like http://127.0.0.1/mydomain.com/admin/. Plug in the username and password that you created (and hopefully wrote down) for the installation wizard. If that works, you should see the following:

There are some critical settings on the back end that you should fix before you really get rolling. Number one, make sure the base URLs are set. From the admin dashboard, go to System -> Configuration. When the Configuration page loads, you'll see a menu labeled 'Configuration' at top-left. From there, click on 'Web'. This will bring up a ton of options more or less related to the way page requests are handled. There are two things which we need to edit here, or Magento will complain. Those are the two Base URL entries, one under each of the 'Unsecure' and 'Secure' headings. I don't have an SSL cert installed on my laptop, so I'm using the same URL for both: http://127.0.0.1/mydomain.com/. So far, this has worked just fine for testing purposes. Obviously in a production environment, you will want SSL to be up and running properly, and will need to set these paths to 'httpdocs' and 'httpsdocs' (or whatever your server layout requires).
Next, I recommend that you disable Magento's caching while you're working to get your store up and running. I have not taken the time to crawl through the code and find out exactly what Magento caches and where, but with the caching enabled I found myself having to stop working and flush Magento's cache every few minutes to see my changes. Obviously, you'll want to revisit this when you migrate to a production server, but for development and testing, the cache is much more annoying than helpful.
So from the admin dashboard, go to System -> Cache Managment. Click on the "Select All" link at top left, select 'Disable' from the drop-down menu at top right, and then click 'Submit'. You should then see the following: