Cubieboard 3 – Webserver erstellen unter Debian

1. Installation eines Images auf die SD-Karte

Ich verwende im folgenden einen Cubietruck (Cubieboard 3), allerdings sollte es mit einem Raspberry Pi oder ähnlichem mit Debian gleich laufen.

Image installieren auf SD Karte mithilfe von Win32-DiskImager: debian-jessie-server-ct-card0-hdmi-V1.0
http://dl.cubieboard.org/model/CubieBoard3/Image/Debian-jessie-server/V1.0/

2. Updates installieren und Grundkonfiguration

Standardlogin zum einloggen per SSH nutzen:   cubie -> cubieboard  ; root -> cubieboard (Beispiel für das Cubieboard 3)

User und Root – Passwort ändern mit:

passwd
sudo passwd

Updates installieren & Uhrzeit-Daemon installieren:

sudo apt-get update
sudo apt-get upgrade

Es bietet sich am Anfang ebenfalls an, einmalig die richtige Zeitzone zu setzen, damit sich das Gerät die korrekte Uhrzeit zieht. Dies kann mit folgendem Befehl bewerkstelligt werden.

sudo dpkg-reconfigure tzdata

3. Externes Speichermedium anschließen (SSD, HDD, USB-Stick etc.) und formatieren

Da meine 8GB SD-Karte etwas zu klein ist für einen Webserver mit Filemanager, schließe ich eine 256GB SSD an den Cubietruck an.

Listet die angeschlossenen Datenträger auf

sudo fdisk -l

Partitionierung des Datenträgers – Linux Filesystem wählen

sudo cfdisk

Formatiert den Datenträger auf ext4 (Standard-Linux-Dateisystem)

sudo mkfs.ext4 /dev/sda1

Erzeugt Ordner “SamsungSSD” im media-Ordner

sudo mkdir /media/SamsungSSD

Mountet den Datenträger als /media/SamsungSSD

sudo mount /dev/sda1 /media/SamsungSSD/

4. Speichermedium beim Neustart automatisch einbinden

Da sich die Datenträgerbezeichnungen (/dev/sda1) leicht mal ändern.. anhand der eindeutigen Nummer UUID einhängen
In meinem Beispiel hat die /dev/sda1 -> UUID: 112989bf-be7a-4a4e-aaea-430bce0c555b

ls -l /dev/disk/by-uuid/

Bearbeiten der “Datenträgereinhängungsdatei”

sudo nano /etc/fstab

Folgendes hinzufügen:

UUID=112989bf-be7a-4a4e-aaea-430bce0c555b /media/SamsungSSD ext4 auto,defaults 0 2

So nun wird die SSD Festplatte immer nach dem Neustart automatisch eingebunden unter /media/SamsungSSD. Das heißt ich kann dadrauf meinen Webserver auslagern.

5. Apache 2.4, PHP 7.0 & MySQL installieren

Zunächst einmal als root anmelden, mit folgendem Befehl:

su
Apache 2.4 Webserver
apt-get -y install apache2
PHP 7.0 Installation

In der Standard-Repo (welche man über apt-get install aufruft) befindet sich kein PHP 7.0, sondern nur PHP 5.X.

Also müssen wir eine neue Quelle hinzufügen und die PHP 7.0 Pakete von dort beziehen. Dazu müssen wir uns erst mit der Quelle verschlüsselt verbinden und diese dann in der sources.list ablegen, damit wir sie per “apt-get” abrufen können.

apt-get install apt-transport-https lsb-release ca-certificates
wget -O /etc/apt/trusted.gpg.d/php.gpg https://packages.sury.org/php/apt.gpg
echo "deb https://packages.sury.org/php/ $(lsb_release -sc) main" > /etc/apt/sources.list.d/php.list
apt-get update
apt-get install php7.0

Für meine Zwecke später noch benötigte PHP Module:
PHP7.0-gd = Bilddarstellung direkt im Browser (Wichtig für den Dateimanager)
PHP7.0-mbstring = Gewolltes Modul von PHPMyAdmin
PHP7.0-mysql = Gewolltes Modul von PHPMyAdmin
PHP-MySQL = Gesamte MySQL Bibliothek für PHP

apt-get install php7.0-gd
apt-get install php7.0-mbstring
apt-get install php7.0-mysql
apt-get install php-mysql
MySQL-Server installieren
sudo apt-get install mysql-server

6. Zugriffsrechte setzen

