<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Linux System Admins Blog &#187; drupal</title>
	<atom:link href="http://linuxsysadminblog.com/category/drupal/feed/" rel="self" type="application/rss+xml" />
	<link>http://linuxsysadminblog.com</link>
	<description>System admins of Promet - an e-commerce, high availability Open Source web shop - share their findings</description>
	<lastBuildDate>Sat, 10 Jul 2010 01:33:47 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.2</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Drupalcon Security Session Notes</title>
		<link>http://linuxsysadminblog.com/2010/04/drupalcon-security-session-notes/</link>
		<comments>http://linuxsysadminblog.com/2010/04/drupalcon-security-session-notes/#comments</comments>
		<pubDate>Mon, 19 Apr 2010 22:27:19 +0000</pubDate>
		<dc:creator>andrew</dc:creator>
				<category><![CDATA[Security]]></category>
		<category><![CDATA[drupal]]></category>

		<guid isPermaLink="false">http://linuxsysadminblog.com/?p=1079</guid>
		<description><![CDATA[Some of us are attending the San Francisco Drupalcon 2010 this week.  I am in a session which some of you may find interesting.  The concepts are far from revelational but they are relevant.

Most security breaches are done still XSS
Some things to do to increase security

Do not allow full HTML as input to anyone &#8211; filtered HTML [...]]]></description>
			<content:encoded><![CDATA[<p>Some of us are attending the San Francisco Drupalcon 2010 this week.  I am in a session which some of you may find interesting.  The concepts are far from revelational but they are relevant.</p>
<ol>
<li>Most security breaches are done still XSS</li>
<li>Some things to do to increase security
<ol>
<li>Do not allow full HTML as input to anyone &#8211; filtered HTML only</li>
<li>ONly give Super admin privileges to trusted users</li>
</ol>
</li>
<li>Some best practices
<ol>
<li>Change passwords</li>
<li>
<li>do not use ftp</li>
<li>Keep your site up to date</li>
</li>
</ol>
</li>
<li>Online resources
<ol>
<li>drupal.org/sercurity</li>
<li>drupal.org/security/contrib</li>
<li>Security Review Module</li>
</ol>
</li>
</ol>
]]></content:encoded>
			<wfw:commentRss>http://linuxsysadminblog.com/2010/04/drupalcon-security-session-notes/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Problem Moving Drupal Site With SecurePages Module Enabled</title>
		<link>http://linuxsysadminblog.com/2010/02/problem-moving-drupal-site-with-securepages-module-enabled/</link>
		<comments>http://linuxsysadminblog.com/2010/02/problem-moving-drupal-site-with-securepages-module-enabled/#comments</comments>
		<pubDate>Wed, 17 Feb 2010 12:41:23 +0000</pubDate>
		<dc:creator>gerold</dc:creator>
				<category><![CDATA[HowTo]]></category>
		<category><![CDATA[Tips and Tricks]]></category>
		<category><![CDATA[drupal]]></category>
		<category><![CDATA[securepages]]></category>

		<guid isPermaLink="false">http://linuxsysadminblog.com/?p=1058</guid>
		<description><![CDATA[I made a copy of Drupal6 site with SecurePages module installed and configured.  This module is configured to redirect all or certain pages to https &#8211; depending on your configurations.  For our setup we usually include the login and admin sections to redirect to https.
The problem is on the copied site that is [...]]]></description>
			<content:encoded><![CDATA[<p>I made a copy of Drupal6 site with <a href="http://drupal.org/project/securepages">SecurePages</a> module installed and configured.  This module is configured to redirect all or certain pages to https &#8211; depending on your configurations.  For our setup we usually include the login and admin sections to redirect to https.</p>
<p>The problem is on the copied site that is on a new domain as we cannot login and go to the admin section because it redirect back to the source/original site.  What we need is either disable the securepages module or update the domains.  To do this, you need to access your database (ex: phpmyadmin, etc), go to <em>variable</em> table, and search for <em>securepages</em> configurations. </p>
<p>If you want to disable the module change:<br />
<code>securepages_enable  s:1:"<strong>1</strong>";</code><br />
to<br />
<code>securepages_enable  s:1:"<strong>0</strong>";</code></p>
<p>Or if you want to update the domain change:<span id="more-1058"></span><br />
<code>securepages_basepath s:30:"http://<strong>www.domain.com</strong>";<br />
securepages_basepath_ssl s:31:"https://<strong>www.domain.com</strong>";</code><br />
to<br />
<code>securepages_basepath s:30:"http://<strong>www.newdomain.com</strong>";<br />
securepages_basepath_ssl s:31:"https://<strong>www.newdomain.com</strong>";</code></p>
<p>After making the above changes <strong>don&#8217;t forget</strong> to run the update.php (http://www.newdomain.com/update.php)</p>
<p>If you want to uninstall the module, try removing the securepages directory and run update.php.</p>
]]></content:encoded>
			<wfw:commentRss>http://linuxsysadminblog.com/2010/02/problem-moving-drupal-site-with-securepages-module-enabled/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Making Changes to Drupal Core</title>
		<link>http://linuxsysadminblog.com/2010/02/making-changes-to-drupal-core/</link>
		<comments>http://linuxsysadminblog.com/2010/02/making-changes-to-drupal-core/#comments</comments>
		<pubDate>Mon, 15 Feb 2010 05:42:10 +0000</pubDate>
		<dc:creator>gerold</dc:creator>
				<category><![CDATA[HowTo]]></category>
		<category><![CDATA[Tips and Tricks]]></category>
		<category><![CDATA[drupal]]></category>

		<guid isPermaLink="false">http://linuxsysadminblog.com/?p=1040</guid>
		<description><![CDATA[Although we made it a standard not to make any changes to Drupal core and core modules, there are times that our developers really need to make changes to core modules in order to add the required functionality.  Cases like additional feature for &#8216;user&#8217; or &#8216;comment&#8217; modules and so on.  At this state [...]]]></description>
			<content:encoded><![CDATA[<p>Although we made it a standard not to make any changes to Drupal core and core modules, there are times that our developers really need to make changes to core modules in order to add the required functionality.  Cases like additional feature for &#8216;user&#8217; or &#8216;comment&#8217; modules and so on.  At this state we can&#8217;t perform automatic update on our sites as we might overwrite the changes &#8211; so we need to do the update manually.  Well, this is ok if you maintain one or two sites, but if you have more than 100 sites then it will take you some time.</p>
<p>What we did to eliminate this issue and be able to update the site automatically was to create a copy of the original core modules (located in <em>/modules</em>), add our custom functionality, and put the modified copy into &#8216;contributed&#8217; modules directory (<em>/sites/all/modules</em>).  Drupal read the modules found on <em>/sites/all/modules</em> first and ignore the same copy (original) found on <em>/modules</em>.  Also, may want to change the module info or the package name to separate the modified modules from the original ones &#8211; ex: modified_core, custom, etc.  In the case that Drupal reads both of them, you can just disable the other one.</p>
<p>Here&#8217;s our policy on working with Drupal modules:<br />
  &#8211; contributed or community modules at <em>/sites/all/modules</em><br />
  &#8211; custom made modules at <em>/sites/all/modules/custom</em><br />
  &#8211; modified core modules at <em>/sites/all/modules/core_modified</em></p>
<p>Hope this helps.  <img src='http://linuxsysadminblog.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' />  </p>
]]></content:encoded>
			<wfw:commentRss>http://linuxsysadminblog.com/2010/02/making-changes-to-drupal-core/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Drupal core &#8211; killing kittens</title>
		<link>http://linuxsysadminblog.com/2010/02/drupal-core-killing-kittens/</link>
		<comments>http://linuxsysadminblog.com/2010/02/drupal-core-killing-kittens/#comments</comments>
		<pubDate>Thu, 11 Feb 2010 03:36:57 +0000</pubDate>
		<dc:creator>andrew</dc:creator>
				<category><![CDATA[drupal]]></category>
		<category><![CDATA[fun]]></category>

		<guid isPermaLink="false">http://linuxsysadminblog.com/?p=1037</guid>
		<description><![CDATA[You may know that Drupal&#8217;s developers have a saying about hacking core, its whenever you hack core, god kills a kitten.
Well, whether it may or may not be true, we have learned the hard way how much can go wrong when a developer hacks core to meet some requirements and does not tell the sysadmin [...]]]></description>
			<content:encoded><![CDATA[<p>You may know that Drupal&#8217;s developers have a saying about hacking core, its whenever you hack core, god kills a kitten.</p>
<p>Well, whether it may or may not be true, we have learned the hard way how much can go wrong when a developer hacks core to meet some requirements and does not tell the sysadmin team about it.  Drupal security updates are essential to the health of the site, as sysadmins, if we want to scale anything that we do, we can not manage many sites whos cores have been hacked.</p>
<p>If you find yourslef in the situation where you have a hacked core&#8230; you may enjoy this while you pull your hair out or wipe your tears <img src='http://linuxsysadminblog.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p><object width="480" height="295"><param name="movie" value="http://www.youtube.com/v/L2pXcNu4GRo&#038;hl=en_US&#038;fs=1&#038;color1=0x006699&#038;color2=0x54abd6"></param><param name="allowFullScreen" value="true"></param><param name="allowscriptaccess" value="always"></param><embed src="http://www.youtube.com/v/L2pXcNu4GRo&#038;hl=en_US&#038;fs=1&#038;color1=0x006699&#038;color2=0x54abd6" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="480" height="295"></embed></object></p>
]]></content:encoded>
			<wfw:commentRss>http://linuxsysadminblog.com/2010/02/drupal-core-killing-kittens/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>cvs [checkout aborted]: absolute pathnames invalid for server</title>
		<link>http://linuxsysadminblog.com/2010/02/cvs-checkout-aborted-absolute-pathnames-invalid-for-server/</link>
		<comments>http://linuxsysadminblog.com/2010/02/cvs-checkout-aborted-absolute-pathnames-invalid-for-server/#comments</comments>
		<pubDate>Wed, 03 Feb 2010 09:44:00 +0000</pubDate>
		<dc:creator>gerold</dc:creator>
				<category><![CDATA[Debian]]></category>
		<category><![CDATA[Security]]></category>
		<category><![CDATA[Tips and Tricks]]></category>
		<category><![CDATA[drupal]]></category>
		<category><![CDATA[cvs]]></category>
		<category><![CDATA[drupa update]]></category>

		<guid isPermaLink="false">http://linuxsysadminblog.com/?p=1030</guid>
		<description><![CDATA[Absolute Path Error:
  cvs [checkout aborted]: absolute pathnames invalid for server (specified `/path/drupalsite/')
Ok, I got the error above when I performed Drupal CVS update on our Debian server (newly installed CVS 1.12.13).  The same command works on other server with older CVS installation.  The issue is the reference to local cvs directory [...]]]></description>
			<content:encoded><![CDATA[<p>Absolute Path Error:<br />
<code>  cvs [checkout aborted]: absolute pathnames invalid for server (specified `/path/drupalsite/')</code></p>
<p>Ok, I got the error above when I performed Drupal CVS update on our Debian server (newly installed CVS 1.12.13).  The same command works on other server with older CVS installation.  The issue is the reference to local cvs directory where I used absolute path (-d /path/drupalsite/), which is a bug (security hole on client side) &#8211; it was fixed on newer CVS version to use relative path.</p>
<p>Drupal Checkout Command:<br />
<code>  cvs -z6 -d:pserver:anonymous:anonymous@cvs.drupal.org:/cvs/drupal co -r DRUPAL-6-15 -d /path/drupalsite/ drupal</code></p>
<p>Use of Relative Path (sample)<br />
<code>  cd /path<br />
  cvs -z6 -d:pserver:anonymous:anonymous@cvs.drupal.org:/cvs/drupal co -r DRUPAL-6-15 -d drupalsite drupal</code></p>
]]></content:encoded>
			<wfw:commentRss>http://linuxsysadminblog.com/2010/02/cvs-checkout-aborted-absolute-pathnames-invalid-for-server/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>php 5.2.9 on RHEL5.x (for Drupal 6)</title>
		<link>http://linuxsysadminblog.com/2009/10/php-5-2-9-on-rhel5-x-for-drupal-6/</link>
		<comments>http://linuxsysadminblog.com/2009/10/php-5-2-9-on-rhel5-x-for-drupal-6/#comments</comments>
		<pubDate>Wed, 21 Oct 2009 20:10:13 +0000</pubDate>
		<dc:creator>max</dc:creator>
				<category><![CDATA[HowTo]]></category>
		<category><![CDATA[Installation]]></category>
		<category><![CDATA[drupal]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[rhel]]></category>

		<guid isPermaLink="false">http://linuxsysadminblog.com/?p=907</guid>
		<description><![CDATA[Latest version of PHP available for RHEL5.x is 5.1.6 and no new RedHat releases are coming as packaging has ceased. You can get PHP 5.3 for RHEL5 from Remi, but it it&#8217;s incompatible with latest versions of Drupal, Civicrm or many modules so we need the a 5.2X branch of PHP. This requires building php [...]]]></description>
			<content:encoded><![CDATA[<p>Latest version of <strong>PHP</strong> available for RHEL5.x is 5.1.6 and no new RedHat releases are coming as packaging has ceased. You can get PHP 5.3 for RHEL5 from <a href="http://blog.famillecollet.com/pages/Config-en">Remi</a>, but it it&#8217;s incompatible with latest versions of Drupal, Civicrm or many modules so we need the a 5.2X branch of PHP. This requires building php from source or using rpmbuild and source rpm. I was able to use <a href="http://kojipkgs.fedoraproject.org/packages/php/5.2.9/1.fc9/src/php-5.2.9-1.fc9.src.rpm">Koji&#8217;s</a> FC9 php5.2.9 src.rpm to rebuild for RHEL5 and here is how.<br />
<span id="more-907"></span></p>
<p>Install rpm-build package.<br />
<code>sudo yum install rpm-build</code></p>
<p>Create build env in your home directory (mine is called &#8216;max&#8217;), do NOT build as root user. I used &#8216;rpm&#8217; directory as the build location.<br />
<code>mkdir -p rpm/{SOURCES,SRPMS,SPECS,BUILD,RPMS}</code></p>
<p>Create .rpmmacros file which will identify the build location.<br />
<code>echo "%_topdir /home/max/rpm" > .rpmmacros</code></p>
<p>Download php5.2.9 rpm source file, i used FC9 version as it is closest to RHEL5.<br />
<code>wget http://kojipkgs.fedoraproject.org/packages/php/5.2.9/1.fc9/src/php-5.2.9-1.fc9.src.rpm</code></p>
<p>To rebuild php5.2.9 FC9 source RPM for RHEL5.x into binary RPM&#8217;s we need to make sure build dependences have been satisfied. I created a file called &#8220;php-deps&#8221; which contains the build dependencies to be installed via YUM.<br />
<code><br />
bzip2-devel<br />
curl-devel<br />
db4-devel<br />
gmp-devel<br />
httpd-devel<br />
pam-devel<br />
libstdc++-devel<br />
openssl-devel<br />
sqlite-devel<br />
zlib-devel<br />
pcre-devel<br />
readline-devel<br />
libtool<br />
gcc-c++<br />
krb5-devel<br />
libc-client-devel<br />
cyrus-sasl-devel<br />
openldap-devel<br />
mysql-devel<br />
postgresql-devel<br />
unixODBC-devel<br />
libxml2-devel<br />
net-snmp-devel<br />
libxslt-devel<br />
libxml2-devel<br />
mhash-devel<br />
ncurses-devel<br />
libXpm-devel<br />
libjpeg-devel<br />
</code></p>
<p>Install build dependencies via yum<br />
<code>sudo yum install -y `cat php-deps`</code></p>
<p>Finally perform the build, this could take some time depending on speed of your machine. If everything goes well many php*.rpm files will  be created in rpm/RPMS/&#8221;arch-type&#8221;/ folder. &#8220;arch-type&#8221; is the hardware-platform of your machine which will match &#8220;uname -i&#8221; command (mine is i386)<br />
<code>rpmbuild --rebuild php-5.2.9-1.fc9.src.rpm</code></p>
<p>Now you can install the resulting RPM&#8217;s manually but a better way is to create a local YUM repository.<br />
Install createrepo application via YUM.<br />
<code>sudo yum info createrepo</code></p>
<p>Create a repository location directory and copy your newly generated php5.2.9 RPM files into it.<br />
<code>sudo mkdir /opt/local-repository &#038;&#038; cp /home/max/rpm/RPMS/i386/* /opt/local-repository</code></p>
<p>Initialize the local repository and catalog the files copied there. (run this command anytime you add/remove files from your local repository directory)<br />
<code>sudo createrepo /opt/local-repository/</code></p>
<p>Configure your local repository with yum by creating a file in /etc/yum.repos.d called &#8220;local-repository.repo&#8221;<br />
containing:<br />
<code>[local-repository]<br />
name=RHEL5 $releasever - Local Repo<br />
baseurl=file:///opt/local-repository/<br />
enabled=0<br />
gpgcheck=0<br />
#gpgkey=file:///path/to/you/RPM-GPG-KEY<br />
</code></p>
<p>Update yum to register local repository<br />
<code>sudo yum update</code></p>
<p>Update php using your new rpm files via the local repository<br />
<code>sudo yum --enablerepo=local-repository update php</code></p>
<p>Restart apache<br />
<code>sudo /etc/init.d/httpd restart</code></p>
<p>Verify PHP version<br />
<code>php -v</code></p>
]]></content:encoded>
			<wfw:commentRss>http://linuxsysadminblog.com/2009/10/php-5-2-9-on-rhel5-x-for-drupal-6/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Install Apache Solr Multicore for Drupal</title>
		<link>http://linuxsysadminblog.com/2009/07/install-apache-solr-multicore-for-drupal/</link>
		<comments>http://linuxsysadminblog.com/2009/07/install-apache-solr-multicore-for-drupal/#comments</comments>
		<pubDate>Wed, 01 Jul 2009 15:14:11 +0000</pubDate>
		<dc:creator>gerold</dc:creator>
				<category><![CDATA[HowTo]]></category>
		<category><![CDATA[Installation]]></category>
		<category><![CDATA[drupal]]></category>
		<category><![CDATA[apachesolr]]></category>
		<category><![CDATA[solr]]></category>

		<guid isPermaLink="false">http://linuxsysadminblog.com/?p=770</guid>
		<description><![CDATA[Yesterday I received new installation request from developers to install ApacheSolr module for Drupal.  Check this link for more details on Apache Solr Search Integration.  Since this is new to me I spent some time on searching and doing test installations.  To make it short below is my setup on our shared [...]]]></description>
			<content:encoded><![CDATA[<p>Yesterday I received new installation request from developers to install ApacheSolr module for Drupal.  Check this <strong><a href="http://drupal.org/project/apachesolr">link</a></strong> for more details on Apache Solr Search Integration.  Since this is new to me I spent some time on searching and doing test installations.  To make it short below is my setup on our shared hosting server running CentOS with Cpanel.</p>
<p>Type: Multi-core  (for possible use on other Drupal sites)<br />
Java Servlet Container: Jetty (built-in on Solr)<br />
Drupal version: 6<br />
Java: 1.6</p>
<p>I based this guide plainly from this <a href="http://drupal.org/node/484800">Drupal  page</a>, and I made this summary for my own future reference.</p>
<p><strong>Process:</strong></p>
<p><strong>You need to have the Java installed first.</strong><br />
<span id="more-770"></span><br />
<strong>1)  ApacheSolr Drupal Module</strong></p>
<p><strong>1.1)</strong> <a href="http://drupal.org/project/apachesolr"><strong>Download</strong></a> and install ApacheSolr module to your site/s. Traditional download, extract, and enable method.<br />
<strong>1.2)</strong> <a href="http://code.google.com/p/solr-php-client/"><strong>Download</strong></a> SolrPHPClient (PHP library) and extract the the files inside of your ApacheSolr Drupal module.<br />
Example: <code>sites/all/modules/apachesolr/SolrPhpClient</code></p>
<p><strong>2) Solr:</strong></p>
<p><strong>2.1)</strong> Select a directory where you want to put your Solr files as long as it is not accessible to the web.<br />
Example: <code>/home/solr</code><br />
<strong>2.2)</strong> <a href="http://people.apache.org/builds/lucene/solr/nightly/"><strong>Download</strong></a> nightly build of Solr and extract to your selected directory.<br />
Example: <code>/home/solr/apache-solr-nightly</code><br />
<strong>2.3)</strong> Copy <em>example</em> directory to another directory like <em>drupal</em>.<br />
Example:<br />
<code>cp -r /home/solr/apache-solr-nightly/example /home/solr/apache-solr-nightly/drupal</code><br />
<strong>2.4)</strong> Copy <em>schema.xml</em> and <em>solrconfig.xml</em> files from your ApacheSolr Drupal module.<br />
<code>cp /path_to_site/sites/all/modules/apachesolr/schema.xml /home/solr/apache-solr-nightly/drupal/schema.xml<br />
cp /path_to_site/sites/all/modules/apachesolr/solrconfig.xml /home/solr/apache-solr-nightly/drupal/solrconfig.xml</code><br />
<strong>2.5)</strong> Copy &#8220;<code>/home/solr/apache-solr-nightly/drupal/multicore/solr.xml</code>&#8221; to &#8220;<code>/home/solr/apache-solr-nightly/drupal/solr/solr.xml</code>&#8221;<br />
<strong>2.6)</strong> Create directory for each site that will use the ApacheSolr inside &#8220;<code>/home/solr/apache-solr-nightly/drupal/solr</code>&#8221; and copy<br />
<code>/home/solr/apache-solr-nightly/drupal/conf</code> to each of them.<br />
Example:<br />
<code>mkdir /home/solr/apache-solr-nightly/drupal/solr/site_drupalsite1<br />
cp -r /home/solr/apache-solr-nightly/drupal/conf /home/solr/apache-solr-nightly/drupal/solr/site_drupalsite1/<br />
mkdir /home/solr/apache-solr-nightly/drupal/solr/site_drupalsite2<br />
cp -r /home/solr/apache-solr-nightly/drupal/conf /home/solr/apache-solr-nightly/drupal/solr/site_drupalsite2/</code><br />
<strong>2.7)</strong> Edit <code>/home/solr/apache-solr-nightly/drupal/solr.xml</code> and add the details/path of your site/s.<br />
Example:<br />
<code>&lt;cores adminPath="/admin/cores"&gt;<br />
&lt;core name="drupalsite1" instanceDir="site_drupalsite1" /&gt;<br />
&lt;core name="drupalsite2" instanceDir="site_drupalsite2" /&gt;<br />
&lt;/cores&gt;</code><br />
<strong>2.8)</strong> Start the Jetty servlet container.<br />
<code>cd /home/solr/apache-solr-nightly/drupal/<br />
java -jar start.jar</code><br />
<strong>2.9) </strong>Finally, visit <em>Drupal Admin</em> settings for ApacheSolr module to set the correct Solr path.<br />
Example:<br />
<code>Drupal Site1:  /solr/drupalsite1<br />
Drupal Site2:  /solr/drupalsite2</code></p>
<p>That&#8217;s it &#8211; we now have our complete ApacheSolr search integration.  Check the ApacheSolr documentation for more details on using this module.</p>
<p>Solr server is started manually and to make it running on start up or if you want to be able to start/stop/restart the server, please refer to this <strong><a href="http://19thstreetdesign.com/blog/2009.02.04/installing-apache-solr-drupal-6">blog post</a></strong>.</p>
<p>To add new sites (new sites with ApacheSolr module) just repeat steps 1 and 2.6 &#8211; 2.9, and restart the Solr server.</p>
]]></content:encoded>
			<wfw:commentRss>http://linuxsysadminblog.com/2009/07/install-apache-solr-multicore-for-drupal/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Monitoring Drupal Sites With Nagios</title>
		<link>http://linuxsysadminblog.com/2009/04/monitoring-drupal-sites-with-nagios/</link>
		<comments>http://linuxsysadminblog.com/2009/04/monitoring-drupal-sites-with-nagios/#comments</comments>
		<pubDate>Thu, 23 Apr 2009 09:22:31 +0000</pubDate>
		<dc:creator>gerold</dc:creator>
				<category><![CDATA[Centos]]></category>
		<category><![CDATA[Installation]]></category>
		<category><![CDATA[Nagios]]></category>
		<category><![CDATA[drupal]]></category>
		<category><![CDATA[monitoring]]></category>

		<guid isPermaLink="false">http://linuxsysadminblog.com/?p=549</guid>
		<description><![CDATA[There is a module released for monitoring Drupal sites with Nagios.  Monitoring includes the check if your site is up and running, check for new updates on Drupal core, security, and modules, database updates, write permission on &#8220;files&#8221; directory,  check if cron is running on the specified period, and other sections of your Drupal site.  [...]]]></description>
			<content:encoded><![CDATA[<p>There is a <a href="http://drupal.org/project/nagios"><strong>module</strong></a> released for monitoring <a href="http://drupal.org/">Drupal</a> sites with <a href="http://www.nagios.org/">Nagios</a>.  Monitoring includes the check if your site is up and running, check for new updates on Drupal core, security, and modules, database updates, write permission on &#8220;files&#8221; directory,  check if cron is running on the specified period, and other sections of your Drupal site.  It is intended and helpful to those maintain large number of Drupal sites.</p>
<p>At this time of writing, this module is still on a development version and there&#8217;s no guarantee that the installation guide will work out-of-the-box with your system.  And this post will mainly cover my own installation process on our Nagios monitoring server running on Debian and Nagios version 3.0, and Drupal version 6.x sites on web servers running CentOS 5.x.</p>
<p><strong>Installation</strong>:<br />
My installation is based on the included README file and with some adjustments to my liking.</p>
<p><strong>Install the Drupal Module:</strong></p>
<ul>
<li> Download the Nagios module from <a href="http://drupal.org/project/nagios">Drupal project page</a>.</li>
<li> Install the module to your Drupal site just like the other modules.  Download tarball, extract to modules directory ex: <strong><em>sites/all/modules/</em></strong>, go to <strong><em>admin-&gt;build-&gt;modules</em></strong> and enable the module.<span id="more-549"></span></li>
<li>Configure your Nagios module and set the site&#8217;s UniqueID and Cron duration.
<p><strong>UniqueID</strong> is your site identifier to be used by the Nagios (<em>check_drupal</em>) to authorize the service check and for security purposes.  The author also suggests the use of MD5 or SHA1 string. Refer to README for more info on this parameter.</p>
<p><strong>Cron Duration</strong> &#8211; you need to supply the interval of your cron job that checks for Drupal updates.  This value should match with your cron settings, ex: daily or every 3 hours..etc.</li>
</ul>
<p><strong>Configure Nagios checks:</strong></p>
<ul>
<li>Copy the plugin file (<strong><em>check_drupal</em></strong>) found on the <strong><em>nagios-plugin</em></strong> directory of the module, to your Nagios plugins directory where the other Nagios check commands are located &#8211; in my case it&#8217;s on <strong><em>/usr/local/nagios/libexec/</em></strong> (CentOS).
<p>If your Nagios installation is on a different machine than your Drupal server, you need to copy the <em><strong>check_drupal</strong></em> file in there.  You can also put it on the same server with Drupal sites and use NRPE instead.</p>
<p>On my CentOS machine i received an error on <strong><em>check_drupal</em></strong> regarding the location of <em><strong>basename</strong></em> file &#8211; it&#8217;s on <em><strong>/bin/basename</strong></em>.  You can edit the <em><strong>check_drupal</strong></em> file directly to adjust the path to <em><strong>basename</strong></em>.<br />
<code>./check_drupal: line 14: /usr/bin/basename: No such file or directory.</code></li>
<li> <strong>Add command, host, hostgroup, and service definition:</strong>
<p><strong>Command </strong>(commands.cfg):  I made small modification on the given commands from the README file to match my setup.<br />
<code>define command{<br />
command_name  check_drupal<br />
command_line  $USER1$/check_drupal -H $ARG1$ -U $ARG2$ -t $ARG3$<br />
}<br />
</code><br />
<strong>HostGroup</strong>:  I created a new Host group because we have other service checks on our server such as SSH, HTTP, LOAD, etc and I want to separate my checks for Drupal sites.<br />
<code>define hostgroup {<br />
hostgroup_name  Drupal<br />
alias           Drupal Sites<br />
members         MyWebServer<br />
}<br />
</code><br />
<strong>Host:</strong> I defined new host for Drupal sites so i can configure and group my them on the same host where they belong.<br />
<code>define host {<br />
host_name                      MyWebServer<br />
display_name                   MyWebServer<br />
address                        HOSTNAME/IP ADDRESS HERE<br />
hostgroups                     Drupal<br />
check_command                  check-host-alive<br />
contact_groups                 Admins<br />
check_period                   24x7<br />
max_check_attempts             10<br />
notification_interval          480<br />
notification_period            24x7<br />
notification_options           d,r<br />
notifications_enabled          1<br />
}<br />
</code><br />
<strong>Service:</strong> Below is my service checks definition for checking Drupal sites, i only need to copy this and change supply parameters for domain, unique key and the timeout.<br />
<code> define service {<br />
service_description            DRUPAL_SITE 1<br />
host_name                      MyWebServer<br />
check_period                   24x7<br />
max_check_attempts             3<br />
normal_check_interval          5<br />
retry_check_interval           3<br />
contact_groups                 Admins<br />
notification_interval          480<br />
notification_period            24x7<br />
notification_options           w,u,c,r<br />
check_command                  check_drupal!mysite.example.com!mykeyhere!5<br />
notifications_enabled          1<br />
}<br />
</code></li>
</ul>
<p>If your installation and configuration is correct you will get the Nagios service status similar below.  It indicates number of modules, themes, users, nodes, etc.</p>
<p><code>DRUPAL OK, ADMIN:OK, CRON:OK<br />
SAN=0;SAU=0;NOD=12;USR=7;MOD=23;THM=9</code></p>
<p>On my initial tests i received Nagios status (below) different than the above info and it was caused by my Apache configuration because i have a default Nagios installation before on my server that hosts my Drupal sites.</p>
<p><code>HTTP returned an error code. HTTP:   HTTP/1.1 301 Moved Permanently</code><br />
So you need to check first the url of your Nagios module installation ex:  http://mysamplesite.com/nagios/, this will give you:</p>
<p><code>Nagios status page<br />
nagios=UNKNOWN, DRUPAL:UNKNOWN=Unauthorized</code></p>
]]></content:encoded>
			<wfw:commentRss>http://linuxsysadminblog.com/2009/04/monitoring-drupal-sites-with-nagios/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Drupal HowTo:  Duplicate / Copy Drupal Site</title>
		<link>http://linuxsysadminblog.com/2009/04/drupal-howto-duplicate-copy-drupal-site/</link>
		<comments>http://linuxsysadminblog.com/2009/04/drupal-howto-duplicate-copy-drupal-site/#comments</comments>
		<pubDate>Fri, 03 Apr 2009 09:48:11 +0000</pubDate>
		<dc:creator>gerold</dc:creator>
				<category><![CDATA[Installation]]></category>
		<category><![CDATA[drupal]]></category>

		<guid isPermaLink="false">http://linuxsysadminblog.com/?p=484</guid>
		<description><![CDATA[This post cover the steps to copy, transfer, or duplicate a Drupal site to new domain or from development/test site to live/production server.  This requires shell/command line access to the server/accounts.  I attached (below) some bash/shell scripts below that i used to perform these task.
Backup:  In case the destination site or account [...]]]></description>
			<content:encoded><![CDATA[<p>This post cover the steps to copy, transfer, or duplicate a Drupal site to new domain or from development/test site to live/production server.  This requires shell/command line access to the server/accounts.  I attached (below) some bash/shell scripts below that i used to perform these task.</p>
<p><strong>Backup</strong>:  In case the destination site or account have existing contents, you need to backup them first or moved to separate location.</p>
<p><strong>Copy/Transfer Procedures</strong></p>
<p><strong>Database:</strong></p>
<p style="padding-left: 30px;">1.) Create an sql dump of your source database (use mysqldump)<br />
2.) Update references to domain/url and path or home directory (you can user perl/sed commands)<br />
3.) Import to your destination database (using mysql).</p>
<p><span id="more-484"></span><strong>Files/Codes:</strong></p>
<p style="padding-left: 30px;">1.)  Copy all files from your source directory or account to the destination site.<br />
2.)  Update references to database name, database user, database password, home directory of drupal installation, and domain name or url.<br />
3.)  Update permission and ownership of files and directories, like the sites/default/files to 777.</p>
<p><strong>Notes.</strong> If you have CiviCRM installed and on a separate database, then you can use this guide but do not perform or update the references to url and paths.  This guide is not applicable if you have CiviCRM installation which uses the same database as the Drupal database.  CiviCRM recommended install is to use a separate database.</p>
<p><strong>Shell / Bash Scripts:</strong></p>
<p style="padding-left: 30px;">1.)  Copy Drupal Site with CiviCRM.  <a href="http://linuxsysadminblog.com/wp-content/uploads/2009/04/copy_drupal_with_civicrm.sh"><strong>Download here!</strong></a></p>
<p style="padding-left: 30px;">2.)  Copy Drupal Site without CiviCRM.  <a href="http://linuxsysadminblog.com/wp-content/uploads/2009/04/copy_drupal_without_civicrm.sh"><strong>Download here!</strong></a></p>
<p><strong>Note: </strong>You can modify these scripts to work with sub-domains.<strong> </strong>Let me know if you have questions or suggestions or if you need help.<strong><br />
</strong></p>
]]></content:encoded>
			<wfw:commentRss>http://linuxsysadminblog.com/2009/04/drupal-howto-duplicate-copy-drupal-site/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Drupal performance tips from DrupalCon</title>
		<link>http://linuxsysadminblog.com/2009/03/drupal-performance-tips-from-drupalcon/</link>
		<comments>http://linuxsysadminblog.com/2009/03/drupal-performance-tips-from-drupalcon/#comments</comments>
		<pubDate>Thu, 05 Mar 2009 17:27:21 +0000</pubDate>
		<dc:creator>andrew</dc:creator>
				<category><![CDATA[Performance]]></category>
		<category><![CDATA[drupal]]></category>
		<category><![CDATA[monitoring]]></category>

		<guid isPermaLink="false">http://linuxsysadminblog.com/?p=397</guid>
		<description><![CDATA[increasing drupal performance notes from drupal con dc 2009]]></description>
			<content:encoded><![CDATA[<p>Still reporting from DrupalCon. So far there have been a number of sessions I have attended. Here are some highlights from those sessions on how to increase performance on your drupal site.</p>
<ul>
<li>Look at the number of requests a page makes to the server</li>
<li>Use yslow to measure page rendering (often a page performance is perceived, not just based on the server response time)</li>
</ul>
<ul>
<li>Remove search, use alternate solutions such as Apache Solr or Google Search API</li>
<li>Use CDN as much as possible</li>
<li>Use Reverse Proxy Cache and memcache</li>
<li>Obviously use drupal cache</li>
</ul>
<p>Some other notes that are somewhat related to drupal performance and site performance management in a clustered hosting environment.</p>
<p><strong>Manual updates and rollback</strong></p>
<p>OLD WAY: tar, move/copy untar restart services</p>
<p>OLD WAY: rsync</p>
<p>BETTER WAY: <a href="http://www.capify.org/" target="_blank">Capistrano </a></p>
<p><strong>Managing systems:</strong></p>
<p>BETTER WAY: <a href="http://trac.mcs.anl.gov/projects/bcfg2" target="_blank">bcfg2</a></p>
<p><strong>Monitoring Tools</strong></p>
<ul>
<li>Capacity Load: analyzing trends, predicting load, checking results of configuration and software changes (<a href="http://www.cacti.net/" target="_blank">cacti</a>, <a href="http://munin.projects.linpro.no/" target="_blank">munin</a>)</li>
<li>Failure: analyzing downtime, notification (<a href="http://www.nagios.org/" target="_blank">nagios</a> &#8211; using <strong>nrpe</strong> agents to monitor diverse services (do we use it this way?) , hyperin)</li>
</ul>
<p>Use monitoring tools to closely observe cluster replication and cashing as the failures in this area are the most difficult to solve.</p>
]]></content:encoded>
			<wfw:commentRss>http://linuxsysadminblog.com/2009/03/drupal-performance-tips-from-drupalcon/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
	</channel>
</rss>
