Monday, September 30, 2013

Drupal 7 multi-site install on CentOS6

Tricks to getting a multi-site Drupal7 installed on CentOS w/ Apache2, mySQL.

Follow these two posts, more or less. The biggest point of advice is that for each url that isn't a subdomain should point to the same url (i.e. your.alternative.site [192.168.10.1] v. original.alternative.site [192.168.10.1] v. original.alternative.site/different [192.168.10.1])

These are suggested reading sites, but none of them are exact, always referencing ubuntu or other linux distros...mine was a little different.

https://drupal.org/node/290768

https://drupal.org/node/138889#comment-2510252

https://drupal.org/node/1114158

http://www.seascapewebdesign.com/blog/how-setup-multi-sites-drupal-6-and-drupal-7

The most important thing is to have drush installed (mentioned in my other post). That makes installing everything else move quite quickly.

This doesn't have to be the same for everyone, but here are my steps:
1) cd /var/www/vhosts/drupal7 (if vhosts or drupal7 doesn't exist, create them)
2) drush dl drupal
before step 3, make sure to create the databases you need
pre-3a) mysql -u userName -p (this user is your sql admin user name, same or different from drupal db's)
pre-3b) create database YourMySQLDbName;
pre-3c) grant all on YourMySQLDbName.* to YourMySQLUserName@localhost identified by 'PasswordYouSet';
3) drush site-install standard --account-name=admin --account-pass=admin --db-url=mysql://YourMySQLUserName:PasswordYouSet@localhost/YourMySQLDbName
4) vi /etc/http/conf.d/drupal7.conf (make this if it doesn't exist yet)
5) paste the following in, save, then quit:

Alias drupal7 127.0.0.1

<Directory /var/www/vhosts/drupal7>
Options +FollowSymLinks
AllowOverride All
order allow,deny
allow from all
</Directory>

6) vi /etc/http/conf.d/00_drupal.conf (make this if it doesn't exist yet)
one thing I've learned about apache is that the apache configuration file works alphabetically, and this file is the configuration for all virtualhosts (which allows us to have the multi-sites installed correctly)
7) paste the following in, save, then quit:
NameVirtualHost *:80

<Directory /var/www/vhosts>
  AllowOverride All
</Directory>

<VirtualHost *:80>
   ServerPath /drupal7
   DocumentRoot /var/www/vhosts/drupal7
   ServerName drupal7
</VirtualHost>

8) apachectl restart

you should still be in the /var/www/vhosts/drupal7 directory
9) cp -a default/ sites/your.alternative.site/ (create it if it doesn't exist)
this should move over the files/ folder, settings.php and default.settings.php

10) chmod a+w sites/your.alternative.site/settings.php
&
chmod a+w sites/your.alternative.site/files

11) vi sites/sites.php
at the bottom of the file, you should add a line for each site you're installing. This hash is useful for finding the website and folders based on the apache setup (we'll get to that shortly).  Add the following:

$sites['nickname'] = 'your.alternative.site' (this is the folder path in drupal7/sites/your.alternative.site)

save and exit

12) now for your newly added site, we need to append info to the conf file so apache knows to redirect correctly to the sites.php file which will redirect to the correct folder which will show the correct site
vi /etc/http/conf.d/00_drupal.conf

at the bottom, add:

<VirtualHost *:80>
   DocumentRoot /var/www/vhosts/drupal7/sites/your.alternative.site
   ServerName nickname
</VirtualHost>

repeat for each new site

13) Finally change the settings for the newest site added:
vi sites/your.alternative.site/settings.php

change the database information for your new site

14) now setup your site: your.alternative.site/install.php?

15) after setup, change the folder and file permissions back

16) pat yourself on the back, it's all done :) - maybe a drush script for multi-site would be useful?

Wednesday, September 11, 2013

Drupal 7 on OSX 10.8, with Apache 2.2, MySQL, and PHP 5

This post is more about my experience of using a local instance of Drupal on my OSX box. The following are links about resources I found extremely helpful. Basically, I installed 2 versions (Drupal 7.2 and , and you have to jump through some hoops because although OSX ships with Apache and PHP, you need to now enable some settings (via cmd line or other tools) in order to have web sharing activated again (the silly prompt from the Preferences Pane is now gone *insert_sad_face*)

SITES:

1) This one helped me get the AMP stack going on my box (it also had some good step by step instructions about using phpMyAdmin)
http://www.coolestguyplanettech.com/downtown/install-and-configure-apache-mysql-php-and-phpmyadmin-osx-108-mountain-lion#apache

2) Getting a few steps closer, this site gave me some more info about getting the info setup correctly for Drupal as well as AMP stack
http://drewish.com/2012/07/26/drupal-on-mountain-lion-os-x-10-8/

3) A few stack overflow links
http://stackoverflow.com/questions/1676688/php-mysql-connection-not-working-2002-no-such-file-or-directory
and
http://stackoverflow.com/questions/1819592/error-when-connecting-to-mysql-using-php-pdo

4) And I cannot forget the infallible directions from Drupal.org
https://drupal.org/documentation/install

5) and for good measure, once I installed phpMyAdmin, the help docs helped :)
phpMyAdmin/doc/html/setup.html#setup_script
and
phpMyAdmin/doc/html/faq.html

So almost all of this got me to the right place, though it took a few hours to get screens working, and the DB didn't want to initially work. Why? Well, because the pdo_mysql.default_socket was not commented out...huh? Yeah, it didn't make sense to me for a bit. I searched lord google for things about the following error messages:

Warning: PDO::__construct(): [2002] No such file or directory (trying to connect via unix:///tmp/mysqld.sock)

Yeah, that kind of message didn't help at all, until I started changing my php.ini file around, and realized that that specific line, though correct (in a couple different ways, might I add), was wrong. My uneducated guess is that pdo_mysql is for Unix only, and as I am on OSX, it was wrong. Just commenting it out made it all better, install scripts started running on both installs, cats and dogs started sleeping together, and donuts began raining from the heavens...Ok, the last two didn't happen, but still, I hope this helps someone else besides me.

Tuesday, September 3, 2013

Setting up Jenkins on CentOS

It's been a while since I needed to install Jenkins, but I'm getting to the point where I'd like my code in GitHub (eventually pushed down to my own Git server on my CentOS box, once I figure out SSH), to be checked against tests whenever commits are made. Jenkins is the most kick-ass CI tool I know about. Setting it up is relatively easy, and getting it to play with Github is a cinch.

I followed the following steps to get it mostly up and running:
http://www.andrewzammit.com/blog/installing-jenkins-ci-on-centos-6-x-tomcat-with-an-ajp-proxy/

The only thing I'm not completely sure about is AJP. This is something outside the realm of my experience, and if it breaks, or if I have to learn more, I will, but for now, I want my box to pull against my repo, and if there's a change, pull, run tests, notify developers (rinse, repeat).

The only issue I really ran into was that Jenkins didn't run on the default java I had installed, so a quick update to my CentOS java via:

yum install java-1.7.0-openjdk

And now I have Jenkins up and running on CentOS!

Next is to figure out some good ole VPN fun, and then SSH (or the other way around).