login  Naam:   Wachtwoord: 
Registreer je!
 Tutorials

Tutorials > Webserver


Gegevens:
Geschreven door:
Wim
Moeilijkheidsgraad:
Normaal
Hits:
16052
Punten:
Aantal punten:
 (4.86)
Aantal stemmen:
7
Stem:
Niet ingelogd
Nota's:
 Lees de nota's (34)
 



Tutorial:

[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:
# mkdir /opt/gdxweb

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!

pijl 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..)
# make

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!)
# make install

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!

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

pijl 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 :)

pijl 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 :)

pijl 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 :)

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

pijl 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 :)

pijl 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 :)

pijl 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^

pijl 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!


pijl top


« Vorige tutorial : IP adressen Volgende tutorial : CHMOD »

© 2002-2024 Sitemasters.be - Regels - Laadtijd: 0.015s