XAMPP е лесен за инсталиране свободен софтуерен пакет, съдържащ в себе си всичко необходимо за да започнете да разработвате WEB страници и приложения – Apache, MySQL, PHP, Perl, FTP сървър.
XAMPP е съкращение от:
- X (cross-platform – многоплатформен)
- Apache HTTP Сървър
- MySQL сървър за бази-данни
- PHP
- Perl
Ако използвате 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 конфигуриран точно по описания начин, така че методът е изпитан лично от мен.
Успех!


















Под ГНУ/Линукс е най-добре да се ползват пакетите за дистрото. Ксамп става само за тестове. А да и на български е най-добре UTF8, защото иначе много ще искаш да се хвърлиш от непостроения „Мост на дружбата 2″, когато започнеш реалната разработка с PHP и My SQL.
@go_fire, не съм съгласен с теб. XAMPP си е идеален за РАЗРАБОТКА, много по-лесен за ползване от пакетите на което и да е дистро – спестява доста ръчкане. Друг плюс е че го има и за Windows и може лесно да мигрираш конфигурацията си от една ОС към друга, без това да влияе на самата операционна система (XAMPP не променя нищо в системата).
Лично за мен винаги е било много удобно да използвам такива преносими „дистрибуции“ – мога да си нося преносимия диск с мен, и да имам всичко необходимо по всяко време. Под Windows от около 5-6 години използвам един руски пакет Denwer, подобен на XAMPP, и съм правил доста неща именно с него. Включително и на една предишна моя работа, където разработвахме CRM и ERP системи (и куп други web базирани глупости).
При Denwer-а дори не се налага да конфигурираш виртуалните хостове. Просто си създаваш подходяща структура на папките, и той от нея автоматично генерира конфигурацията и променя hosts файла. Идеално за започване на бърза разработка.
Ако XAMPP се ползва за реално хостване въпроса е друг, и не го препоръчвам, но в статията не става въпрос затова.
Статията е предназначени за начинаещи потребители, в това число и все още учащи, които правят първите си стъпки в разработката.
Който разбира достатъчно може сам да избере какво да ползва и как да си го настрои. Който не разбира – и той прави това, но няма гаранция че е избрал правилното…
Относно кодировката – в немалко случаи, използването на cp1251 се НАЛАГА. Примерно, когато се налага да градиш върху работата на някой друг, който е решил (или просто не е знаел) че може да използва utf8, а е късно или няма време за реорганизация на кода.
Така или иначе съм обяснил как става конфигурирането и за двете кодировки, в зависимост от нуждите.
Всъщност, няма нищо лошо в това даден сайт да използва cp1251. Ако си си настроил web и mysql сървърите читаво, няма никакъв проблем – всички браузъри поддържат cp1251, както и utf8. Под „всички“ имам предвид такива, които наистина си заслужава да се споменават (с повече от 1% дял, и написани СЛЕД създаването на Българската държава…).
Другите са просто фонов шум и не си заслужава човек да губи време с тях (особено ако му плащат за да върши работа).
Всъщност проблемите с кодировката са полезни за начинаещите „разработчици“ – учат ги на това-онова.
Има грешки които всеки „разработчик“ трябва да направи – грешна кодиривка, НЕ нормализиране на входящите данни и т.н….
Това е част от процеса на учене.
В общи линии се въртим около едно и също. Да за разработка и тестове на настолна машина, която не искаш да превръщаш в сървър става. И аз за това го ползвам. Да идеален е да си носиш данните между различни машини, даже различни ОС.Даже не е необходим дъмп, просто копиране на няколко файла. Аз имах предвид реална употреба.
За cp1251 обаче ми позволи да не съм съгласен. Наследения код е лошо тегло, но не непреодолимо. Самият My SQL си има опция в дъмпа да прекодира, от тук на там никакви проблеми. Но пък и ти си прав. Човек, ако не си чупи главата, няма да се научи.