# kleine "GAMP"-Howto

## slick

Es soll ein Gentoosystem mit Apache, Mysql und PHP (GAMP  :Wink: ) aufgesetzt werden. Die beschriebene Vorgehensweise ist geeignet für die Installationen auf kleineren Webserver die keine besonderen Anforderungen an die Sicherheit stellen. Einige kleine Hinweise zu Thema Sicherheit werden jedoch erwähnt. Auf die weitere Konfiguration der Dienste wird nicht eingegangen.

Zuerst mergen wir Apache. In dem Fall wird automatisch Apache2 installiert. Dabei ist nicht viel zu beachten. Wer benötigt sollte die USE-Flags ssl und threads setzen. 

```
emerge apache
```

Als nächstes kommt die Mysql-Datenbank. Das Useflag berkdb sollte bei Bedarf genutzt werden.

```
emerge mysql
```

Falls nicht schon während des emergens geschehen müssen wir die mysql erstmal initialisieren. Hierbei wird die Systemdatenbank mysql sowie ein Account für root angelegt.

```
/usr/bin/mysql_install_db
```

Als nächstes legen wir ein Passwort für root fest (in diesem Fall new-password). Dazu müssen wir mysql starten.

```
/etc/init.d/mysql start

/usr/bin/mysqladmin -u root -h `hostname` password 'new-password'

/usr/bin/mysqladmin -u root password 'new-password'
```

[OPTIONAL]

Aus Sicherheitsgründen wird die Umbennung des root-Accounts empfohlen. In diesem Beispiel auf den User dummy. Das Passwort bleibt hierbei das Gleiche wie zuvor gesetzt. 

```
mysql -u root -p -B --execute="update user set user='dummy' where user='root';  flush privileges;" mysql
```

Zum Verständnis sei hierbei erwähnt das der Nutzer nicht im System existieren muss, da die mysql-Benutzerverwaltung unabhängig von der Benutzerverwaltung des System arbeitet. Durch das umbenennen von root wird nur erreicht das einem potenziellen Einbrechner nicht schon der Name des root-Accounts (nämlich standartmäßig root) bekannt ist. Man sollte nur zukünftig darauf achten statt root immer den gewählten Benutzernamen zu verwenden.

[/OPTIONAL]

Nun Php. Dazu benötigen wir die Pakete php und mod_php. Da Php und mod_php viele Useflags ermöglichen empfiehlt sich das eintragen der Useflags in /etc/portage/package.use. Die Useflag mysql muß für beide, das Useflag apache2 für mod_php gesetzt werden. Es wird empfohlen ebenso die Useflags hardenedphp und memlimit für die Sicherheit zu setzen. Alle anderen Useflags sollten je nach Bedarf gesetzt werden.

Auszug /etc/portage/package.use

```
dev-php/php       mysql hardenedphp memlimit

dev-php/mod_php   apache2 mysql hardenedphp memlimit
```

Jetzt mergen wir Php

```
emerge php mod_php
```

Nach der Installation von Php sollte man prüfen ob der Eintrag mysql.default_socket  in der Datei /etc/php/apache2-php4/php.ini bzw. /etc/php/cli-php4/php.ini gleich dem Eintrag in socket im Abschnitt [mysqld] in /etc/mysql/my.cnf ist. Ggf. müssen die beiden php.ini entsprechend editiert werden.

```
cat /etc/mysql/my.cnf | grep -E "^\[|^socket"

cat /etc/php/apache2-php4/php.ini | grep mysql\.default_socket

cat /etc/php/cli-php4/php.ini | grep mysql\.default_socket
```

Als nächstes sorgen wir dafür das Php mit Apache geladen wird. Dies wird erreicht durch das ergänzen des Eintrages APACHE2_OPTS um -D PHP4 in /etc/conf.d/apache. Wurde Apache mit dem Useflag ssl kompiliert muss hier auch ein -D SSL stehen.

Auszug /etc/conf.d/apache2

```
APACHE2_OPTS="-D SSL -D PHP4"
```

So, das wars. Apache noch starten und alles sollte soweit funktionieren. 

Feedback welcome.

