Nginx mit PHP und MySQL unter CENTOS 6
07.01.2012
09:00:49 Uhr4249 Aufrufe
09:00:49 Uhr
Hilfreich +4
Willkommen bei meiner ersten Anleitung
Da ich mal einen neuen Webserver aufsetzen musste dachte ich mir mal muss es denn immer ein Apache sein.
Nach kurzer Suche bin ich auf Nginx gestoßen. Leider habe ich aber hierzu keine wirklich vollständige und funktionierende Anleitung gefunden.
Und da ich hier schon immer eine schreiben wollte dachte ich mir wass soll's, wobei man eigentlich schnell merkt das es sehr einfach ist.
Da ich mal einen neuen Webserver aufsetzen musste dachte ich mir mal muss es denn immer ein Apache sein.
Nach kurzer Suche bin ich auf Nginx gestoßen. Leider habe ich aber hierzu keine wirklich vollständige und funktionierende Anleitung gefunden.
Und da ich hier schon immer eine schreiben wollte dachte ich mir wass soll's, wobei man eigentlich schnell merkt das es sehr einfach ist.
Inhaltsverzeichnis
Basisinstallation
So besorgt euch als erstes mal eine CD von CENTOS und macht eine Minimalinstallation auf einem Server.Da hier alles Menügeführt ist werde ich mich zu diesem Thema nicht stark auslassen.
Soweit so gut. Ihr sollte jetzt eine Linux Konsole vor euch haben.
Optional:
Ich hab mir als erstes gleich openssh installiert und remote weiter gemacht da ich das die Config Files nicht abtippen wollte.
01.
yum install openssh 02.
chkconfig --level 35 sshd on 03.
service sshd startInstallation Nging
Nun geben wir dem Installer eine zusätzliche Paketquelle.01.
rpm -Uvh http://download.fedora.redhat.com/pub/epel/6/i386/epel-release-6-5.noarch.rpmJetzt installieren wir gleich mal nginx
01.
yum install nginxund so sorgen wir dafür dass der Webserver beim Booten des Server automatisch starten, zusätzlich starten wir ihn auch gleich noch.
01.
chkconfig --add nginx 02.
chkconfig --level 35 nginx on 03.
service nginx startDer Webserver würde jetzt theoretisch laufen nur lässt die Firewall externe zugriffe noch nicht zu, dazu ändern wir iptables
01.
vi /etc/sysconfig/iptablesfolgender Eintrag reicht um den Port 80 der für HTML verwendet wird frei zu geben. Falls die Webseite auf einen anderen Port oder HTTPS verwendet werden soll muss der entsprechende Port freigegeben werden.
01.
-A INPUT -m state --state NEW -m tcp -p tcp --dport 80 -j ACCEPTNun die Firewall neu starten, damit die Änderung wirksam ist
01.
service iptables restartWenn wir nun mit einem anderem Rechner im Netz mit einen Webbrowser die IP-Adresse des Servers aufrufen sollten wir eine Willkommensmeldung bekommen.
Installation PHP
Nun geht's an PHP. Erst mal wieder die Packete installieren.01.
yum install php-pear-Net-Socket php-pear php-common php-gd php-devel php php-mbstring php-pear-Mail php-cli php-imap php-snmp php-pdo php-xml php-pear-Auth-SASL php-ldap php-pear-Net-SMTP php-mysql spawn-fcgiJetzt brauchen wir ein Startscript für den den FastCGI Server.
Deshalb erzeugen wir einen Datei
01.
vi /etc/init.d/phpfcgimit folgendem Inhalt (zu finden auf den nginx Webseite):
01.
#!/bin/bash 02.
# 03.
# Startup script for the PHP FastCGI server. 04.
# 05.
# chkconfig: 345 85 15 06.
# description: PHP is an HTML-embedded scripting language 07.
# processname: php 08.
# config: /etc/php.ini 09.
10.
# Source function library. 11.
. /etc/rc.d/init.d/functions 12.
13.
PHPFCGI="/usr/bin/php-cgi" 14.
FCGIPORT="9000" 15.
FCGIADDR="127.0.0.1" 16.
FCGI_WEB_SERVER_ADDRS="127.0.0.1" 17.
PHP_FCGI_CHILDREN=5 18.
PHP_FCGI_MAX_REQUESTS=1000 19.
ALLOWED_ENV="PATH USER" 20.
PHPUSER=php 21.
PIDFILE=/var/run/phpfcgi.pid 22.
23.
if [ -z "$PHP_FCGI_CHILDREN" ]; then 24.
PHP_FCGI_CHILDREN=5 25.
fi 26.
27.
ALLOWED_ENV="$ALLOWED_ENV PHP_FCGI_CHILDREN PHP_FCGI_MAX_REQUESTS FCGI_WEB_SERVER_ADDRS" 28.
29.
case "$1" in 30.
start) 31.
PHPFCGI_START=$"Starting ${NAME} service: " 32.
echo -n $PHPFCGI_START 33.
34.
# check for $PHPUSER, create if non-existent 35.
if [ -z "`id -u $PHPUSER 2> /dev/null`" ]; then 36.
useradd -s /sbin/nologin $PHPUSER 37.
fi 38.
39.
# clean environment 40.
E= 41.
for i in $ALLOWED_ENV; do E="$E $i=${!i}"; done 42.
daemon --user $PHPUSER --pidfile $PIDFILE "env - $E $PHPFCGI -q -b $FCGIADDR:$FCGIPORT &> /dev/null &" 43.
44.
pid=`pidof php-cgi` 45.
if [ -n "$pid" ]; then 46.
echo $pid > $PIDFILE 47.
success $PHPFCGI_START 48.
else 49.
failure $PHPFCGI_START 50.
fi 51.
echo 52.
;; 53.
stop) 54.
echo -n "Stopping php-fcgi: " 55.
killproc -p $PIDFILE phpfcgi 56.
echo 57.
;; 58.
status) 59.
status phpfcgi 60.
;; 61.
restart) 62.
$0 stop 63.
$0 start 64.
;; 65.
*) 66.
echo "Usage: $0 {start|stop|status|restart}" 67.
exit 1 68.
esac 69.
70.
exit 0So, jetzt starten wir das ganze gleich noch und schauen wieder das alles bei Booten gleich läuft.
01.
chmod +x /etc/init.d/phpfcgi 02.
chkconfig --add phpfcgi 03.
chkconfig --level 35 phpfcgi on 04.
service phpfcgi startVirtual Host Configurieren
Da wir auf dem Server mehrere Webseiten betreiben wollen konfigurieren wir mal den ersten Virtual Host.Dazu erstellen wieder eine Datei. Weitere Möglchkeiten sind gut mit Beispielen auf Nginx Seite dokumentiert.
Bitte erstetzt jeweils "domain" und "com" durch die für euch zutreffenden Namen.
01.
vi /etc/nginx/conf.d/domain_com.conf01.
server { 02.
server_name domain.com www.domain.com; 03.
04.
location / { 05.
root html/domain; 06.
index index.php index.html index.htm; 07.
} 08.
09.
location ~ \.php$ { 10.
root html/domain; 11.
fastcgi_pass 127.0.0.1:9000; 12.
fastcgi_index index.php; 13.
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; 14.
include fastcgi_params; 15.
} 16.
}Jetzt brauchen wir noch eine Webseite
Dazu erstellen wir im Rootverzeichniss von nginx ein Unterverzeichniss und erstellen wieder eine Datei
01.
mkdir /usr/share/nginx/html/domain 02.
vi /usr/share/nginx/html/domain/index.phpDer Inhalt sollte für's erste reichen
01.
<?php 02.
phpinfo(); 03.
?> Dann noch nginx neu starten damit Änderungen an der Config wirksam sind.
01.
service nginx restartWenn wir jetzt an einem 2ten Rechner im Netz, im Falle eines Windows Rechners die hosts Datei bearbeiten und einen Eintrag für "www.domain.com" auf die IP des Servers setzten und diese dann in einem Browser www.domain.com aufrufen sollten wir was sehen.
MySQL Installieren
Das ist jetzt eigentlich am einfachsten.Wieder erst die benötigten Pakete installieren.
01.
yum install mysql mysql-serverstarten MySQL
01.
chkconfig --level 35 mysqld on 02.
service mysqld startund setzen ein root Passwort
01.
mysqladmin --user=root password 'password'Schlusswort
Ich hoffe Ihr kommt mit dieser Schritt für Schrittanleitung klar.In dieser Anleitung bin ich nicht, da es meiner Meinung nach zu umfangreich ist, auf Absicherung und Optimierung eingegangen. Wenn man also diesen Webserver in's Internet stellen will sollte man sich zu diesem Zweck sollte man sich noch in nginx, PHP und MySQL einlesen.
Ich bin gerne für Anregungen und Änderungen bereit und hoffe das mir keiner den Kopf abreißt da Linux nicht grad mein Steckenpferd ist und ich hier zum ersten Mal bewusst auf eine GUI verzichtet habe.





