Nginx mit PHP und MySQL unter CENTOS 6
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 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.
Hier Achtung der Pfad wird sich im Laufe der Zeit ändern.
Jetzt installieren wir gleich mal nginx
und so sorgen wir dafür dass der Webserver beim Booten des Server automatisch starten, zusätzlich starten wir ihn auch gleich noch.
Der Webserver würde jetzt theoretisch laufen nur lässt die Firewall externe zugriffe noch nicht zu, dazu ändern wir iptables
folgender 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.
Nun die Firewall neu starten, damit die Änderung wirksam ist
Wenn wir nun mit einem anderem Rechner im Netz mit einen Webbrowser die IP-Adresse des Servers aufrufen sollten wir eine Willkommensmeldung bekommen.
Jetzt brauchen wir ein Startscript für den den FastCGI Server.
Deshalb erzeugen wir einen Datei
mit folgendem Inhalt (zu finden auf den nginx Webseite):
So, jetzt starten wir das ganze gleich noch und schauen wieder das alles bei Booten gleich läuft.
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.
Jetzt brauchen wir noch eine Webseite
Dazu erstellen wir im Rootverzeichniss von nginx ein Unterverzeichniss und erstellen wieder eine Datei
Der Inhalt sollte für's erste reichen
Dann noch nginx neu starten damit Änderungen an der Config wirksam sind.
Wenn 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.
Wieder erst die benötigten Pakete installieren.
starten MySQL
und setzen ein root Passwort
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.
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.
yum install openssh
chkconfig --level 35 sshd on
service sshd start
Installation Nging
Nun geben wir dem Installer eine zusätzliche Paketquelle.rpm -Uvh http://download.fedora.redhat.com/pub/epel/6/i386/epel-release-6-5.noarch.rpm
Jetzt installieren wir gleich mal nginx
yum install nginx
und so sorgen wir dafür dass der Webserver beim Booten des Server automatisch starten, zusätzlich starten wir ihn auch gleich noch.
chkconfig --add nginx
chkconfig --level 35 nginx on
service nginx start
Der Webserver würde jetzt theoretisch laufen nur lässt die Firewall externe zugriffe noch nicht zu, dazu ändern wir iptables
vi /etc/sysconfig/iptables
folgender 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.
-A INPUT -m state --state NEW -m tcp -p tcp --dport 80 -j ACCEPT
Nun die Firewall neu starten, damit die Änderung wirksam ist
service iptables restart
Wenn 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.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-fcgi
Jetzt brauchen wir ein Startscript für den den FastCGI Server.
Deshalb erzeugen wir einen Datei
vi /etc/init.d/phpfcgi
mit folgendem Inhalt (zu finden auf den nginx Webseite):
#!/bin/bash
#
# Startup script for the PHP FastCGI server.
#
# chkconfig: 345 85 15
# description: PHP is an HTML-embedded scripting language
# processname: php
# config: /etc/php.ini
# Source function library.
. /etc/rc.d/init.d/functions
PHPFCGI="/usr/bin/php-cgi"
FCGIPORT="9000"
FCGIADDR="127.0.0.1"
FCGI_WEB_SERVER_ADDRS="127.0.0.1"
PHP_FCGI_CHILDREN=5
PHP_FCGI_MAX_REQUESTS=1000
ALLOWED_ENV="PATH USER"
PHPUSER=php
PIDFILE=/var/run/phpfcgi.pid
if [ -z "$PHP_FCGI_CHILDREN" ]; then
PHP_FCGI_CHILDREN=5
fi
ALLOWED_ENV="$ALLOWED_ENV PHP_FCGI_CHILDREN PHP_FCGI_MAX_REQUESTS FCGI_WEB_SERVER_ADDRS"
case "$1" in
start)
PHPFCGI_START=$"Starting ${NAME} service: "
echo -n $PHPFCGI_START
# check for $PHPUSER, create if non-existent
if [ -z "`id -u $PHPUSER 2> /dev/null`" ]; then
useradd -s /sbin/nologin $PHPUSER
fi
# clean environment
E=
for i in $ALLOWED_ENV; do E="$E $i=${!i}"; done
daemon --user $PHPUSER --pidfile $PIDFILE "env - $E $PHPFCGI -q -b $FCGIADDR:$FCGIPORT &> /dev/null &"
pid=`pidof php-cgi`
if [ -n "$pid" ]; then
echo $pid > $PIDFILE
success $PHPFCGI_START
else
failure $PHPFCGI_START
fi
echo
;;
stop)
echo -n "Stopping php-fcgi: "
killproc -p $PIDFILE phpfcgi
echo
;;
status)
status phpfcgi
;;
restart)
$0 stop
$0 start
;;
*)
echo "Usage: $0 {start|stop|status|restart}"
exit 1
esac
exit 0
So, jetzt starten wir das ganze gleich noch und schauen wieder das alles bei Booten gleich läuft.
chmod +x /etc/init.d/phpfcgi
chkconfig --add phpfcgi
chkconfig --level 35 phpfcgi on
service phpfcgi start
Virtual 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.
vi /etc/nginx/conf.d/domain_com.conf
server {
server_name domain.com www.domain.com;
location / {
root html/domain;
index index.php index.html index.htm;
}
location ~ \.php$ {
root html/domain;
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
}
Jetzt brauchen wir noch eine Webseite
Dazu erstellen wir im Rootverzeichniss von nginx ein Unterverzeichniss und erstellen wieder eine Datei
mkdir /usr/share/nginx/html/domain
vi /usr/share/nginx/html/domain/index.php
Der Inhalt sollte für's erste reichen
<?php
phpinfo();
?>
Dann noch nginx neu starten damit Änderungen an der Config wirksam sind.
service nginx restart
Wenn 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.
yum install mysql mysql-server
starten MySQL
chkconfig --level 35 mysqld on
service mysqld start
und setzen ein root Passwort
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.
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 178215
Url: https://administrator.de/contentid/178215
Ausgedruckt am: 22.11.2024 um 15:11 Uhr