XAMPP е лесен за инсталиране свободен софтуерен пакет, съдържащ в себе си всичко необходимо за да започнете да разработвате WEB страници и приложения – Apache, MySQL, PHP, Perl, FTP сървър.
XAMPP е съкращение от:


Ако използвате XAMPP ще си спестите инсталирането и конфигурирането на редица пакети поотделно.
Друг плюс е че целия пакет е „преносим“, което значи че всичко се съдържа в една собствена папка и можете да я местите и копирате на други компютри, без да ви се налага всеки път да конфигурирате.

Естествено, мисля че е излишно да споменавам че се разпространява под свободния GNU лиценз, което означава че може свободно да го използвате навсякъде за всякакви нужди, без да се притеснявате че нарушавате закона…

XAMPP има версии и за Linux и за Windows.
В настоящата статия обаче, ще разгледам един практически пример как да си го инсталирате и настроите под УСУ (същите инструкции важат и за Ubuntu и всички други съвременни дистрибуции).

И така…

ЗАДАЧА

  • сайт с адрес http://newsite.com
  • да може сайтът да се разработва локално, от един компютър, който дори може да няма връзка с Интернет.
  • на компютъра за разработка, при отваряне на http://newsite.com да се зарежда локалната версия на сайта, намираща се върху този компютър.
  • опцията дали да се зарежда локалната или реалната версия да може да се включва/изключва

РЕШЕНИЕ

Първо трябва да сте наясно каква версия на PHP използва реалния сайт, за да знаете каква версия на XAMPP да свалите (понякога е от значение).

В конкретния случай, сайтът използва PHP 5.2.x  MySQL сървъра е 5.1.x. Отивате на адрес http://sourceforge.net/projects/xampp/files/XAMPP%20Linux/, и с малко търпение откривате коя версия на XAMPP отговаря на изискванията ви.
В моя случай, аз знам че това е версия 1.7.1. Затова свалям файла xampp-linux-1.7.1.tar.gz в домашната си папка.
След като файла се свали, се пуска един терминал от Програми -> Помощни програми -> Терминал, и в него се изпълнява командата:

sudo tar xvfz xampp-linux-1.7.1.tar.gz -C /opt

Това ще разкомпресира архива в папка /opt/lampp.

Следващата стъпка е да настроите така наречените „виртуални хостове“ на WEB сървъра Apache.
Това става много лесно – чрез редактиране на няколко файла.

Отворете конфигурационния файл /opt/lampp/etc/httpd.conf с команда:

sudo gedit /opt/lampp/etc/httpd.conf

В него намерете реда

#Include etc/extra/httpd-vhosts.conf

и изтрийте # (знака „диез“) от началото му, така че да стане

Include etc/extra/httpd-vhosts.conf

Запазете и затворете файла.

После създайте един текстов файл с име start_httpd, направете го изпълним, и го отворете с текстов редактор:

touch start_httpd
chmod +x start_httpd
gedit start_httpd

В него поставете следния код, запишете и го затворете:

#!/bin/sh
 
SITES="newsite.com"
 
echo "#AUTO VHOSTS START" | sudo tee -a /opt/lampp/etc/extra/httpd-vhosts.conf
echo "#AUTO VHOSTS START" | sudo tee -a /etc/hosts
for SITE in $SITES; do
    [ -d /opt/lampp/htdocs/$SITE/www ] || {
        sudo mkdir -p /opt/lampp/htdocs/$SITE/www 
    }
 sudo chown -R nobody /opt/lampp/htdocs/$SITE 
 sudo chmod -R 777 /opt/lampp/htdocs/$SITE
 echo '<VirtualHost *:80>
 ServerAdmin [email protected]
 DocumentRoot /opt/lampp/htdocs/'$SITE'/www
 ServerName '$SITE'
 ServerAlias www.'$SITE'
 ErrorLog logs/'$SITE'-error_log
 CustomLog logs/'$SITE'-access_log common
</VirtualHost>
' | sudo tee -a /opt/lampp/etc/extra/httpd-vhosts.conf
 
    echo '127.0.0.1   '$SITE | sudo tee -a /etc/hosts
    echo '127.0.0.1   www.'$SITE | sudo tee -a /etc/hosts
done
echo "#AUTO VHOSTS END" | sudo tee -a /opt/lampp/etc/extra/httpd-vhosts.conf
echo "#AUTO VHOSTS END" | sudo tee -a /etc/hosts
sudo /opt/lampp/lampp start

Забележете – в реда

SITES="newsite.com"

изреждате адресите на сайтовете които ще разработвате, и скрипта ще създаде съответните директории и ще конфигурира XAMPP подходящо.
В случая файловете на сайта ще се намират в папка /opt/lampp/htdocs/newsite.com/www
Ако искате повече от един сайт, просто дописвате и неговия адрес отделен с интервал (пропускате WWW от името!):

SITES="newsite.com website.com"

След това създайте файла stop_httpd

touch stop_httpd
chmod +x stop_httpd
gedit stop_httpd

В него поставете следния код, запишете и го затворете:

#!/bin/sh
 
