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


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

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

XAMPP има версии и за Linux и за Windows.
В настоящата статия обаче, ще разгледам един практически пример как да си го инсталирате и настроите под УСУ4.

И така…

ЗАДАЧА

  • сайт с адрес 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/extra/httpd-vhosts.conf с команда

sudo gedit /opt/lampp/etc/extra/httpd-vhosts.conf

В края му добавяте следното:

<VirtualHost *:80>
 ServerAdmin root@localhost
 DocumentRoot /opt/lampp/htdocs/localhost/www
 ServerName localhost
 ServerAlias localhost
 ErrorLog logs/localhost-error_log
 CustomLog logs/localhost-access_log common
</VirtualHost>
 
<VirtualHost *:80>
 ServerAdmin root@localhost
 DocumentRoot /opt/lampp/htdocs/newsite.com/www
 ServerName newsite.com
 ServerAlias www.newsite.com
 ErrorLog logs/newsite.com-error_log
 CustomLog logs/newsite.com-access_log common
</VirtualHost>

По този начин настройвате Apache да разпознава адреса http://newsite.com и http://localhost, чиито файлове се намират съответно в /opt/lampp/htdocs/newsite.com/www и /opt/lampp/htdocs/localhost/www.

Сега създайте тези папки чрез командите:

sudo mkdir -p /opt/lampp/htdocs/newsite.com/www
sudo mkdir -p /opt/lampp/htdocs/localhost/www

След това си дайте права върху папката /opt/lampp/htdocs

sudo chown -R $USER /opt/lampp/htdocs

След това отворете файла /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
 
SITE=newsite.com
sudo /opt/lampp/lampp start
echo '127.0.0.1   '$SITE | sudo tee -a /etc/hosts
echo '127.0.0.1   www.'$SITE | sudo tee -a /etc/hosts

След това повторете същото, с файл stop_httpd

touch stop_httpd
chmod +x stop_httpd
gedit stop_httpd

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

#!/bin/sh
 
SITE=newsite.com
sudo /opt/lampp/lampp stop
sudo sed -i '/127.0.0.1   '$SITE'/d' /etc/hosts
sudo sed -i '/127.0.0.1   www.'$SITE'/d' /etc/hosts

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

/opt/lampp/etc/httpd.conf:

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

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

DefaultType text/plain

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

AddDefaultCharset windows-1251

/opt/lampp/etc/php.ini:

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

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

default_mimetype = "text/html"

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

default_charset = "windows-1251"

/opt/lampp/etc/my.cnf:

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

[client]

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

default-character-set = cp1251

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

[mysqld]

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

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

Накрая, още една тънкост – ако дадена функция в сайта ще изпраща 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 = me@localhost.com

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

;sendmail_from = me@localhost.com

Намерете

;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.

Накрая една забележка: ако искате да конфигурирате сървъра да работи с UTF-8 кодировка по подразбирате, в предишните стъпки използвайте utf8 вместо cp1251 и utf-8 вместо windows-1251.
Аз лично ви препоръчвам винаги да работите с utf8 кодировка, независимо на какъв език е сайта – просто utf8 е най-универсалия избор.

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

Успех!