Egy olyan teljes értékű, Linux alapú fejlesztőkörnyezetről lesz szó, amelyikkel könnyedén használhatóvá válik a Drupal. Hogy a lépéseket követve biztosan így lesz, mi sem bizonyítja jobban, mint hogy az általam a mindennapokban használt rendszert mutatom be. Ezért ez a bejegyzés önmagamnak is szól, hogy ha bármikor újra el kell készítenem egy ilyen rendszert, ne felejtsek ki belőle semmit. A leírásban külön jelzem
azokat a parancsokat, amelyeket terminálban ki kell adni, illetve így jelölöm a módosítani szükséges fájlok tartalmát is. A kiadott parancsok elé $ jelet teszek, ezeket természetesen nem kell beírni, csak a parancsot jelzik.
A telepítést Ubuntu Linux 11.04 (Natty Narwhal) rendszeren mutatom be, de valószínűleg néhány apróbb módosítással sikeresen alkalmazható akár régebbi, akár teljesen más Linux alapú rendszeren is. A leírás nem tartalmazza az Ubuntu telepítését, mivel az számtalan helyen fellelhető, ezért egy frissen telepített, módosításokat nélkülöző rendszerből indul ki.
1. A célok
- szükség van Apache webszerverre, MySQL adatbázis-szerverre és a legfrissebb PHP-re
- legyen phpMyAdmin, használhassunk Drush-t
- a PHP a rendszert használó felhasználó nevében fusson, így elkerülve a jogosultsági problémákat
- legyen egy .loc legfelsőbb-szintű domain, amelyik a gépre mutat, így virtualhostok állítgatása nélkül adhatunk hozzá új oldalt a rendszerhez
A rendszer akkor van kész, ha:
- az l10n_install segítségével fel tudunk telepíteni egy Drupal 7 alaprendszert a fordításokkal együtt (PHP túlfutási-veszély!)
- az új oldalt az Apache állítgatása nélkül elérjük a http://enoldalam.hu.loc/ címen
2. Telepítsük a hiányzó csomagokat
Mivel az Ubuntu asztali-rendszerként való telepítése nem tartalmazza a kiszolgálóként való használathoz szükséges csomagokat, azokat nekünk külön kell feltenni.
$ sudo apt-get install apache2 apache2-suexec libapache2-mod-fcgid php5-cgi php5-curl php5-gd php5-mcrypt php5-mysql phpmyadmin mysql-server mysql-client
A parancs kiadása meg kell adnunk a jelszavunkat, majd engedélyezzük a további szükséges csomagok telepítését is, állítsuk be a MySQL rendszergazdai jelszavát („While not mandatory, it is highly recommended that you set a password for the MySQL administrative "root" user.”) és a phpmyadmin konfigurálásánál a szóköz billentyűvel válasszuk ki az apache2-őt („Please choose the web server that should be automatically configured to run phpMyAdmin”), végül engedélyezzük, hogy a dbconfig-common beállítsa a phpmyadmin-t, itt is megadva egy jelszót (lehet ugyanaz, mint a MySQL-nél).
Ha mindent jól csináltunk, akkor a böngészőbe beírva a http://localhost/ címet egy „It works!” szöveg fog minket fogadni. Ez mutatja, hogy az Apache működésre kész.
3. A PHP megszelidítése
Sajnos ennyivel nem úsztuk meg, mivel a PHP még nem működőképes. Első lépésként állítsuk át az Apache alapértelmezett munkakönyvtárának jogosultságait, a parancsban a kiemelt „felhasznalo” szavak helyére a saját Ubuntus felhasználónevünket írjuk be.
$ sudo chown felhasznalo:felhasznalo -R /var/www/
Hozzunk létre egy /var/www/cgi-bin könyvtárat:
$ mkdir /var/www/cgi-bin/
Majd abban egy php-fcgid nevű fájlt:
$ gedit /var/www/cgi-bin/php-fcgid
A fájl tartalma legyen a következő:
#!/bin/sh PHPRC=/etc/php5/apache2/ export PHPRC export PHP_FCGI_MAX_REQUESTS=5000 export PHP_FCGI_CHILDREN=8 exec /usr/lib/cgi-bin/php
Miután elmentettük és kiléptünk, adjunk rá futtatási jogot:
$ chmod u+x /var/www/cgi-bin/php-fcgid
Engedélyezzük az Apache Suexec kiterjesztését és a rövid URL-ek használatát:
$ sudo a2enmod suexec rewrite
Nyissuk meg szerkesztésre a /etc/apache2/sites-available/default állományt:
$ sudo gedit /etc/apache2/sites-available/default
A vége felé találunk benne egy ilyen részt:
Alias /doc/ "/usr/share/doc/" <Directory "/usr/share/doc/"> Options Indexes MultiViews FollowSymLinks AllowOverride None Order deny,allow Deny from all Allow from 127.0.0.0/255.0.0.0 ::1/128 </Directory>
Ez a rész után és a fájlt lezáró </VirtualHost>
elé szúrjuk be a következő szöveget, a kiemelt „felhasznalo” szavak helyére a saját Ubuntus felhasználónevünket írva:
<IfModule mod_fcgid.c> SuexecUserGroup felhasznalo felhasznalo <Directory /var/www/> Options +ExecCGI AddHandler fcgid-script .php .phtml AddType application/x-httpd-php .php .phtml FCGIWrapper /var/www/cgi-bin/php-fcgid .php FCGIWrapper /var/www/cgi-bin/php-fcgid .phtml </Directory> </IfModule>
A PHP-t már működésre bírtuk, de a phpMyAdminért még dolgozni kell. Nyissuk meg a konfigurációs állományát:
$ sudo gedit /etc/apache2/conf.d/phpmyadmin.conf
A fájl legvégére illesszük be a következő részt, a kiemelt „felhasznalo”-t itt is cseréljük le az Ubuntus felhasználónevünkre:
<IfModule mod_fcgid.c> SuexecUserGroup felhasznalo felhasznalo <Directory /usr/share/phpmyadmin> Options +ExecCGI AddHandler fcgid-script .php .phtml AddType application/x-httpd-php .php .phtml FCGIWrapper /var/www/cgi-bin/php-fcgid .php FCGIWrapper /var/www/cgi-bin/php-fcgid .phtml </Directory> </IfModule>
Futassuk le a következő parancsot, a kiemelt „felhasznalo” helyett itt is a telepített rendszeren használt felhasználónév kell:
$ sudo chown :felhasznalo /etc/phpmyadmin/config-db.php
Végül indítsuk újra az Apache webszervert:
$ sudo service apache2 restart
4. PHP finomhangolása
Ha létrehozunk egy teszt.php fájlt a /var/www alatt, amelynek a tartalma a következő:
<?php phpinfo(); ?>
Akkor a böngészőben a http://localhost/teszt.php oldalt meglátogatva részletes információt kaphatunk a PHP beállításairól. Ahhoz, hogy a rendszer munkára alkalmas legyen, további teljesítmény-hangolást célszerű végeznünk. Először is szerkesszük a PHP beállításait tartalmazó fájlt:
$ sudo gedit /etc/php5/cgi/php.ini
A fájlban a „max_execution_time” szóra rákeresve az értékét emeljük fel az alapértelmezett 30 másodpercről, ugyanezt tegyük meg a „max_input_time” és „memory_limit” változók értékével is.
max_execution_time = 600 max_input_time = 600 memory_limit = 256M
Hogy nagyobb fájlok feltöltésével se legyen gond, emeljük meg ugyanitt a „post_max_size” és „upload_max_filesize” értékét.
post_max_size = 256M upload_max_filesize = 2G
A mod-fcgid (PHP futtatásához használt CGI környezet) beállításait a következő fájlban érjük el:
$ sudo gedit /etc/apache2/mods-available/fcgid.conf
A fájlt megnyitva a tartalmát cseréljük le erre:
<IfModule mod_fcgid.c> AddHandler fcgid-script .fcgi FcgidConnectTimeout 20 ProcessLifeTime 7200 IPCCommTimeout 7200 IPCConnectTimeout 300 PHP_Fix_Pathinfo_Enable 1 </IfModule>
Mentés és kilépés után a szokásos módon indítsuk újra az Apache-t:
$ sudo service apache2 restart
5. Kell egy Drush
A Drush a Drupal fejlesztőknek egy igazi svájcibicska. Persze nem csak ők veszik a hasznát, hanem mindenki, aki komolyabban üzemeltet Drupal alapú rendszert.
A használatához kell egy újabb csomag:
$ sudo apt-get install php5-cli
A telepítése után töltsük le a Drush-t, most éppen a 4.4 az aktuális kiadás:
$ mkdir ~/bin $ wget http://ftp.drupal.org/files/projects/drush-7.x-4.4.tar.gz $ tar xf drush-7.x-4.4.tar.gz $ rm drush-7.x-4.4.tar.gz $ ln -s ~/drush/drush ~/bin/drush $ ~/bin/drush
Ezután a következő ki- és bejelentkezés (vagy újraindítás) után már lehetőség lesz a Drush használatára.
6. Saját domain beállítása
Azt szeretnénk, hogy ne kelljen minden egyes oldal fejlesztésekor új bejegyzést felvenni az Apache-ba, hanem a rendszer kezelje ezt automatikusan. Először is készítsünk egy munkakönyvtárat, amelyben az oldalak kódjait fogjuk tárolni. Ennek a neve bármi lehet, én „Virtualhosts” néven nevezem:
$ mkdir ~/Virtualhosts $ sudo apt-get install dnsmasq resolvconf
Szerkesszük a konfigurációs állományát:
$ sudo gedit /etc/dnsmasq.conf
Keressünk benne egy ilyen bejegyzést:
# Add domains which you want to force to an IP address here. # The example below send any host in double-click.net to a local # web-server. #address=/double-click.net/127.0.0.1
Írjuk utána egy új sorba a következőt:
address=/loc/127.0.0.1
Itt a „loc” azt a domaint jelenti, amelyet szeretnénk a gépünkre irányítani.
Mentsük el, lépjünk ki a szerkesztőből majd indítsuk újra a szolgáltatást (vagy ami még érdemesebb, az egész gépet):
$ sudo service dnsmasq restart
Ezután, ha megpingelünk egy tetszőleges .loc végződésű hosztot, sikeresnek kell lennie:
$ ping foobar.loc PING foobar.loc (127.0.0.1) 56(84) bytes of data. 64 bytes from localhost (127.0.0.1): icmp_req=1 ttl=64 time=0.025 ms 64 bytes from localhost (127.0.0.1): icmp_req=2 ttl=64 time=0.038 ms 64 bytes from localhost (127.0.0.1): icmp_req=3 ttl=64 time=0.040 ms
Hozzunk létre egy új Apache konfigfájlt:
$ sudo gedit /etc/apache2/sites-available/virtualhost_wildcard
A tartalma legyen a következő:
<VirtualHost *:80> ServerAlias *.loc VirtualDocumentRoot "/home/felhasznalo/Virtualhosts/%1%-2/" <Directory "/home/felhasznalo/Virtualhosts/"> Options FollowSymLinks AllowOverride All Order allow,deny Allow from all DirectoryIndex index.html index.php </Directory> ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/ <Directory "/usr/lib/cgi-bin"> Order allow,deny Allow from all </Directory> ErrorLog ${APACHE_LOG_DIR}/virtualhost-error.log # Possible values include: debug, info, notice, warn, error, crit, # alert, emerg. LogLevel info CustomLog ${APACHE_LOG_DIR}/virtualhost-access.log combined <IfModule mod_fcgid.c> SuexecUserGroup felhasznalo felhasznalo <Directory "/home/felhasznalo/Virtualhosts"> Options +ExecCGI AddHandler fcgid-script .php .phtml AddType application/x-httpd-php .php .phtml FCGIWrapper /var/www/cgi-bin/php-fcgid .php FCGIWrapper /var/www/cgi-bin/php-fcgid .phtml </Directory> </IfModule> </VirtualHost>
A fájl tartalmában két dologra figyeljünk: A „felhasznalo” helyett itt is az Ubuntu rendszerünkön használt felhasználónevünket kell megadni, a „/home/felhasznalo/Virtualhosts” pedig annak a könyvtárnak a teljes elérési útja, ahol az oldalainkat tárolni szeretnénk.
Mentés és kilépés után engedélyezzük az új beállítást, majd a szokásos Apache újraindítás:
$ sudo a2enmod vhost_alias $ sudo a2ensite virtualhost_wildcard $ sudo service apache2 restart
Ezek után hozzunk létre egy új könyvtárat, a könyvtárnévben szándékosan nincs pont:
$ mkdir ~/Virtualhosts/enoldalamhu
Ha a könyvtárban létrehozunk egy index.html fájlt, akkor láthatjuk, hogy a könyvtár tartalmát elérjük a http://enoldalam.hu.loc/ címről. Amennyiben a könyvtárba Drupalt telepítünk, nyissuk meg szerkesztésre a Drupalhoz mellékelt .htaccess fájlt, és keressük meg a következő részt:
# If your site is running in a VirtualDocumentRoot at http://example.com/, # uncomment the following line: # RewriteBase /
Itt az utolsó (RewriteBase) sor elől töröljük ki a # jelet, majd mentsük el a fájlt, ezzel válik lehetővé a rövid URL-ek használata is.
7. És ha PHP 5.2 kell?
A következő műveletet kellő óvatossággal kell végezni, mivel mélyebben megvariálja a rendszer működését.
Hozzunk létre egy új fájlt:
$ gedit ~/php.sh
A tartalma pedig legyen a következő:
#!/bin/sh # Script to install PHP 5.2 from 9.10 on 10.04 # And pin it so it does not get updated PKGS=`dpkg -l | grep php | awk '{print $2}'` apt-get remove $PKGS sed s/natty/karmic/g /etc/apt/sources.list | tee /etc/apt/sources.list.d/karmic.list mkdir -p /etc/apt/preferences.d/ for PACKAGE in $PKGS do echo "Package: $PACKAGE Pin: release a=karmic Pin-Priority: 991 " | tee -a /etc/apt/preferences.d/php done apt-get update apt-get install $PKGS
A fájlban több helyen szerepel a rendszer verziójának kódneve („natty”), ha régebbi Ubuntu kiadást használunk, akkor ezt módosítani kell. Mentés és kilépés után futtassuk le:
$ sudo ~/php.sh
Én nem engedtem, hogy a dbconfig piszkálja a phpMyAdmin beállításait, és a csomagok konfigurálásakor is ragaszkodtam ahhoz, hogy tartsa meg az eredeti fájlokat. A fenti szkript eltávolítja a PHP 5.3-as csomagokat, és az Ubuntu „Karmic Koala” verziójából feltelepíti a megfelelő PHP 5.2-eset. Valamiért a phpMyAdmin egyelőre nem működik ez a varázslás után, de ha rájövök, akkor mindenképpen megosztom itt az eredményt.