[LINUX] Apache, Mysql, Pgsql, ftp, php (17/12/2k6)
1. Inleiding
2. MySQL
3. PgSQL
4. Apache
5. LibXML2
6. PHP
7. PHPMyAdmin
8. PHPPgAdmin
9. Pure-FTPD
10. Slot
11. Mogelijke problemen [22/04/2006]
1. Inleiding
De bedoeling is om straks op een LINUX omgeving en werkende web-, sql- en ftpserver te hebben. Hiervoor gebruiken we de nieuwste (veilige) software.
Wat gaan we installeren? Apache 2.2.0, MySQL 5.0.20, PgSQL 8.1.3, PHP 5.1.2, LibXML 2.6.23 (voor PHP5), PHPMyAdmin 2.8.0.3, PHPPgAdmin 4.0.1 en Pure-FTPD 1.0.21.
Er zijn natuurlijk veel (veiligere?) kant en klare paketten te vinden, maar mijn bedoeling is om alles in een eigen directory te zetten :)
Ik ga werken met /opt/gdxweb. Als je een andere directory wilt, moet je overal /opt/gdweb vervangen in je eigen directory!
Dus we maken nu /opt/gdxweb aan:
Zelf werk ik met een Debian GNU/Linux Sarge. (3.1). De kernel heb ik van een 2.4 naar een 2.6 geupgrade :) (mogelijk met apt-get).
Genoeg gezeverd nu, laten we aan de slag gaan!
top
2. MySQL 5.0.20
Eerst downloaden we MySQL, we extracten de tarbal, en we betreden de directory.
# |
wget http://dev.mysql.com/get/Downloads/MySQL-5.0/mysql-5.0.20.tar.gz/from/ftp://ftp.easynet.be/mysql/ |
# |
tar xzvf mysql-5.0.20.tar.gz |
# |
cd mysql-5.0.20 |
Nu moeten we MySQL correct configureren. Dit doen we met het scriptje configure. Als je andere parameters wilt, kan je ./configure --help eens nalezen! Als directory waar het geinstalleerd moet worden kiezen we voor /opt/gdxweb/mysql. We runnen MySQL graag met de username mysql. Deze username behoord tot de groep mysql. We zullen deze dus eerst moeten aanmaken...
# |
groupadd mysql |
# |
useradd -g mysql mysql |
# |
./configure --prefix=/opt/gdxweb/mysql --with-mysql-user=mysql |
Als alles goed is gegaan, mogen we MySQL nu gaan compilen. (dit duurt vrij lang, kan wel een uurtje duren..)
Als ook dit goed is gegaan, gaan we alles uiteindelijk copiëren naar de correcte plaats (/opt/gdxweb/mysql). Dit doen we met make instal.
LET OP: make install moet met de user 'root' uitgevoerd worden. Typ 'su' om naar de user root te switchen... (dit is van toepassing in de hele tutorial!)
MySQL zou nu geïnstalleerd moeten zijn. Eventjes controleren...
# |
ls -al /opt/gdxweb/mysql/ |
Als alles goed is gaan we nu de vereiste databases aanmaken. MySQL heeft hiervoor een scriptje bijgevoegd...
# |
./scripts/mysql_install_db |
Nu gaan we de rechten aanpassen. Niet iedereen op de server moet MySQL namelijk kunnen beheren. De username mysql heeft wel toegang nodig tot /opt/gdxweb/mysql/var. Deze directory bevat alle data die mysql nodig heeft (databases, usernames, ...)
# |
chown -R root /opt/gdxweb/mysql |
# |
chown -R mysql /opt/gdxweb/mysql/var |
Het MySQL configuratie bestand moet nog eventjes naar de correcte plaats gecopy't worden. Ik ben zelf geen optie tegengekomen om dit in een eigen directory te zetten. We zullen het dus naar de standaard linux configuratie directory zetten: /etc
# |
cp support-files/my-medium.cnf /etc/my.cnf |
MySQL 5.0.20 is nu geïnstalleerd. Starten gaat via dit commando:
# |
/opt/gdxweb/mysql/bin/mysqld_safe --user=mysql & |
Dit commando geeft ook verdere informatie over hoe je een root password moet installen. Stel zeker een root password in. Anders kan het hele internet jouw MySQL server beheren, databases downloaden/wissen, ...!!!!
Als je wilt dat MySQL start als je de server opzet kan je dit scriptje uitvoeren:
# |
echo "/opt/gdxweb/mysql/bin/safe_mysqld --user=mysql &" >> /etc/local.r |
Je MySQL server is nu klaar voor gebruik. Veel succes ermee!
top
3. PgSQL 8.1.3
Net zoals bij MySQL gaan we PgSQL eerst moeten downloaden, extracten en de directory betreden:
# |
wget http://wwwmaster.postgresql.org/redir?ftp%3A%2F%2Fftp.be.postgresql.org%2Fpostgresql%2Fsource%2Fv8.1.3%2Fpostgresql-8.1.3.tar.gz |
# |
tar xzvf postgresql-8.1.3.tar.gz |
# |
cd postgresql-8.1.3 |
Nu gaan we een group pgsql en een user pgsql aanmaken.
# |
groupadd pgsql |
# |
useradd pgsql |
We configureren PgSQL, we compilen het, en we installeren het:
# |
./configure --path=/opt/gdxweb/pgsql |
# |
make && make install |
OPMERKING: door && te gebruiken kan je 2 commando's uitvoeren op 1 regel. Je zal make en make install dus niet appart moeten typen. Vanaf nu gebruik ik deze manier verder in de tutorial.
Nu moeten we een data directory aanmaken voor PgSQL. Deze directory moet van de user pgsql zijn, en hierin zullen alle databases & usernames opgeslagen worden.
# |
mkdir /opt/gdxweb/pgsql/data |
# |
chown pgsql /opt/gdxweb/pgsql/data |
Tenslotte loggen we in als user pgsql, we maken wat databases aan, starten de server, en spelen wat (om te testen):
TIP: Je moet niet inloggen als pgsql als je over sudo beschikt (installatie: apt-get install sudo). Je kan dan dit gebruiken om een commando uit te voeren (su pgsql is niet nodig bij deze manier): sudo -u pgsql
# |
su pgsql |
# |
/opt/gdxweb/pgsql/bin/initdb -D /opt/gdxweb/pgsql/data |
# |
/opt/gdxweb/pgsql/bin/postmaster -D /opt/gdxweb/pgsql/data & |
# |
/opt/gdxweb/pgsql/bin/createdb test |
# |
/opt/gdxweb/pgsql/bin/psql test |
Bij deze is PgSQL geïnstalleerd.
top
4. Apache 2.2.0
Apache, de bekentste http deamon! Deze kan natuurlijk niet ontbreken.
Apache installeren is redelijk simpel. Enkel moet je er eventjes op letten dat je --enable-so ZEKER toevoegd aan je configuratie lijn. Dit is namelijk om nadien PHP te kunnen ondersteunen... Overigens heb ik zelf --enable-cgi en --enable-http ook toegevoegd, wat normaal standaard ook aanwezig zal zijn...
# |
wget http://apache.scarlet.be/httpd/httpd-2.2.0.tar.gz |
# |
tar xzvf httpd-2.2.0.tar.gz |
# |
cd httpd-2.2.0 |
# |
./configure --prefix=/opt/gdxweb/apache --enable-http --enable-cgi --enable-so |
# |
make && make install |
Apache zou nu moeten werken. Je kan apache starten met:
# |
/opt/gdxweb/apache/bin/apachectl -k start |
Als je nu naar het IP-adres van je server surft zal je een pagina te zien krijgen met daar op: 'It Works!'. (lynx is een linux text-based webbrowser!)
Om je versie te controleren kan je dit commando gebruiken:
# |
/opt/gdxweb/apache/bin/apachectl -v |
Dit was mijn output:
Server version: Apache/2.2.0
Server built: Apr 12 2006 23:42:42 |
Je bestanden moet je in de map 'htdocs' zetten. Het path hiervan is /opt/gdxweb/apache/htdocs
Apache stoppen kan met:
# |
/opt/gdxweb/apache/bin/apachectl -k stop |
Apache is nu klaar om uitgebreid te worden met PHP 5 :)
top
5. LibXML 2.6.27
PHP 5 vereist LibXML >= 2.6.15 (ongeveer rond die versie dacht ik). Mits je LibXML op je server hebt, kan je deze stap overslaan.
Om LibXML te installeren naar /opt/gdxweb/libxml2 voer je deze commando's uit:
# |
wget ftp://gd.tuwien.ac.at/pub/libxml/libxml2-2.6.27.tar.gz |
# |
tar xzvf libxml2-2.6.27.tar.gz |
# |
cd libxml2-2.6.27 |
# |
./configure --prefix=/opt/gdxweb/libxml2 |
# |
make && make install |
Nu kunnen we PHP5 gaan installeren :)
top
6. PHP 5.1.2
PHP, een zeer bekende en populaire scriptingstaal -ook hier op sitemasters!- kan natuurlijk niet ontbreken! Natuurlijk kiezen we voor PHP5 omdat OOP in deze versie veel uitgebreider is (en andere dingen natuurlijk). De laatste versie is momenteel 5.1.2
Downloaden, extracten, directory betreden...
# |
wget http://be.php.net/get/php-5.1.2.tar.gz/from/this/mirror |
# |
tar xzvf php-5.1.2.tar.gz |
# |
cd php-5.1.2 |
Voor PHP is het vereist dat Apache, MySQL en PgSQL al geinstalleerd zijn. We moeten PHP namelijk vertellen waar deze geinstalleerd zijn. Mits je PgSQL/MySQL niet geïnstalleerd hebt (wat niet noodzakelijk is), dan laat je --with-mysql=/opt/gdxweb/mysql of --with-pgsql=/opt/gdxweb/pgsql uit het configuratie commando weg :)
Als je LibXML2 al had, moet je ook --with-libxml-dir=/opt/gdxweb/libxml2 aanpassen naar je eigen path!
We voegen --enable-mbstring=all toe om PHPMyAdmin goed te laten functioneren.
Configureren, compilen en installeren:
# |
./configure --with-apxs2=/opt/gdxweb/apache/bin/apxs --with-config-file-path=/opt/gdxweb/etc --with-config-file-scan-dir=/opt/gdxweb/etc --enable-ftp --with-mysql=/opt/gdxweb/mysql --with-pgsql=/opt/gdxweb/pgsql --with-libxml-dir=/opt/gdxweb/libxml2 --enable-mbstring=all |
# |
make && make install |
php.ini eventjes copy'en:
# |
cp php.ini-dist /opt/gdxweb/etc/php.ini |
PHP heeft httpd.conf (apache configuratie) normaal automatisch aangepast. Controleer of deze lijnen in /opt/gdxweb/apache/conf/httpd.conf staan:
AddType application/x-httpd-php .php |
LoadModule php5_module modules/libphp5.so |
Herstart apache:
# |
/opt/gdxweb/apache/bin/apachectl -k restart |
PHP werkt nu. Je kan dit controleren door dit te doen:
# |
echo "<?php phpinfo(); ?>" > /opt/gdxweb/apache/htdocs/phpinfo.php |
Als je nu naar je server surft, en het bestand phpinfo.php opent (b.v.: http://192.168.x.x/phpinfo.php), zal je PHP informatie verschijnen :)
Nu we PHP hebben, kunnen we PHPMyAdmin en PHPPgAdmin installeren :)
top
7. PHPMyAdmin 2.8.0.3
We downloaden, installeren en copy'en phpMyAdmin. phpMyAdmin moet in /opt/gdxweb komen. Daarna betreden we de directory
# |
wget http://superb-west.dl.sourceforge.net/sourceforge/phpmyadmin/phpMyAdmin-2.8.0.3.tar.gz |
# |
tar xzvf phpMyAdmin-2.8.0.3.tar.gz |
# |
cp -Rp phpMyAdmin-2.8.0.3/ /opt/gdxweb/ |
# |
cd /opt/gdxweb/phpMyAdmin-2.8.0.3 |
PHPMyAdmin willen we benaderen vanaf /phpmyadmin, maar we willen het path toch niet vrijgeven aan de buitenwereld. Het path dat we willen is /opt/gdxrox/phpMyAdmin-2.8.0.3. We zullen deze regel dus moeten toevoegen aan /opt/gdxweb/apache/conf/httpd.conf:
Alias /phpmyadmin "/opt/gdxrox/phpMyAdmin-2.8.0.3" |
Nu moeten we het configuratiebestand klaarmaken voor gebruik. Eerst moeten we het copy'en naar een andere plaats.
# |
cp libraries/config.default.php config.inc.php |
Bewerk nu config.inc.php.
Gebruik volgende configuratiesettings:
$cfg['Servers'][$i]['host'] = '127.0.0.1'; // dus geen localhost
$cfg['Servers'][$i]['hide_db'] = 'mysql'; // Niemand moet deze database kunnen bekijken... Als de serverconsole dit kan is dat genoeg ;)
$cfg['Servers'][$i]['auth_type'] = 'http'; // of 'cookie'. Bij http sprint er een popup schermpje open, bij cookie een opgemaakte html pagina (html = veiliger). |
phpMyAdmin zou nu moeten werken.
top
8. PHPPgAdmin 4.0.1
Met phpPgAdmin heb ik zelf wat meer problemen gehad, en heb ik nog een eigen oplossing moetne zoeken. Ik kon namelijk niet inloggen.
Na de security practisch op 0 te zetten, kon ik inloggen, mijn wijzigingen aanbrengen (password instellen, nieuwe user aanmaken, ..) en nadien het beveiligingsniveau uiteraard terug verhogen.
We beginnen hetzelfde als bij phpMyAdmin:
# |
wget http://nchc.dl.sourceforge.net/sourceforge/phppgadmin/phpPgAdmin-4.0.1.tar.gz |
# |
tar xzvf phpPgAdmin-4.0.1.tar.gz |
# |
cp -Rp phpPgAdmin-4.0.1/ /opt/gdxweb/ |
# |
cd /opt/gdxweb/phpPgAdmin-4.0.1 |
En in httpd.conf voegen we weer een alias toe:
Alias /phppgadmin "/opt/gdxrox/phpPyAdmin-4.0.1" |
We gaan nu het bestand conf/config.inc.php bewerken. Breng deze wijzigingen aan:
$conf['extra_login_security'] = false; // standaard is true |
Dit zorgt ervoor dat we ook met de user pgsql kunnen inloggen, en dat we ook met een user zonder wachtwoord kunnen inloggen.
Surf naar je host met als 'map' phppgadmin:
http//192.168.x.x/phppgadmin
- Klik links bij servers op 'PostgreSQL'
- Login met user 'pgsql' (geen wachtwoord)
- Klik bovenaan op gebruikers (users)
- Voeg een nieuwe user toe welke alle rechten krijgt (MET password!)
- Stel een password in voor de user 'pgsql'.
Open terug het bestand conf/config.inc.php en zet $conf['extra_login_security'] terug op true:
$conf['extra_login_security'] = true; // standaard is true |
phpPgAdmin zou nu moeten werken :)
top
9. Pure-FTPD 1.0.21
Om pure-ftpd op de standaard locatie te installeren kan je ook dit scriptje gebruiken. (pure-ftpd 1.0.20 (!) wordt dan in /usr/local/pure-ftpd geinstalleerd).
Anders voer je deze commando's uit (A piece of cake :))
# |
wget http://download.pureftpd.org/pub/pure-ftpd/releases/pure-ftpd-1.0.21.tar.gz |
# |
tar xzvf pure-ftpd-1.0.21.tar.gz |
# |
./configure --prefix=/opt/gdxweb/pure-ftpd --with-sysquotas --with-altlog --with-puredb --with-cookie --with-throttling --with-ratios --with-quotas --with-ftpwho --with-largefile --with-welcomemsg --with-uploadscript --with-virtualhosts --with-virtualchroot --with-diraliases --with-peruserlimits --with-language=english --with-language=dutch |
# |
make && make install |
Ook pure-ftpd werkt nu :)
top
10. Slot
Indien je geïnteresseerd bent in een start-up scriptje:
/opt/gdxweb/gdxweb.sh
#!/bin/sh
case $1 in
"start")
echo "[GDXWEB] Starting GDXWEB 1.0"
/opt/gdxweb/apache/bin/apachectl -k start
echo "[GDXWEB] Apache 2.2.0 with PHP 5.1.2 Started!"
/opt/gdxweb/mysql/bin/mysqld_safe --user=mysql &
echo "[GDXWEB] MySQL 5.0.20 Started!"
sudo -u pgsql /opt/gdxweb/pgsql/bin/postmaster -D /opt/gdxweb/pgsql/data & > /dev/null
echo "[GDXWEB] PgSQL 8.1.3 Started!"
/opt/gdxweb/pure-ftpd/sbin/pure-ftpd &
echo "[GDXWEB] Pure-FTPD 1.0.21 Started!"
;;
"version")
echo "[GDXWEB] GDXWEB 1.0 USES:"
echo "[GDXWEB] Apache 2.2.0"
echo "[GDXWEB] LibXML 2.6.23"
echo "[GDXWEB] PHP 5.1.2"
echo "[GDXWEB] MySQL 5.0.20"
echo "[GDXWEB] phpMyAdmin 2.8.0.3"
echo "[GDXWEB] PgSQL 8.1.3"
echo "[GDXWEB] phpPgAdmin 4.0.1"
echo "[GDXWEB] Pure-FTPD 1.0.21"
;;
*)
echo "[GDXWEB] Useage: ${0} start"
;;
esac |
# |
chmod +x /opt/gdxweb/gdxweb.sh |
Om het pakket te starten gebruik je: (als root!)
# |
sh /opt/gdxweb/gdxweb.sh |
Hopelijk heb je hier iets aan :)
Gebruikte recources: ./configure --help, INSTALL, ervaring :)
Deze tutorial kom je mogelijk op nog plaatsen tegen...
Greetz,
GDX^
top
11. Mogelijke problemen (regelmatige update)
Bij het installeren van een 2de server ben ik zelf een aantal problemen tegengekomen. Ook deze server draaide op Debian Sarge (3.1).
Probleem 1: Configure error bij mysql: termcap/curses
Oplossing: installeer libncurses.
Voer onderstaand commando uit om deze te installeren:
wget ftp://invisible-island.net/ncurses/ncurses-5.5.tar.gz ; tar xzvf ncurses-5.5.tar.gz ; cd ncurses-5.5 ; ./configure ; make ; make install
Probleem 2: Images werken niet bij apache
Oplossing: voeg onderstaande lijnen (2 lijntjes) toe aan je httpd.conf file:
EnableSendfile Off
EnableMMAP Off
Hopelijk staat je probleem hier tussen, zoniet -> PM of reageer!
[b]kleine update @ 17/12/2006:[/b]
libxml2 gewijzigd van versie 2.6.23 naar 2.6.27, reden: de vorige mirror was down. Nieuwe mirror + nieuwere versie!
top
|