Heute werden wir einen Webserver auf unserem Raspberry Pi Mini-Server oder seinem Analogon konfigurieren. Die Vorteile einer solchen Lösung sind niedriger Stromverbrauch, leiser Betrieb, da die gesamte Kühlung passiv ist, übrigens, wenn es eine unterbrechungsfreie Stromquelle gibt, dann können der Router und dieser Mini-Server im Falle eines Notstromausfalls lange Zeit am ununterbrochenen Gerät hängen. Von den Nachteilen, nur unzureichende Leistung für hochlastige Standorte, speichert, das heißt, diejenigen, deren Unterbrechung wird für Unternehmen spürbar sein. Kleine Websites, Visitenkarten, dieser Server wird nur so ziehen, natürlich wird kein DDoS-Angriff nicht widerstehen, aber wenn sie DDoS und mit gutem Geld aufnehmen, kann fast niemand es aushalten.
Fügen Sie ein Repository hinzu, um die erforderlichen Pakete zu installieren:
Debian 7 Wheezy:
deb http://archive.raspbian.org/raspbian wheezy main contrib non-free deb-src http://archive.raspbian.org/raspbian wheezy main contrib non-free deb http://mirrordirector.raspbian.org/raspbian/ wheezy main contrib non-free rpi
Für Debian 8 Jessie:
deb http://archive.raspbian.org/raspbian jessie main contrib non-free deb-src http://archive.raspbian.org/raspbian jessie main contrib non-free deb http://mirrordirector.raspbian.org/raspbian/ jessie main contrib non-free rpi
Fügen Sie die Repository-Schlüssel zum System hinzu:
wget -O /tmp/raspbian.public1.key http://archive.raspbian.org/raspbian.public.key && apt-key add /tmp/raspbian.public1.key wget -O /tmp/raspbian.public2.key http://mirrordirector.raspbian.org/raspbian.public.key && apt-key add /tmp/raspbian.public2.key
Es gibt einige Funktionen für die Installation der PHP-Version der Sprache, die Sie bei der Installation eines Betriebssystems zur Ausführung Ihrer Website auf einem Raspberry Pi Mini-Server berücksichtigen müssen:
-
Debian 7 Wheezy ist die Standardversion von PHP 5.4.
-
Debian 8 Jessie ist die Standardversion von PHP 5.6.
Zu meiner Verfügung Raspberry Pi Server mit den folgenden Parametern: 1 Gb System Flash, 512 Mb RAM und 8 Gb Flash werden wir in 3 Abschnitte unterteilen: /var - 1 Gb, /usr - 1 Gb, /home - den gesamten verbleibenden Speicherplatz und übertragen diese Abschnitte vom System-Flash-Laufwerk. Betriebssystem auf einem Mini-Server Debian 7 Wheezy oder Debian 8 Jessie, das wir zuvor gemäß den Anweisungen installiert haben Debian auf einem Raspberry Pi Mini-Server installierenSowie eine 1A-Stromversorgung von einem alten Mobiltelefon.
! Wenn das System-Flash-Laufwerk eine Partition von mehr als 4 GB hat, ist es möglich, Partitionen zu übertragen, ohne schmutzig zu werden, da für den Server das System USB-Laufwerk in 4 GB und höher ausreicht.
! Achtung. Ich empfehle dringend, ein Raspberry Pi-Flashlaufwerk zu verwenden, um andere Systeme als Transcend zu installieren, da bei der Installation auf Transcend das System nach dem Neustart oder Update das Dateisystem schlagen kann und nicht geladen wird. Kingston und Apacer hatten dieses Problem nicht. Dieses Problem bestand bei zwei Raspberry Pi Boards mit mehreren Transcend-Karten unterschiedlicher Größen und Klassen.
Da die Hardware nicht super leistungsfähig ist, werden wir einen leichtgewichtigen Webserver Nginx, PHP-FPM, APC und MYSQL Datenbankserver mit phpmyadmin installieren.
Installieren Sie die notwendigen Pakete von Programmen:
apt-get install exim4 ntp ntpdate apache2-utils nginx php5-fpm php-apc php5-curl mysql-client mysql-server php5-mysql phpmyadmin sudo
Stimmen Sie allen Fragen des Installateurs zu, indem Sie den Brief drücken y. Wenn Sie eine mysql-Datenbank installieren, fordert der Installer Sie auf, das Root-Datenbankpasswort des Benutzers einzugeben und zu wiederholen, achten Sie darauf, es an einem sicheren Ort zu schreiben, zum Beispiel in ein Notizbuch, damit Sie es nicht wiederherstellen müssen.
Installieren Sie das 8 GB Flash-Laufwerk, auf dem sich die Dateien und Protokolle der Website befinden
Verbinden Sie das 8GB Flash-Laufwerk mit dem USB-Anschluss des Mini-Servers und prüfen Sie, ob das Flash-Laufwerk im System sichtbar ist, indem Sie den Befehl ausführen:
fdisk -l
Die Antwort von Sitima:
Disk /dev/mmcblk0: 1023 MB, 1023934464 bytes
4 heads, 16 sectors/track, 31248 cylinders, total 1999872 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x00000000
Device Boot Start End Blocks Id System
/dev/mmcblk0p1 8192 122879 57344 6 FAT16
/dev/mmcblk0p2 122880 1999871 938496 83 Linux
Disk /dev/sdb: 7948 MB, 7948206080 bytes
255 heads, 63 sectors/track, 966 cylinders, total 15523840 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x000f1f67
Device Boot Start End Blocks Id System
/dev/sdb1 63 15518789 7759363+ b W95 FAT32Hier sehen wir, dass das System einen Flash-Laufwerk sieht. /dev/sdbGröße 7948 MB(8 GB) sowie, dass das Flash-Laufwerk im Windows Fat32-Dateisystem formatiert ist.
Beginnen wir mit der Aufteilung des Flash-Laufwerks, indem wir dem Befehl folgen:
fdisk /dev/sdb
Um die Parameter des fdisk-Programms anzuzeigen, müssen Sie einen Buchstaben eingeben. mDas Programm bietet eine Liste möglicher Befehle:
Command (m for help): m Command action a toggle a bootable flag b edit bsd disklabel c toggle the dos compatibility flag d delete a partition l list known partition types m print this menu n add a new partition o create a new empty DOS partition table p print the partition table q quit without saving changes s create a new empty Sun disklabel t change a partition's system id u change display/entry units v verify the partition table w write table to disk and exit x extra functionality (experts only)
Überprüfen Sie die Partitionstabelle auf dem Flash-Laufwerk, indem Sie auf p:
Command (m for help): p Disk /dev/sdb: 7948 MB, 7948206080 bytes 255 heads, 63 sectors/track, 966 cylinders, total 15523840 sectors Units = sectors of 1 * 512 = 512 bytes Sector size (logical/physical): 512 bytes / 512 bytes I/O size (minimum/optimal): 512 bytes / 512 bytes Disk identifier: 0x000f1f67 Device Boot Start End Blocks Id System /dev/sdb1 63 15518789 7759363+ b W95 FAT32
Löschen Sie den vorhandenen Abschnitt auf dem Flash-Laufwerk durch Drücken des Buchstabens d:
Command (m for help): d Selected partition 1
Überprüfen Sie, ob der Abschnitt gelöscht wird, indem Sie einen Buchstaben eingeben p:
Command (m for help): p Disk /dev/sdb: 7948 MB, 7948206080 bytes 255 heads, 63 sectors/track, 966 cylinders, total 15523840 sectors Units = sectors of 1 * 512 = 512 bytes Sector size (logical/physical): 512 bytes / 512 bytes I/O size (minimum/optimal): 512 bytes / 512 bytes Disk identifier: 0x000f1f67 Device Boot Start End Blocks Id System
Erstellen Sie einen Abschnitt. /usr 1 GB durch Eingabe eines Buchstabens n:
Command (m for help): n
Partition type:
p primary (0 primary, 0 extended, 4 free)
e extended
Select (default p):
Using default response p
Partition number (1-4, default 1):
Using default value 1
First sector (2048-15523839, default 2048):
Using default value 2048
Last sector, +sectors or +size{K,M,G} (2048-15523839, default 15523839): +1GErstellen Sie einen Abschnitt. /var 1 GB durch Eingabe eines Buchstabens n:
Command (m for help): n
Partition type:
p primary (1 primary, 0 extended, 3 free)
e extended
Select (default p):
Using default response p
Partition number (1-4, default 2):
Using default value 2
First sector (2099200-15523839, default 2099200):
Using default value 2099200
Last sector, +sectors or +size{K,M,G} (2099200-15523839, default 15523839): +1GErstellen Sie einen Abschnitt. /home die Größe des verbleibenden Platzes durch Eingabe eines Buchstabens n:
Command (m for help): n
Partition type:
p primary (2 primary, 0 extended, 2 free)
e extended
Select (default p):
Using default response p
Partition number (1-4, default 3):
Using default value 3
First sector (4196352-15523839, default 4196352):
Using default value 4196352
Last sector, +sectors or +size{K,M,G} (4196352-15523839, default 15523839):
Using default value 15523839Überprüfen Sie die erstellten Abschnitte, indem Sie einen Buchstaben eingeben p:
Command (m for help): p Disk /dev/sdb: 7948 MB, 7948206080 bytes 255 heads, 63 sectors/track, 966 cylinders, total 15523840 sectors Units = sectors of 1 * 512 = 512 bytes Sector size (logical/physical): 512 bytes / 512 bytes I/O size (minimum/optimal): 512 bytes / 512 bytes Disk identifier: 0x000f1f67 Device Boot Start End Blocks Id System /dev/sdb1 2048 2099199 1048576 83 Linux /dev/sdb2 2099200 4196351 1048576 83 Linux /dev/sdb3 4196352 15523839 5663744 83 Linux
Notieren Sie sich die Änderungen am Flash-Laufwerk, indem Sie einen Buchstaben eingeben w:
Command (m for help): w The partition table has been altered! Calling ioctl() to re-read partition table. Syncing disks.
Überprüfen Sie den Ausfall des Flash-Laufwerks, indem Sie dem Befehl folgen:
fdisk -l ... Disk /dev/sdb: 7948 MB, 7948206080 bytes 245 heads, 62 sectors/track, 1021 cylinders, total 15523840 sectors Units = sectors of 1 * 512 = 512 bytes Sector size (logical/physical): 512 bytes / 512 bytes I/O size (minimum/optimal): 512 bytes / 512 bytes Disk identifier: 0x000f1f67 Device Boot Start End Blocks Id System /dev/sdb1 2048 2099199 1048576 83 Linux /dev/sdb2 2099200 4196351 1048576 83 Linux /dev/sdb3 4196352 15523839 5663744 83 Linux
Wir beginnen, die erstellten Abschnitte zu formatieren, indem wir Befehle ausführen:
mkfs.ext4 /dev/sdb1 mkfs.ext4 /dev/sdb2 mkfs.ext4 /dev/sdb3
Montieren Sie die erste Partition in einen Ordner /mntCopy Inhalt des Abschnitts /usr Und wir werden den Abschnitt durch Ausführen von Befehlen entmounten:
mount /dev/sdb1 /mnt/ cp -Rp /usr/* /mnt/ umount /mnt
Montieren Sie die zweite Partition in einen Ordner /mntCopy Inhalt des Abschnitts /var Und wir werden den Abschnitt durch Ausführen von Befehlen entmounten:
mount /dev/sdb2 /mnt/ cp -Rp /var/* /mnt/ umount /mnt
Montieren Sie die dritte Partition in einen Ordner /mntCopy Inhalt des Abschnitts /home Und wir werden den Abschnitt durch Ausführen von Befehlen entmounten:
mount /dev/sdb3 /mnt/ cp -Rp /home/* /mnt/ umount /mnt
Änderungen an der Partition Mount-Datei /etc/fstab
vi /etc/fstab ... /dev/sdb1 /usr ext4 defaults,noatime 0 2 /dev/sdb2 /var ext4 defaults,noatime 0 2 /dev/sdb3 /home ext4 defaults,noatime 0 2 # монтирум папку логов в оперативную память для дольшей работы флешки: tmpfs /var/log tmpfs rw,size=150m 0 0
Da das System-Flash-Laufwerk klein ist und Systempartitionen /usr und /var Wir haben auf ein separates Flash-Laufwerk kopiert, fstab konfiguriert, dann werden die Dateien vom System USB-Laufwerk gelöscht und durch Ausführen der Befehle neu gestartet:
rm -rf /usr/* rm -rf /var/* reboot
Nach dem Neustart wird das Board von zwei Flash-Laufwerken geladen. Stellen Sie sicher, dass Sie nach Abschluss der Einstellung Bilder von beiden Flash-Laufwerken erstellen, damit Sie nicht alles erneut konfigurieren müssen, wenn ein Flash-Laufwerk ausfällt.
PHP konfigurieren
Änderungen an der PHP Konfigurationsdatei:
vi /etc/php5/fpm/php.ini
war:
... ;cgi.fix_pathinfo=1 ... ;date.timezone = ...
wurde:
... cgi.fix_pathinfo=0 ... date.timezone="Europe/Kiev" ...
Konfigurieren Sie APC für das Caching von PHP-Skripten:
vi /etc/php5/fpm/conf.d/20-apc.ini extension=apc.so ; Включаем APC: apc.enabled=1 ; Количество сегментов памяти: apc.shm_segments=1 ; Размер одного сегмента памяти": apc.shm_size=64
Customize Nginx
Wir konfigurieren einen Webserver, fügen eine Domain hinzu, auf der die Site auf unserem Board funktioniert, zum Beispiel wird die Site webserver.loc genannt
Fügen Sie eine Gruppe hinzu, zu der wir den Benutzer hinzufügen, unter dem der Webserver funktioniert, indem Sie den Befehl ausführen:
addgroup --gid 10000 webserver
Hinzufügen eines Benutzers aus dem Home-Verzeichnis /home/www/webserver.loc Und dann habe ich den Befehl erteilt.
adduser --home /home/www/webserver.loc --shell /dev/null --uid 10000 --gid 10000 --disabled-password --disabled-login --gecos '' webserver
Wir erstellen eine Verzeichnisstruktur der Website:
mkdir /home/www/webserver.loc/logs mkdir /home/www/webserver.loc/www mkdir /home/www/webserver.loc/tmp mkdir /home/www/webserver.loc/sessions chown -R webserver:webserver /home/www/webserver.loc/
Erstellen einer Konfigurationsdatei webserver.loc.conf Ordner pool.d Domain-erstellt webserver.loc und Änderungen an dieser Datei vornehmen:
vi /etc/php5/fpm/pool.d/webserver.loc.conf [webserver.loc] user = webserver group = webserver listen = 127.0.0.1:9000 listen.owner = webserver listen.group = webserver listen.mode = 0660 pm = dynamic pm.max_children = 5 pm.start_servers = 2 pm.min_spare_servers = 1 pm.max_spare_servers = 3 chdir = / php_admin_value[sendmail_path] = /usr/sbin/sendmail -t -i -f [email protected] php_flag[display_errors] = off php_admin_value[error_log] = /home/www/webserver.loc/logs/fpm-php.www.log php_admin_flag[log_errors] = on php_admin_value[upload_tmp_dir] = /home/www/webserver.loc/tmp php_admin_value[session.save_path] = /home/www/webserver.loc/sessions php_admin_value[open_basedir] = /home/www/webserver.loc/www:/home/www/webserver.loc/tmp:/home/www/webserver.loc/sessions:/usr/share/phpmyadmin php_admin_value[mail.log] = /home/www/webserver.loc/logs/mail.log php_admin_value[memory_limit] = 128M php_admin_value[post_max_size] = 18M php_admin_value[max_execution_time] = 300 php_admin_value[allow_url_fopen] = Off php_admin_value[upload_max_filesize] = 18M php_admin_value[date.timezone] = Europe/Kiev
Deaktivieren Sie die Standardeinstellungen für den Webserver, indem Sie dem Befehl folgen:
unlink /etc/nginx/sites-enabled/default
Erstellen Sie eine Nginx Webserver Konfigurationsdatei für unsere webserver.loc Domain:
vi /etc/nginx/sites-available/webserver.loc.conf
# redirect www
server {
listen 80;
server_name www.webserver.loc;
return 301 $scheme://webserver.loc$request_uri;
}
server {
listen 80; ## listen for ipv4
# root dir of your pages
root /home/www/webserver.loc/www/;
index index.php index.html index.htm;
server_name webserver.loc;
location / {
try_files $uri $uri/ /index.html;
}
# pass the PHP scripts to FastCGI
location ~ \.php$ {
try_files $uri = 404;
fastcgi_split_path_info ^(.+\.php)(/.+)$;
# php5-fpm :
fastcgi_pass 127.0.0.1:9000;
fastcgi_read_timeout 300;
fastcgi_index index.php;
include fastcgi_params;
}
# deny access to .htaccess files, if Apache's document root concurs with nginx's one
location ~ /\.ht {
deny all;
}
# error and access logs
# error_log /home/www/webserver.loc/logs/nginx-error.log crit;
error_log /home/www/webserver.loc/logs/nginx-error.log;
access_log /home/www/webserver.loc/logs/nginx-access.log;
#Работа с phpMyAdmin
location /phpmyadmin {
root /usr/share/;
index index.php index.html index.htm;
location ~ ^/phpmyadmin/(.+\.php)$ {
try_files $uri =404;
root /usr/share/;
fastcgi_pass 127.0.0.1:9000;
fastcgi_read_timeout 300;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $request_filename;
include /etc/nginx/fastcgi_params;
}
location ~* ^/phpmyadmin/(.+\.(jpg|jpeg|gif|css|png|js|ico|html|xml|txt))$ {
root /usr/share/;
}
}
location /phpMyAdmin {
rewrite ^/* /phpmyadmin last;
}
}Einreichen. /etc/nginx/nginx.conf Geben Sie die Daten ein:
vi /etc/nginx/nginx.conf
user www-data;
# Число рабочих процессов nginx, рекомендуется ставить по количеству процессоров/ядер на вашем сервере
worker_processes 1;
# Уменьшает число системных вызовов gettimeofday(), что приводит к увеличению производительности
timer_resolution 100ms;
# Изменяет ограничение на число используемых файлов RLIMIT_NOFILE для рабочего процесса.
worker_rlimit_nofile 8192;
# Директива задаёт приоритет рабочих процессов от -20 до 20 (отрицательное число означает более высокий приоритет).
worker_priority -20;
# Путь к логу ошибок
error_log /var/log/nginx/error.log;
pid /var/run/nginx.pid;
events {
worker_connections 768;
use epoll;
# multi_accept on;
}
http {
server_names_hash_bucket_size 64;
include /etc/nginx/mime.types;
default_type application/octet-stream;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2; # Dropping SSLv3, ref: POODLE
ssl_prefer_server_ciphers on;
# log options
log_format main '$remote_addr - $remote_user [$time_local] '
'"$request" $status $bytes_sent '
'"$http_referer" "$http_user_agent" '
'"$gzip_ratio" "$request_time"';
access_log /var/log/nginx/access.log main;
# Включить sendfile(). Использование sendfile() экономит системные вызовы, уменьшает число копирований данных, позволяет использовать меньше физической памяти.
sendfile on;
# Разрешаем использовать TCP_CORK в Linux, что позволяет передавать заголовок ответа и начало файла в одном пакете в Linux
tcp_nopush on;
# Задаём таймаут, в течение которого keep-alive соединение с клиентом не будет закрыто со стороны сервера. Второй параметр задаёт значение в строке "Keep-Alive: timeout=время" в заголовке ответа.
#keepalive_timeout 0;
keepalive_timeout 35 45;
# Разрешаем использовать опцию TCP_NODELAY
tcp_nodelay on;
# Запрещаем выдавать версию nginx'а в сообщениях об ошибках и в строке заголовка ответа "Server".
server_tokens off;
# Разрешаем сжатие ответа методом gzip.
gzip on;
#Разрешаем проверку готового сжатого файла.
gzip_static on;
# Устанавливаем уровень сжатия ответа методом gzip.
gzip_comp_level 4;
# Устанавливаем минимальную длину ответа, для которых будет выполняться сжатие ответа методом gzip
gzip_min_length 1024;
gzip_disable "MSIE [1-6]\.(?!.*SV1)";
gzip_buffers 64 8k;
gzip_http_version 1.1;
gzip_proxied any;
gzip_types
text/plain
text/css
text/x-js
text/xml
text/javascript
application/javascript
application/x-javascript
application/json
aplication/xml
application/xml+rss
application/vnd.ms-fontobject
application/x-font-ttf
font/ttf
font/opentype;
proxy_connect_timeout 600 ;
proxy_send_timeout 600 ;
proxy_read_timeout 600 ;
send_timeout 600 ;
include /etc/nginx/conf.d/*.conf;
include /etc/nginx/sites-enabled/*;
}
Achtung! Wenn der Neustart des Webservers einen Fehler ergibt:
Restarting nginx: nginx: [emerg] could not build the server_names_hash, you should increase server_names_hash_bucket_size: 32 nginx: configuration file /etc/nginx/nginx.conf test failed
Es ist notwendig, einen Parameter zum http-Abschnitt hinzuzufügen server_names_hash_bucket_size:
http {
server_names_hash_bucket_size 64;
...Um die Arbeit von PHP-Scripts auf dem Server zu überprüfen, erstellen Sie eine Datei im Site-Verzeichnis index.php mit dem Inhalt:
<?php phpinfo(); ?>
Sie können die gleiche Datei erstellen, indem Sie den Befehl ausführen:
echo '<?php phpinfo(); ?>' > /home/www/webserver.loc/www/index.php
Aktivieren Sie die Domäne durch Erstellen eines symbolischen Links und starten Sie Nginx und php5-fpm neu, indem Sie die Befehle ausführen:
ln -s /etc/nginx/sites-available/webserver.loc.conf /etc/nginx/sites-enabled/ /etc/init.d/nginx restart /etc/init.d/php5-fpm restart
Danach können wir Ihre Domain-Adresse im Browser öffnen. webserver.loc Und schauen Sie sich die Seite an, die mit PHP-Parametern geöffnet wird.
Achtung! Wenn Sie ein Debian Jessie-Betriebssystem installiert haben und einen weißen Bildschirm anstelle einer Seite mit Informationen zu PHP öffnen, müssen Sie Änderungen an der Datei vornehmen. /etc/nginx/fastcgi_params:
vi /etc/nginx/fastcgi_params fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; ...
Überladen Sie den Nginx WEB Server, indem Sie den Befehl ausführen:
/etc/init.d/nginx restart
Wenn Sie phpmyadmin öffnen müssen, um mit Mysql zu arbeiten, öffnen wir die Browseradresse und geben das Root-Login und Passwort ein, das Sie während der Installation des mysql-Servers eingegeben haben:
http://webserver.loc/phpmyadmin/
Heute haben wir einen Web- und Datenbankserver auf einem Single Board Computer Raspberry Pi oder dessen Analogon (z. B. Orange Pi) installiert, der für den Betrieb einer kleinen Website, Telefon PBX, ausreicht.
Ich war bei dir. Sergej Lazarenko.
Machen wir eine kurze Pause und schauen uns ein Video an, wie man im Lager badet:



Kommentar