sudo sed -i -n '1h
1!{
        /\n#AUTO VHOSTS START.*#AUTO VHOSTS END/ !H
        g
        /\n#AUTO VHOSTS START.*#AUTO VHOSTS END/ {
                s/\n#AUTO VHOSTS START.*#AUTO VHOSTS END//g
                p
                n
                h
        }
        h
}
$p
' /opt/lampp/etc/extra/httpd-vhosts.conf
 
sudo sed -i -n '1h
1!{
        /\n#AUTO VHOSTS START.*#AUTO VHOSTS END/ !H
        g
        /\n#AUTO VHOSTS START.*#AUTO VHOSTS END/ {
                s/\n#AUTO VHOSTS START.*#AUTO VHOSTS END//g
                p
                n
                h
        }
        h
}
$p
' /etc/hosts
 
sudo /opt/lampp/lampp stop

Тези два файла – start_httpd и stop_httpd, в конкретния пример бяха създадени в текущата папка (най-вероятно в домашната ви папка), но може да ги преместите където искате – примерно на работния плот – за по-бърз достъп.
От тях ще пускате и спирате сървъра.
Имайте предвид че винаги когато слагате файлове в папката /opt/lampp/htdocs трябва след това да им слагате правилните права за достъп, иначе може някои скриптове да откажат да работят.
Може да го направите по два начина – или като спрете и пуснете отново сървъра, или като изпълните командата:

sudo chown -R nobody /opt/lampp/htdocs/

С това конфигурацията е почти готова! Остава една малка подробност – да настроите XAMPP да работи с правилната кодировка на текста. Да речем че правите български сайт, който използва windows-1251 кодировка (която не е много препотъчителна, но все пак ще дам пример и с нея). Трябва да редактирате три файла със съответните команди:

/opt/lampp/etc/httpd.conf (1)

sudo gedit /opt/lampp/etc/httpd.conf

В него намирате реда

DefaultType text/plain

и след него добавяте

AddDefaultCharset windows-1251

/opt/lampp/etc/php.ini (2)

sudo gedit /opt/lampp/etc/php.ini

В него намирате реда

default_mimetype = "text/html"

и след него добавяте

default_charset = "windows-1251"

/opt/lampp/etc/my.cnf (3)

Намирате реда

[client]

и след него добавяте

default-character-set = cp1251

След това намирате реда

[mysqld]

и след него добавяте

default-character-set = cp1251
init-connect = "set names cp1251"
skip-character-set-client-handshake

Ако предпочитате да използвате UTF-8 кодировка (което е много препоръчително), трябва в (1), (2) и (3) вместо windows-1251 или cp1251 да използвате съответно: utf-8 – за (1) и (2), utf8 – за (3).

Накрая, още една тънкост – ако дадена функция в сайта ще изпраща e-mail, ще трябва XAMPP да се настрои така, че да симулира изпращането на поща, но вместо това да запазва всички писма като eml файлове в папката /opt/lampp/tmp/sendmail.

За целта трябва да направите една папка с командата:

sudo mkdir -p /opt/lampp/tmp/sendmail

След това създайте един файл с име /opt/lampp/bin/sendmail и го направете изпълним:

sudo touch /opt/lampp/bin/sendmail
sudo chmod +x /opt/lampp/bin/sendmail

Отворете този файл с текстов редактор:

sudo gedit /opt/lampp/bin/sendmail

и поставете следния код в него:

#!/usr/bin/python
 
import sys
import time
import datetime
 
t = datetime.datetime.now()
filename = time.mktime(t.timetuple())
out = file('/opt/lampp/tmp/sendmail/%f.eml' % filename, 'w')
out.writelines(sys.stdin)
out.close()
sys.exit(0)

След това отворете с текстов редактор файла /opt/lampp/etc/php.ini:

sudo gedit /opt/lampp/etc/php.ini

Намерете реда

SMTP = localhost

и го променете на

;SMTP = localhost

Намерете

sendmail_from = [email protected]

и го променете на

;sendmail_from = [email protected]

Намерете

;sendmail_path =

и го променете на

sendmail_path = /opt/lampp/bin/sendmail -t

Запишете файла, и рестартирайте сървъра (ако вече е пуснат).
Сега вече когато локалната версия на сайта опитва да изпраща писма, те ще бъдат записвани като eml файлове в /opt/lampp/tmp/sendmail/<unix_timestamp>.eml, вместо да потъват в нищото…

Това е всичко! Може да стартирате сървъра от start_httpd и да го спирате от stop_httpd. Когато е стартиран, ще виждате локалното копие на http://newsite.com, а когато е спрян – реалното. Това важи САМО за този компютър на който е инсталиран XAMPP.
Може да администрирате MySQL базата-данни от адрес http://localhost/phpmyadmin/ чрез phpMyAdmin.
Файловете на сайта слагайте в /opt/lampp/htdocs/newsite.com/www.
В /opt/lampp/htdocs/localhost/www може да слагате каквото си искате – то ще е достъпно през http://localhost.

В момента за работата си използвам XAMPP под УСУ конфигуриран точно по описания начин, така че методът е изпитан лично от мен.

Естествено, има и по-добри начини за конфигуриране на web сървър за разработка, но предимството на този е че ВСИЧКО се съдържа в една единствена папка, и лесно директно да го копирате на друг компютър.

Успех!