Es wird eine neue Gruppe erstellt mit dem Namen “www” diese darf dann auf /media/SamsungSSD zugreifen. Ebenso weisen wir dem Apache-User (www-data) diese Gruppe ebenfalls zu. Und wir als “cubie” übernehmen die Eigentürmerschaft des Ordners.

sudo groupadd www
sudo usermod -a -G www cubie
sudo usermod -a -G www www-data
sudo chown -R cubie:www /media/SamsungSSD/

7. Standard-Pfade umbiegen auf das externe Speichermedium

Nun müssen wir die Standard-Dateipfade von /var/www/html umbiegen auf /media/SamsungSSD/webserver

Da ich Subdomains habe lege ich auf der /media/SamsungSSD zunächst einmal verschiedene Ordner an:

/media/SamsungSSD/homepage
/media/SamsungSSD/ftp
/media/SamsungSSD/filemanager
/media/SamsungSSD/secure
/media/SamsungSSD/blog

Diese Pfade in die Apache2-Config eintragen als Virtual-Hosts.

Dazu erstellen wir eine Config-Datei (marcelhussdomain.conf), welche die sogenannten Virtual-Hosts enthält:
Hier den Host für die Hauptseite. Wichtig hier ist der ServerName, DocumentRoot und das Directory mit “Require all granted” und “AllowOverride All”.

Tipp: Die Datei marcelhussdomain.conf in /etc/apache2/sites-enabled/ erstellen mit dem Vorbild 000-defaults.conf

<VirtualHost *:80>
  ServerName secure.marcelhuss.de

  ServerAdmin admin@marcelhuss.de
  DocumentRoot /media/SamsungSSD/secure/
  
  <Directory />
    Options Indexes FollowSymLinks
  AllowOverride None
  Require all granted
  </Directory>

  ErrorLog ${APACHE_LOG_DIR}/error.log
  CustomLog ${APACHE_LOG_DIR}/access.log combined

</VirtualHost>

Diesen VirtualHost kopiere ich und passe den ServerName und den DocumentRoot an meine anderen Subdomains an.

Damit diese zusätzliche Config-Datei nun auch vom Apache geladen wird, legen wir sie in /etc/apache2/sites-enabled ab und bearbeiten dann die apache2.conf (/etc/apache2/apache2.conf)

Dort fügen wir am Ende der Datei folgendes ein:

IncludeOptional sites-enabled/marcelhussdomain.conf

Nun müssen wir den Apache2-Webserver neuladen:

sudo /etc/init.d/apache2 restart

8. Installation PHPMyAdmin

Als nächstes installieren wir PHPMyAdmin, um die MySQL-Datenbank per Weboberfläche zu verwalten. Wir laden uns das neuste Paket von der Seite und entpacken es. Danach müssen wir es nur noch umbenennen und das war es.

sudo apt-get install unzip
Dann die ZIP Datei von https://www.phpmyadmin.net/downloads/ runterladen und als Zip hochladen und dann mit
cd /media/SamsungSSD
unzip phpMyAdmin-4.7.0-all-languages.zip
mv phpMyAdmin-4.7.0-all-languages phpmyadmin

