Difference between revisions of "Drupal"

From ArchWiki
Jump to: navigation, search
m (More Resources: Use internal link)
m (Style)
Line 3: Line 3:
 
[[zh-CN:Drupal]]
 
[[zh-CN:Drupal]]
 
[[Category:Web Server]]
 
[[Category:Web Server]]
 
 
''"Drupal is a free and open source content management system (CMS) and Content Management framework (CMF) written in PHP and distributed under the GNU General Public License."'' - [http://en.wikipedia.org/wiki/Drupal Wikipedia]
 
''"Drupal is a free and open source content management system (CMS) and Content Management framework (CMF) written in PHP and distributed under the GNU General Public License."'' - [http://en.wikipedia.org/wiki/Drupal Wikipedia]
  
 
This article describes how to setup Drupal and configure [[Apache]], [[MySQL]] or [[PostgreSQL]], [[PHP]], and [[Postfix]] to work with it. It is assumed that you have some sort of [[LAMP]] (Apache, MySQL, PHP) or LAPP (Apache, PostgreSQL, PHP) server already setup.
 
This article describes how to setup Drupal and configure [[Apache]], [[MySQL]] or [[PostgreSQL]], [[PHP]], and [[Postfix]] to work with it. It is assumed that you have some sort of [[LAMP]] (Apache, MySQL, PHP) or LAPP (Apache, PostgreSQL, PHP) server already setup.
  
==Installation==
+
== Installation ==
  
===Installing Drupal===
+
=== Arch repositories ===
  
====from Arch repositories====
+
[[pacman|Install]] the {{Pkg|drupal}} package from the [[official repositories]].
#Install the {{Pkg|drupal}} package from [[community]] using [[pacman]].
+
#Edit {{ic|/etc/php/php.ini}}:
+
#*If PHP version is less than 5.2.0, Find the line with "{{Ic|<nowiki>;extension=json.so</nowiki>}}" and uncomment it by removing the ";" from the beginning of the line if necessary. If no such line is found, add it to the {{Ic|<nowiki>[PHP]</nowiki>}} section of the file.
+
#*For Drupal 7, enable a PDO extension for your database. For MySQL, the line {{Ic|<nowiki>extension=pdo_mysql.so</nowiki>}} should be uncommented.
+
#*Find the line beginning "{{Ic|<nowiki>open_basedir =</nowiki>}}". Add the Drupal install directories, {{ic|/usr/share/webapps/drupal/}} and {{ic|/var/lib/drupal/}}. {{ic|/srv/http/}} can be removed if you do not intend to use it.
+
#Edit {{ic|/etc/httpd/conf/httpd.conf}}:
+
#*If your webserver is dedicated to drupal,
+
#**Find the line {{ic|DocumentRoot "/srv/http"}} and change it to the Drupal install directory, ''i.e.'' {{ic|DocumentRoot "/usr/share/webapps/drupal"}}.
+
#**Find the section that starts with "{{Ic|&lt;Directory "/srv/http"&gt;}}" and change {{ic|/srv/http}} to the Drupal install directory, {{ic|/usr/share/webapps/drupal}}. In the same section, make sure it includes a line "{{Ic|AllowOverride All}}" to enable the clean URL's.
+
#*If you are using Apache Virtual Hosts, see [[Apache#Virtual_Hosts]].
+
#Comment out the '{{Ic|deny from all}}' line of the {{ic|/usr/share/webapps/drupal/.htaccess}} file to enable httpd access.
+
#[[Daemons#Restarting|Restart]] Apache (httpd).
+
  
====manual install====
+
Edit {{ic|/etc/php/php.ini}}:
 +
*If PHP version is less than 5.2.0, Find the line with {{ic|<nowiki>;extension=json.so</nowiki>}} and uncomment it by removing the ";" from the beginning of the line if necessary. If no such line is found, add it to the {{ic|<nowiki>[PHP]</nowiki>}} section of the file.
 +
*For Drupal 7, enable a PDO extension for your database. For MySQL, the line {{ic|<nowiki>extension=pdo_mysql.so</nowiki>}} should be uncommented.
 +
*Find the line beginning with {{ic|<nowiki>open_basedir =</nowiki>}}. Add the Drupal install directories, {{ic|/usr/share/webapps/drupal/}} and {{ic|/var/lib/drupal/}}. {{ic|/srv/http/}} can be removed if you do not intend to use it.
  
#Download the latest package from http://drupal.org and extract it.
+
Edit {{ic|/etc/httpd/conf/httpd.conf}}:
#Move the folders to apache's htdocs folder.
+
*If your webserver is dedicated to Drupal, find the line {{ic|DocumentRoot "/srv/http"}} and change it to the Drupal install directory, ''i.e.'' {{ic|DocumentRoot "/usr/share/webapps/drupal"}}, then find the section that starts with "{{ic|&lt;Directory "/srv/http"&gt;}}" and change {{ic|/srv/http}} to the Drupal install directory, {{ic|/usr/share/webapps/drupal}}. In the same section, make sure it includes a line "{{ic|AllowOverride All}}" to enable the clean URL's.
#Open a web browser, and navigate to "localhost"
+
*If you are using Apache Virtual Hosts, see [[Apache#Virtual_Hosts]].
#Follow the on-screen instructions.
+
  
===Installing GD===
 
You may need the GD library for your Drupal installation.
 
#Install the {{Pkg|php-gd}} package using [[pacman]].
 
#Edit {{ic|/etc/php/php.ini}}. Find the line with {{Ic|<nowiki>;extension=gd.so</nowiki>}} and uncomment it by removing the ";". If no such line is found, add it to the {{Ic|<nowiki>[PHP]</nowiki>}} section of the file.
 
#[[Daemons#Restarting|Restart]] Apache (httpd).
 
  
===Installing Postfix===
+
Finally comment out the {{ic|deny from all}} line of the {{ic|/usr/share/webapps/drupal/.htaccess}} file to enable httpd access and [[Daemons#Restarting|restart]] Apache (httpd).
In order to send e-mails with Drupal, you will need to install [[postfix]].  Drupal uses e-mails for account verification, password recovery, etc.
+
#Install Postfix<pre># pacman -S postfix </pre>
+
#Configure Postfix as needed <pre># nano /etc/postfix/main.cf </pre> All that you should have to do is change the hostnames under "Internet Host and Domain Names" <pre> myhostname = hostname1 </pre><br>And then start the Postfix service:<pre># rc.d start postfix</pre>
+
#Send a test e-mail to yourself <pre> mail myusername@localhost </pre> (Enter a subject, some words in the body, then press ctrl+d to exit and send the letter) Wait 10 seconds, and then type {{Ic|mail}} to check your mail. If you've gotten it, excellent.
+
#Make sure Port 25 is fowarded if you have a router so that mails can be sent to the Internet at large
+
#Open the file {{ic|/etc/php/php.ini}} with your editor of choice, e.g. <pre># nano /etc/php/php.ini</pre> Find the line that starts with, {{Ic|<nowiki>;sendmail_path=""</nowiki>}} and change it to {{Ic|<nowiki>sendmail_path="/usr/sbin/sendmail -t -i"</nowiki>}}
+
#Restart the Apache web server<pre>rc.d restart httpd</pre>
+
  
==Tips and Tricks==
+
=== Manual install ===
  
===Scheduling with Cron===
+
Download the latest package from http://drupal.org and extract it. Move the folders to Apache's htdocs folder. Open a web browser, and navigate to [localhost localhost]. Follow the on-screen instructions.
Drupal recommends running cron jobs hourly.  Cron can be executed from the browser by visiting '''<code>localhost/cron</code>'''  It is also possible to run cron via script by copying the appropriate file from the "scripts" folder into {{ic|/etc/cron.hourly}} and making it executable.
+
  
===Xampp Compatibility===
+
=== Installing GD ===
  
The 5.x and 6.x series of Drupal do not support PHP 5.3, and as a result are incompatible with the latest release of [[Xampp]]. Currently, the last Drupal-compatible version of Xampp is 1.7.1.
+
You may need the GD library for your Drupal installation. First install the {{Pkg|php-gd}} package.
 +
Edit {{ic|/etc/php/php.ini}}. Find the line with {{ic|<nowiki>;extension=gd.so</nowiki>}} and uncomment it by removing the ";". If no such line is found, add it to the {{ic|<nowiki>[PHP]</nowiki>}} section of the file.
 +
[[Daemons#Restarting|Restart]] Apache (httpd).
  
Note: Xampp's PHP memory limit currently defaults to 8MB.  Also, Xampp ignores php.ini files in the Drupal directory.  To fix this:
+
=== Installing Postfix ===
#edit Xampp's php.ini file using your favorite editor.<pre>nano /opt/lampp/etc/php.ini</pre>
+
#Search for the "memory_limit" line, and replace it with an appropriate value.  (Most Drupal installations are happy with 32M, but sites with a lot of modules may need 100M or more.)
+
#Restart Xampp.<pre>/opt/lampp/lampp restart</pre>
+
  
===Upload progress Not enabled===
+
In order to send e-mails with Drupal, you will need to install [[Postfix]]. Drupal uses e-mails for account verification, password recovery, etc. First install {{Pkg|postfix}}.
 +
# Edit Postfix configuration file {{ic|/etc/postfix/main.cf}} as needed. All that you should have to do is change the hostnames under "Internet Host and Domain Names" {{ic|myhostname &#61; hostname1}}
 +
# Start the Postfix service: {{ic|# systemctl start postfix}}.
 +
# Send a test e-mail to yourself: {{ic|mail myusername@localhost}}. Enter a subject, some words in the body, then press {{Keypress|Ctrl+d}} to exit and send the letter. Wait 10 seconds, and then type {{ic|mail}} to check your mail. If you've gotten it, excellent.
 +
# Make sure port 25 is fowarded if you have a router so that mails can be sent to the Internet at large
 +
# Edit the file {{ic|/etc/php/php.ini}}. Find the line that starts with, {{ic|<nowiki>;sendmail_path=""</nowiki>}} and change it to {{ic|<nowiki>sendmail_path="/usr/sbin/sendmail -t -i"</nowiki>}}
 +
# Restart the Apache web server.
 +
 
 +
== Tips and tricks ==
 +
 
 +
=== Scheduling with Cron ===
 +
 
 +
Drupal recommends running cron jobs hourly. Cron can be executed from the browser by visiting [localhost/cron localhost/cron]. It is also possible to run cron via script by copying the appropriate file from the "scripts" folder into {{ic|/etc/cron.hourly}} and making it executable.
 +
 
 +
=== Xampp Compatibility ===
 +
 
 +
The 5.x and 6.x series of Drupal do not support PHP 5.3, and as a result are incompatible with the latest release of [[Xampp]]. Currently, the last Drupal-compatible version of Xampp is 1.7.1.
 +
 
 +
Note: Xampp's PHP memory limit currently defaults to 8MB. Also, Xampp ignores php.ini files in the Drupal directory. To fix this:
 +
# Edit Xampp's configuration file {{ic|/opt/lampp/etc/php.ini}} using your favorite editor.
 +
# Search for the "memory_limit" line, and replace it with an appropriate value. Most Drupal installations just need 32MB, but sites with a lot of modules may need 100MB or more.
 +
# Restart Xampp: {{ic|/opt/lampp/lampp restart}}
 +
 
 +
=== Upload progress not enabled ===
  
 
Upon successful installation you may see the following message in the Status Report:
 
Upon successful installation you may see the following message in the Status Report:
 
{{Box BLUE||Your server is capable of displaying file upload progress, but does not have the required libraries. It is recommended to install the PECL uploadprogress library (preferred) or to install APC.}}
 
{{Box BLUE||Your server is capable of displaying file upload progress, but does not have the required libraries. It is recommended to install the PECL uploadprogress library (preferred) or to install APC.}}
<br>
+
 
First, install the <code>php-pear</code> package:
+
First, install the {{Pkg|php-pear}} package.
<pre># pacman -S php-pear</pre>
+
Next, use the '''pecl''' command to automatically download, compile and install the library:
Next, use the <code>pecl</code> command to automatically download, compile and install the library:
+
# pecl install uploadprogress
<pre># pecl install uploadprogress</pre>
+
 
Finally, add to {{ic|/etc/php/php.ini}}
 
Finally, add to {{ic|/etc/php/php.ini}}
<pre>extension=uploadprogress.so</pre>
+
extension=uploadprogress.so
Restart apache.
+
Restart Apache.
  
==Troubleshooting==
+
== Troubleshooting ==
  
===Browser shows the actual PHP code when visiting localhost===
+
=== Browser shows the actual PHP code when visiting localhost ===
  
You do not have php-apache installed.
+
You do not have {{Pkg|php-apache}} installed.
<pre># pacman -S php-apache</pre>
+
  
 
Then, enable the PHP module in {{ic|/etc/httpd/conf/httpd.conf}} by adding the following lines in the appropriate sections:
 
Then, enable the PHP module in {{ic|/etc/httpd/conf/httpd.conf}} by adding the following lines in the appropriate sections:
<pre>LoadModule php5_module modules/libphp5.so
+
LoadModule php5_module modules/libphp5.so
Include conf/extra/php5_module.conf</pre>
+
Include conf/extra/php5_module.conf
  
 
If, when starting httpd, you get the following error:
 
If, when starting httpd, you get the following error:
<pre>httpd: Could not reliably determine the server's fully qualified domain name, using 127.0.0.1 for ServerName</pre>
+
httpd: Could not reliably determine the server's fully qualified domain name, using 127.0.0.1 for ServerName
You should edit {{ic|httpd.conf}}
+
You should edit {{ic|/etc/httpd/conf/httpd.conf}}.
<pre># nano /etc/httpd/conf/httpd.conf</pre>
+
 
In that file find the line that looks similar to
 
In that file find the line that looks similar to
<pre>#ServerName www.example.com:80</pre>
+
#ServerName www.example.com:80
Uncomment it (remove # from the front) and adjust the address as needed. Restart httpd by
+
Uncomment it (remove # from the front) and adjust the address as needed. Restart httpd:
<pre># /etc/rc.d/httpd restart</pre>
+
# systemctl restart httpd
or
+
 
<pre># rc.d restart httpd</pre> and you are ready to go!
+
=== Setup page is not the initial page when accessing localhost ===
 +
 
 +
In this situation, you should navigate in your {{ic|/srv}} directory and look for the {{ic|drupal}} folder (most probably it will be in the {{ic|http}} directory). Then edit {{ic|/etc/httpd/conf/httpd.conf}}.
 +
and look for a line starting with {{ic|DocumentRoot}} and change the path with that folder's path (for example {{ic|DocumentRoot "/srv/http/drupal"}}) and also find another line starting with {{ic|<Directory}} and set the same path there as well. Restart httpd.
  
===Drupal's setup page is not the initial page when accessing localhost===
+
=== Setup page does not start and shows HTTP ERROR 500 ===
  
In this situation, you should navigate in your {{ic|/srv}} directory and look for the {{ic|drupal}} folder (most probably it will be in the {{ic|http}} directory). Then edit {{ic|httpd.conf}} by
+
This may be because Drupal needs the {{ic|json.so}} extension to be activated in your {{ic|/etc/php/php.ini}}.
<pre># nano /etc/httpd/conf/httpd.conf</pre>
+
Just uncomment in {{ic|/etc/php/php.ini}} the line:
and look for a line starting with {{Ic|DocumentRoot}} and change the path with that folder's path (for me it looks like DocumentRoot "/srv/http/drupal") and also find another line starting with <pre><Directory</pre> and set the same path there as well. Restart httpd by <pre># rc.d restart httpd</pre> and you will be done.
+
;extension=json.so
 +
Restart httpd service.
  
===Drupal's setup page does not start and shows HTTP ERROR 500===
+
See [http://drupal.org/node/1018824 this link] for info.
  
This may be because Drupal needs the {{Ic|json.so}} extension to be activated in your {{ic|/etc/php/php.ini}}.
+
== See also ==
just uncomment the line
+
{{Ic|<nowiki>;extension=json.so</nowiki>}}
+
from {{ic|/etc/php/php.ini}} by deleting the initial ';' and restart httpd service by typing
+
<code>rc.d restart httpd</code>.
+
(See [http://drupal.org/node/1018824 this link] for info.)
+
  
==More Resources==
+
* [http://drupal.org/handbook Official Drupal documentation]
* [http://drupal.org/handbook Official Drupal Documentation]
+
* [http://drupal.org/node/307956 Simple guide to install Drupal on Xampp]
* [http://drupal.org/node/307956 Simple Guide to Install Drupal on Xampp]
+
* [[LAMP|LAMP (How to setup an Apache server)]]
* [[LAMP|LAMP (How to setup an apache server)]]
+

Revision as of 13:33, 31 May 2013

"Drupal is a free and open source content management system (CMS) and Content Management framework (CMF) written in PHP and distributed under the GNU General Public License." - Wikipedia

This article describes how to setup Drupal and configure Apache, MySQL or PostgreSQL, PHP, and Postfix to work with it. It is assumed that you have some sort of LAMP (Apache, MySQL, PHP) or LAPP (Apache, PostgreSQL, PHP) server already setup.

Installation

Arch repositories

Install the drupal package from the official repositories.

Edit /etc/php/php.ini:

  • If PHP version is less than 5.2.0, Find the line with ;extension=json.so and uncomment it by removing the ";" from the beginning of the line if necessary. If no such line is found, add it to the [PHP] section of the file.
  • For Drupal 7, enable a PDO extension for your database. For MySQL, the line extension=pdo_mysql.so should be uncommented.
  • Find the line beginning with open_basedir =. Add the Drupal install directories, /usr/share/webapps/drupal/ and /var/lib/drupal/. /srv/http/ can be removed if you do not intend to use it.

Edit /etc/httpd/conf/httpd.conf:

  • If your webserver is dedicated to Drupal, find the line DocumentRoot "/srv/http" and change it to the Drupal install directory, i.e. DocumentRoot "/usr/share/webapps/drupal", then find the section that starts with "<Directory "/srv/http">" and change /srv/http to the Drupal install directory, /usr/share/webapps/drupal. In the same section, make sure it includes a line "AllowOverride All" to enable the clean URL's.
  • If you are using Apache Virtual Hosts, see Apache#Virtual_Hosts.


Finally comment out the deny from all line of the /usr/share/webapps/drupal/.htaccess file to enable httpd access and restart Apache (httpd).

Manual install

Download the latest package from http://drupal.org and extract it. Move the folders to Apache's htdocs folder. Open a web browser, and navigate to [localhost localhost]. Follow the on-screen instructions.

Installing GD

You may need the GD library for your Drupal installation. First install the php-gd package. Edit /etc/php/php.ini. Find the line with ;extension=gd.so and uncomment it by removing the ";". If no such line is found, add it to the [PHP] section of the file. Restart Apache (httpd).

Installing Postfix

In order to send e-mails with Drupal, you will need to install Postfix. Drupal uses e-mails for account verification, password recovery, etc. First install postfix.

  1. Edit Postfix configuration file /etc/postfix/main.cf as needed. All that you should have to do is change the hostnames under "Internet Host and Domain Names" myhostname = hostname1
  2. Start the Postfix service: # systemctl start postfix.
  3. Send a test e-mail to yourself: mail myusername@localhost. Enter a subject, some words in the body, then press Template:Keypress to exit and send the letter. Wait 10 seconds, and then type mail to check your mail. If you've gotten it, excellent.
  4. Make sure port 25 is fowarded if you have a router so that mails can be sent to the Internet at large
  5. Edit the file /etc/php/php.ini. Find the line that starts with, ;sendmail_path="" and change it to sendmail_path="/usr/sbin/sendmail -t -i"
  6. Restart the Apache web server.

Tips and tricks

Scheduling with Cron

Drupal recommends running cron jobs hourly. Cron can be executed from the browser by visiting [localhost/cron localhost/cron]. It is also possible to run cron via script by copying the appropriate file from the "scripts" folder into /etc/cron.hourly and making it executable.

Xampp Compatibility

The 5.x and 6.x series of Drupal do not support PHP 5.3, and as a result are incompatible with the latest release of Xampp. Currently, the last Drupal-compatible version of Xampp is 1.7.1.

Note: Xampp's PHP memory limit currently defaults to 8MB. Also, Xampp ignores php.ini files in the Drupal directory. To fix this:

  1. Edit Xampp's configuration file /opt/lampp/etc/php.ini using your favorite editor.
  2. Search for the "memory_limit" line, and replace it with an appropriate value. Most Drupal installations just need 32MB, but sites with a lot of modules may need 100MB or more.
  3. Restart Xampp: /opt/lampp/lampp restart

Upload progress not enabled

Upon successful installation you may see the following message in the Status Report:

Your server is capable of displaying file upload progress, but does not have the required libraries. It is recommended to install the PECL uploadprogress library (preferred) or to install APC.

First, install the php-pear package. Next, use the pecl command to automatically download, compile and install the library:

# pecl install uploadprogress

Finally, add to /etc/php/php.ini

extension=uploadprogress.so

Restart Apache.

Troubleshooting

Browser shows the actual PHP code when visiting localhost

You do not have php-apache installed.

Then, enable the PHP module in /etc/httpd/conf/httpd.conf by adding the following lines in the appropriate sections:

LoadModule php5_module modules/libphp5.so
Include conf/extra/php5_module.conf

If, when starting httpd, you get the following error:

httpd: Could not reliably determine the server's fully qualified domain name, using 127.0.0.1 for ServerName

You should edit /etc/httpd/conf/httpd.conf. In that file find the line that looks similar to

#ServerName www.example.com:80

Uncomment it (remove # from the front) and adjust the address as needed. Restart httpd:

# systemctl restart httpd

Setup page is not the initial page when accessing localhost

In this situation, you should navigate in your /srv directory and look for the drupal folder (most probably it will be in the http directory). Then edit /etc/httpd/conf/httpd.conf. and look for a line starting with DocumentRoot and change the path with that folder's path (for example DocumentRoot "/srv/http/drupal") and also find another line starting with <Directory and set the same path there as well. Restart httpd.

Setup page does not start and shows HTTP ERROR 500

This may be because Drupal needs the json.so extension to be activated in your /etc/php/php.ini. Just uncomment in /etc/php/php.ini the line:

;extension=json.so

Restart httpd service.

See this link for info.

See also