Nunja viele kennen das, ein vServer hat immer relativ wenig Speicher / CPU und deshalb möchte man eine optimale Konfiguration eines Webservers.
Hier will ich weiter erläutern wie dies mit einem vServer von netcup genau geht. Als Image benutze ich hier CentOS 6 64-Bit und ich benutze ausschließlich Pakete die von irgendeiner Repository bereitgestellt werden, so spart man sich Compilerzeit und muss sich auch nicht mit den Configs rumschlage, sollte jemand jedoch spezielle Anforderungen haben, bezüglich Ruby on Rails etc. kann er mir gerne eine private Message schreiben und ich werde das gerne mit ihm durchsprechen.
1. Schritt - NGiNX installieren
Dieser Schritt sollte nicht allzu schwer sein und auf nginx news kriegt man für CentOS 6 auch eine dementsprechende Repository.
Zuerst jedoch sollte man ältere PHP Versionen bzw. Apache deinstallieren, auch MySQL sollte man deinstallieren, aufgrund von Problemen mit aktueller php-mysql, wenn man nicht von einem Plain System ausgeht:
Jetzt einfach über die NGiNX Repository hinzufügen:
rpm -ivh http://nginx.org/packages/centos/6/noarch/RPMS/nginx-release-centos-6-0.el6.ngx.noarch.rpm
Jetzt müssen wir aber in einem getrennten Schritt NGiNX noch von der Repository installieren:
Über ein sog. 'yum update' kann man nun auch immer den NGiNX upgraden, wenn eine neue Version bereitsteht.
Um NGiNX mit dem Systemstart zu starten muss man übrigens noch folgendes Kommando in die Konsole eintippen:
2. Zusätzliche Repositorys aktivieren
Um PHP auf einfachste Weise zu beziehen brauchen wir noch 2 weitere Repositorys. Dabei benutze ich immer die 'Remi und EPEL Repository'.
EPEL brauchen wir, weil REMI von EPEL abhängt und daraus Pakete bezieht. Auf REMI ist dabei PHP 5.3 mit dem aktuellsten update vorhanden.
Um diese beiden Repositorys zu installieren müssen wir folgendes tun (beachte bitte Reihenfolge einhalten):
yum install yum-priorities -y
rpm -ivh http://download.fedoraproject.org/pub/epel/6/i386/epel-release-6-5.noarch.rpm
rpm -ivh http://rpms.famillecollet.com/enterprise/remi-release-6.rpm
3. PHP installieren
Dieser Schritt ist relativ einfach, um PHP Core zu installieren einfach:
Dabei ist zu beachten, dass die 'remi' Repository nicht automatisch aktiv ist, sondern mit '--enablerepo=remi' jedesmal aktiviert werden muss. Um dies zu ändern müsste man unter:
Den Paramter 'enabled=0' auf '1' stellen:
[remi]
name=Les RPM de remi pour Enterprise Linux $releasever - $basearch
#baseurl=http://rpms.famillecollet.com/enterprise/$releasever/remi/$basearch/
mirrorlist=http://rpms.famillecollet.com/enterprise/$releasever/remi/mirror
enabled=1
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-remi
failovermethod=priority
So sollte das dann aussehen.
Um PHP-FPM zu starten, wenn das System bootet einfach
in die Konsole eingeben und dann wird es bei jedem Systemstart mitgestartet.
Wenn man jetzt noch weitere Pakete mit PHP wünscht bzw. MySQL installieren will, muss man folgendes Kommando eingeben:
3. Konfiguration von php-fpm
Jetzt kommen wir zu einem wesentlich spannenderen Teil, die Konfiguration von php-fpm.
Zuerst müssen wir dazu ein User anlegen:
Nun müssen wir uns festlegen, in welchem Ordner wir genau hosten wollen, ich habe hier den Standart Ordner '/var/www' benutzt:
mkdir -p /var/wwwchown www-data.www-data -R /var/wwwchmod 755 /var/wwwusermod -d /var/www www-data
Jetzt muss man noch die Konfiguration von php-fpm angepasst werden. Dazu einfach die Datei öffnen:
danach schreiben wir in diese Datei folgendes:
[www]
listen = /var/run/php-fpm.sock
;listen.allowed_clients = 127.0.0.1listen.owner = www-datalisten.group = www-datalisten.mode = 0777
user = www-datagroup = www-data
pm = dynamicpm.max_children = 2pm.start_servers = 1pm.min_spare_servers = 1pm.max_spare_servers = 1
chdir = /
php_admin_value[open_basedir] = /var/www:/tmpphp_admin_value[disable_functions] = dl,exec,passthru,shell_exec,system,proc_open,popen,curl_exec,curl_multi_exec,parse_ini_file,show_source
Nun sollte man mit
einen erfolgreichen start von php-fpm verbuchen können.
4. Konfiguration von NGiNX
Zuerst bearbeiten wir die nginx.conf:
Diese sollte bei euch dann in etwas so aussehen:
user www-data;worker_processes 1;
error_log /var/log/nginx/error.log warn;pid /var/run/nginx.pid;
events { worker_connections 1024;}
http { include /etc/nginx/mime.types; default_type application/octet-stream;
log_format main '$remote_addr - $remote_user [$time_local] "$request" ' '$status $body_bytes_sent "$http_referer" ' '"$http_user_agent" "$http_x_forwarded_for"';
access_log /var/log/nginx/access.log main;
sendfile on; #tcp_nopush on;
keepalive_timeout 65;
gzip on;
client_max_body_size 100M;
include /etc/nginx/sites-enabled/*;}
Display More
Um jetzt VHosts anlegen zu können, muss man noch das Verzeichnis sites-enabled erstellen:
Und jetzt zu guter letzt noch eine VHost Konfiguration unter sites-enabled erstellen:
Diese sollte am Ende bei euch in etwas so aussehen:
server { listen 80 default; server_name _;
root /var/www;
location / { index index.html index.htm index.php; }
# pass the PHP scripts to FastCGI server listening on /var/run/php-fpm.sock # location ~ \.php$ { try_files $uri =404; fastcgi_pass unix:/var/run/php-fpm.sock; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; fastcgi_param PATH_INFO $fastcgi_script_name; include /etc/nginx/fastcgi_params; }
}
Und schon sollte das ganze auch funktionieren.
Hierzu einfach den NGiNX starten bzw. neustarten, am besten auch gleich php-fpm neustarten:
Viel Spaß mit eurem neuen VServer und NGiNX und php-fpm
5. Noch Fragen?
Wenn Ihr nun noch Fragen haben solltet zu einzelnen Paramter oder Fehler in meiner Anleitung gefunden habt, so bitte ich euch doch mir diese Mitzuteilen.
Mit freundlichen Grüßen
Fruchtsalat