Die zusätzlichen PHP Module hatten wir ja schon installiert, allerdings müssen wir nun in den phpmyadmin-Ordner und in der config.sample.inc.php das Blowfish_Secret setzen. Das Blowfish_Secret kann sollte super lang und kompliziert sein, man muss es sich nicht merken. Also z.B. “23oiu5235z98 /& (/§%67&(/%§&/(357813223ui2z3uf4fzu3öasfij” nehmen.

sudo nano /media/SamsungSSD/phpmyadmin/config.sample.inc.php

Danach die Datei speichern mit STRG+O und Enter und mit STRG+X aus dem Dokument raus. Nun die Datei umbenennen in “config.inc.php”.

mv /media/SamsungSSD/phpmyadmin/config.sample.inc.php /media/SamsungSSD/phpmyadmin/config.inc.php

Nun haben wir unsere Subdomains, unser PHPMyAdmin und nun fehlt nur noch die HTTPS-Verschlüsselung.

9. Verschlüsselte HTTPS-Verbindung einrichten

Dazu müssen wir erstmal SSL im Apache aktivieren

sudo a2enmod ssl
sudo service apache2 reload
sudo a2ensite default-ssl
sudo service apache2 reload

Danach erhält man im Ordner /etc/apache2/sites-enabled eine Datei: default-ssl.conf
Diese nutzen wir später als Configfile für die SSL Verschlüsselung. Nun aber erstmal die Zertifikate erstellen. Und zwar mit dem Certbot, da dieses das Verfahren recht einfach ist. Zunächst wird der Certbot installiert, welcher einen Haufen Abhängigkeiten und Pakete braucht. Diese Installation dauert ein wenig.

Hinweis: Im Beispiel sind meine Subdomains zu sehen, welcher der Certbot direkt mit “anmelden” soll.

cd /home/
wget https://dl.eff.org/certbot-auto
chmod a+x certbot-auto
sudo ./certbot-auto --debug -v --server https://acme-v01.api.letsencrypt.org/directory certonly -d marcelhuss.de -d filemanager.marcelhuss.de -d ftp.marcelhuss.de -d secure.marcelhuss.de -d blog.marcelhuss.de

Während der Ausführung und Zertifizierung wird man gefragt, wie die Zertifikatsüberprüfung stattfinden soll.

  1. Apache Plugin nutzen (Beta)
  2. Manuelle Pfade angeben
  3. Temporären Webserver erstellen

Ich finde 1 & 3 am bequemsten und einfachsten, da 2 so viel Schreibarbeit ist.

Ausgabe wird sowas sein:

Writing certificate to /etc/letsencrypt/live/marcelhuss.de/cert.pem.
Writing private key to /etc/letsencrypt/live/marcelhuss.de/privkey.pem.
Writing chain to /etc/letsencrypt/live/marcelhuss.de/chain.pem.
Writing full chain to /etc/letsencrypt/live/marcelhuss.de/fullchain.pem.
Writing README to /etc/letsencrypt/live/marcelhuss.de/README.
Writing new config /etc/letsencrypt/renewal/marcelhuss.de.conf.

IMPORTANT NOTES: - Congratulations! Your certificate and chain have been saved at /etc/letsencrypt/live/marcelhuss.de/fullchain.pem. Your cert will expire on 2017-07-22. To obtain a new or tweaked version of this certificate in the future, simply run certbot-auto again. To non-interactively renew *all* of your certificates, run "certbot-auto renew"

Diese Zertifikatspfade nun der Apache2-Config zuweisen. Dazu im Ordner /etc/apache2/sites-enabled/default-ssl.conf als Vorbild nehmen ODER ganz einfach eine neue Datei erstellen: ssl-marcelhussdomain.conf. Dort die Virtual-Hosts eintragen, in diesem Beispiel der Blog (https://blog.marcelhuss.de).

<VirtualHost *:443>
    SSLEngine on
    SSLCertificateFile /etc/letsencrypt/live/marcelhuss.de/cert.pem
    SSLCertificateKeyFile /etc/letsencrypt/live/marcelhuss.de/privkey.pem
    <Directory /media/SamsungSSD/filemanager>
    Options Indexes FollowSymLinks
  AllowOverride All
  Require all granted 
    </Directory>
    DocumentRoot /media/SamsungSSD/filemanager
    ServerName filemanager.marcelhuss.de
</VirtualHost>

Das ganze für die Hauptdomain und die Subdomains anpassen (CertificateFile und KeyFile bleiben gleich), wieder nur Directory /media/SamsungSSD/XYZ  & DocumentRoot & ServerName anpassen.

Danach die SSL.conf Datei in /etc/apache2/sites-enabled/  hochladen und in der apache2.conf wie auch bei den Port80 Virtual-Hosts folgendes einfügen:

IncludeOptional sites-enabled/ssl-marcelhussdomain.conf

Und im Anschluss wieder den Apache neustarten:

sudo /etc/init.d/apache2 restart

Zusatz-Information:

10. WordPress installieren

Um nun auf https://blog.marcelhuss.de – WordPress zu installieren gehen wir zunächst auf https://de.wordpress.org/txt-download/ und laden uns dort das neuste Archiv runter. Dies kopieren wir in /media/SamsungSSD (nicht in den Unterordner “blog”), das Archiv erzeugt beim entpacken einen eigenen Ordner, welchen wir einfach in “blog” umbenennen.

cd /media/SamsungSSD
wget https://de.wordpress.org/wordpress-4.7.4-de_DE.zip
unzip wordpress-4.7.4-de_DE.zip
mv wordpress blog

Nun auf https://blog.marcelhuss.de gehen und mit dem Setup beginnen. Über PHPMyAdmin eine Datenbank anlegen und der WordPress-Installation diese Daten mitteilen.

Danach möchte WordPress, dass man die wp-config.php erzeugt, dort ist es dann noch ratsam am Ende folgende Zeile einzufügen:

define('FS_METHOD','direct');

Dies sorgt dafür, dass man bei der Theme oder Plugin-Installation nicht nach einem FTP-Zugang gefragt wird, sondern es direkt installieren kann.

Zusatz-Info:

Für WordPress muss das Modul rewrite aktiviert werden, damit die Links umgeschrieben werden können.

sudo a2enmod rewrite
sudo /etc/init.d/apache2 restart

Danach kann man in WordPress die schönen PermaLinks verwenden.

11. HTTPS erzwingen

Um eine automatische Weiterleitung von z.B. http://blog.marcelhuss.de auf https://blog.marcelhuss.de zu erreichen muss man folgendes in der VirtualHost-Config der HTTP Verbindung (Port 80) ergänzen.

<IfModule mod_rewrite.c>
    RewriteEngine on
    RewriteCond      %{HTTP_HOST}   ^(blog.marcelhuss.de|www.blog.marcelhuss.de)$	  	  
    RewriteRule ^/(.*)   https://blog.marcelhuss.de/$1 [R,L]
</IfModule>

Insgesamt ergibt sich dann also:

<VirtualHost *:80>
  ServerName blog.marcelhuss.de

  ServerAdmin admin@marcelhuss.de
  DocumentRoot /media/SamsungSSD/blog/
  
  <Directory />
    Options Indexes FollowSymLinks
  AllowOverride All
  Require all granted
  </Directory>
  
  <IfModule mod_rewrite.c>
      RewriteEngine on
      RewriteCond      %{HTTP_HOST}   ^(blog.marcelhuss.de|www.blog.marcelhuss.de)$	  	  
      RewriteRule ^/(.*)   https://blog.marcelhuss.de/$1 [R,L]
  </IfModule>

  ErrorLog ${APACHE_LOG_DIR}/error.log
  CustomLog ${APACHE_LOG_DIR}/access.log combined

</VirtualHost>

 

, , , , , , , ,
Vorheriger Beitrag
Raspberry-Pi per Alexa und Node-RED über AWS IoT steuern
Nächster Beitrag
Dynamic-DNS Client installieren unter Debian

Ähnliche Beiträge

3 Kommentare. Hinterlasse eine Antwort

Hallo
vielen Dank für deine Mühe mit dieser Anleitung.
Ich habe das Problem das meine sata Platten nicht erkannt werden.
Ich habe das Cubie raid mit 2 sata Platten am sata Port angeschlossen.
12V 10Ampere Netzteil daran.
Jedoch mit sudo fdisk -l werden diese nicht- angezeigt.
Was ist dann zu tun? Wäre sehr freundlich wenn ich Hilfe bekommen würde.

Antworten

    Danke schön 🙂

    Also ich hab bei mir eine SSD mit 5V – 2,1A (USB-Ladeadapter) betrieben. Somit kann ich leider nicht viel mehr sagen, da ich es nicht mit dem Cubie RAID betreibe. Jedoch hatte ich bei mir mal das Problem, dass sie nicht angezeigt wurde als ich sie am laufenden Cubietruck angeschlossen habe… Sie muss also vor dem booten angeschlossen sein.

    In dieser Anleitung: https://www.pollin.de/productdownloads/D703014B.PDF steht: Schließen Sie ein 12 V-/ 5 A Netzteil mit einem Hohlstecker 5,5/2,1 mm an das HDD-RAID an. Du hast ja ein Netzteil genommen, was diese Leistung liefert, also fürchte ich kann ich dir nicht sagen wodran es liegt. Sorry 🙁

    Antworten
      Darko Pejkovic
      28. November 2017 6:02

      Vielen Dank trotzdem 😊
      Tolle Sache mit der Hardware wenn es denn eine Anleitung gäbe.
      Lustig ist die Hotline bei Polin mit den geschulten Mitarbeitern machte den Vorschlag die Platine zurück zu schicken. Sie hätten keine Ahnung was zu tun ist.
      Die Platten laufen vor dem Bootvorgang an werden abgeschaltet und dann bootet der cubie von SD .
      Danach sind die platten aus.

      Antworten

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.

Bitte füllen Sie dieses Feld aus
Bitte füllen Sie dieses Feld aus
Bitte gib eine gültige E-Mail-Adresse ein.

Diese Website verwendet Akismet, um Spam zu reduzieren. Erfahre mehr darüber, wie deine Kommentardaten verarbeitet werden.

Menü