Verwendete Versionen: apache-2.0.52-r1, mysql-4.0.24, php-4.3.10, mod_php-4.3.10Last edited by slick on Wed Apr 13, 2005 7:51 am; edited 3 times in total

----------

## hds

speziell bei php wuerde ich noch das USEflag "session" erwaehnen.. denn ohne session support ist php eher sinnfrei  :Wink: 

----------

## Neo_0815

Warum?

SessionHandler gibts auch mit Database Backend ohne das man PHP dazu braucht, siehe Horde Framework.

MfG

PS: Warum nehmen eigentlich alle mysql, postgresql ist doch sone schöne DB.

----------

## hds

 *Neo_0815 wrote:*   

> 
> 
> SessionHandler gibts auch mit Database Backend ohne das man PHP dazu braucht

 

darum gings mir nicht.

wer sich PHP installiert, der will auch sessions haben. sorum wird ein schuh draus  :Wink: 

mediawiki, nuke, phpBB, usw usw.. all diese dinge laufen ohne php sessions nicht.

----------

## slick

Sessions? Evt. sprichst Du ja von PHP5...

```
# emerge -pv php mod_php

These are the packages that I would merge, in order:

Calculating dependencies ...done!

[ebuild   R   ] dev-php/php-4.3.10  -X +berkdb +crypt +curl* -debug -doc -fdftk -firebird -flash -freetds +gd -gd-external -gdbm -gmp +hardenedphp -imap -informix -ipv6 -java +jpeg -kerberos -ldap -mcal +memlimit -mssql +mysql +ncurses +nls -oci8 -odbc +pam +pdflib +png -postgres -qt +readline +snmp -spell +ssl -tiff +truetype +xml2 -yaz 0 kB

[ebuild   R   ] dev-php/mod_php-4.3.10  -X +apache2 +berkdb +crypt +curl* -debug -doc -fdftk -firebird -flash -freetds +gd -gd-external -gdbm-gmp +hardenedphp -imap -informix -ipv6 -java +jpeg -kerberos -ldap -mcal +memlimit -mssql +mysql +nls -oci8 -odbc +pam +pdflib +png -postgres -qt +snmp -spell +ssl -tiff +truetype +xml2 -yaz 0 kB

Total size of downloads: 0 kB
```

----------

## hds

oops, sorry  :Embarassed:   :Laughing: 

----------

## slick

 *hds wrote:*   

> oops, sorry  

 

Kein Problem ~hds  :Wink: , passiert

Ich ergänze mal oben die Versionen..

----------

## slick

Post "neues ebuild-format" hierhin herausgelöst -> https://forums.gentoo.org/viewtopic-t-321551.html

----------

## Neo_0815

 *hds wrote:*   

>  *Neo_0815 wrote:*   
> 
> SessionHandler gibts auch mit Database Backend ohne das man PHP dazu braucht 
> 
> darum gings mir nicht.
> ...

 

Ich hab PHP installiert weil ich die Sprache brauch - die Sessionfähigkeit aber nicht, je nach Nutzen also, PHP ohne Sessionhandling ist also sinnvoll!  :Wink: .

Gruß

----------

## hds

 *Neo_0815 wrote:*   

> 
> 
> Ich hab PHP installiert weil ich die Sprache brauch - die Sessionfähigkeit aber nicht, je nach Nutzen also, PHP ohne Sessionhandling ist also sinnvoll! .
> 
> 

 

da kann man auch ueber des kaisers bart diskutieren, echt <sorry>

fuer die meisten nutzer duerfte php ohne sessions kaum sinnvoll sein. und die nutzen auch nicht HORDE  :Laughing: 

SCNR

----------

## the-pugnacity

was die sicherheit noch steigern könnte ware die option Open_basedir in der Apache2.conf

damit kann man php zu bringen nur noch auf bestimmte verzeichnisse zu zugreifen.

----------

## slick

Wenn wir schonmal beim Thema sind, ein 

```
<IfModule mod_mime.c>

     AddType application/x-httpd-php .inc

</IfModule>
```

sorgt dafür das die weit verbreiteten *.inc als PHP-Files behandelt werden und somit nicht einfach als Text ausgelesen werden können.

----------

