openITCOCKPIT Entwicklungsumgebung erstellen¶
Virtuelle Maschine erstellen¶
Es wird empfohlen, eine neue virtuelle Maschine (bspw. mit VirtualBox) zu erstellen, welche die folgenden Mindestvoraussetzungen erfüllt:
OS | Festplatte | RAM | CPU Kerne |
---|---|---|---|
Ubuntu Focal 20.04 (64 Bit) | 20 GB | 2048 MB | 2 |
Damit Sie die Maschine über das Netzwerk erreichen können, wählen Sie unter den Netzwerkeinstellungen der virtuellen
Maschine Netzwerkbrücke
(Englisch: Bridget Network
).
Falls Sie keine Netzwerkbrücke nutzen wollen, empfehlen wir die einrichtung zweier Netzwerkkarten für die virtuelle
Maschine. Eine Netzwerkkarte im NAT
Modus, damit der Zugriff auf das Internet gewährleistet ist und eine weitere im
Host-Only Network
um den Zugriff der VM durch Ihren Lokalen Computer zu ermöglichen.
Um mehr Informationen zum Thema Netzwerk mit VirtualBox zu erhalten, klicken Sie auf den folgenden Link https://www.virtualbox.org/manual/ch06.html
Falls gewünscht können Sie auch "Ubuntu Desktop" nutzen, um eine Grafische Benutzeroberfläche zu erhalten.
Betriebssystem vorbereiten¶
Stellen Sie sicher, dass auf ihrem System die aktuellsten Updates installiert sind.
sudo add-apt-repository universe
sudo apt-get update
sudo apt-get dist-upgrade
Installation von benötigten Paketen für die Entwicklung¶
sudo apt-get dist-upgrade vim git tmux screen mc htop curl wget ca-certificates sysstat nfs-kernel-server samba-common samba gnupg2 apt-transport-https
"root" Benutzer aktivieren¶
Standardmäßig ist der root
Benutzer unter Ubuntu deaktiviert
Nutzen Sie sudo um zum root Benutzer zu wechseln.
sudo su
Setzen Sie ein neues Passwort für den root Benutzer mit dem Kommando passwd
passwd
Aktivieren des root Benutzers zum Einloggen über SSH (optional)¶
Öffnen Sie die Datei /etc/ssh/sshd_config
und ändern Sie die folgende Zeile
PermitRootLogin yes
Aktivieren Sie die Änderung:
systemctl restart sshd
Nun können Sie sich als root
Benutzer auf dem System über SSH anmelden.
openITCOCKPIT installieren¶
Da sie eine Entwicklungsumgebung von openITCOCKPIT installieren möchten, gehen wir davon aus, dass Sie mit dem openITCOCKPIT Setup Prozess vertraut sind. Für weitere Informationen zum Setup Prozess klicken Sie bitte auf folgenden Link: https://openitcockpit.io/download_server/
curl https://packages.openitcockpit.io/repokey.txt | sudo apt-key add -
echo "deb https://packages.openitcockpit.io/openitcockpit/$(lsb_release -sc)/stable $(lsb_release -sc) main" | sudo tee /etc/apt/sources.list.d/openitcockpit.list
sudo apt-get update
sudo apt-get install openitcockpit
Setup openITCOCKPIT¶
Führen Sie den Setup Wizard von openITCOCKPIT aus um einen Benutzer für die Weboberfläche zu erstellen. Eine real existierende E-Mail-Adresse wird nicht vorausgesetzt.
sudo /opt/openitc/frontend/SETUP.sh
Setup phpMyAdmin (optional)¶
phpMyAdmin ist ein Webbasiertes MySQL Datenbank Management Tool. Nach der Installation ist es unter
https://xxx.xxx.xxx.xxx/phpmyadmin
erreichbar. Die MySQL Zugangsdaten finden Sie in der Datei
/opt/openitc/etc/mysql/mysql.cnf
.
sudo apt-get install phpmyadmin
mysql.cnf Beispiel:
dziegler@oitc-dev:~$ sudo cat /opt/openitc/etc/mysql/mysql.cnf
; Automatically generated for openITCOCKPIT scripts. DO NOT TOUCH!
[client]
database = openitcockpit
host = localhost
user = openitcockpit
password = zw8upknsKte2pGvn
port = 3306
dziegler@oitc-dev:~$
Installation von PHP-Composer¶
Composer ist eine Paketverwaltung für PHP Bibliotheken und voraussetzung für eine openITCOCKPIT Entwicklungsumgebung.
curl -o composer-setup.php https://getcomposer.org/installer
php composer-setup.php
sudo cp composer.phar /usr/local/bin/composer
Klonen des Quellcodes von GitHub¶
openITCOCKPIT nutzt git als Versionskontrollsystem. Das Repository ist öffentlich auf GitHub gehostet.
Forken des openITCOCKPIT Repositories¶
Obwohl dies nicht unbedingt vonnöten ist, wird dringend empfohlen, einen Persönlichen Fork des Offiziellen openITCOCKPIT Repositories zu erstellen.
Wenn Sie dem openITCOCKPIT Projekt einen Beitrag leisten möchten, wird dies vorausgesetzt. Sollten Sie nur die absicht haben, sich im Quellcode umzuschauen oder haben Sie keinen GitHub Account, so können Sie das Offizielle openITCOCKPIT Repository auch einfach klonen.
Klonen Sie ihr Persönliches Repository (empfohlen)¶
Löschen Sie die Dateien, welche durch apt installiert wurden
sudo su
rm -rf /opt/openitc/frontend
Klonen Sie das Repository (Ersetzen Sie YOUR_ACCOUNT_NAME
mit Ihrem GitHub Benutzernamen)
cd /opt/openitc/
git clone -b development https://github.com/YOUR_ACCOUNT_NAME/openITCOCKPIT frontend
Klonen des Offiziellen openITCOCKPIT Repository (nur empfohlen, wenn sie KEINEN GitHub Account haben)¶
Löschen Sie die Dateien, welche durch apt installiert wurden
sudo su
rm -rf /opt/openitc/frontend
cd /opt/openitc/
git clone -b development https://github.com/it-novum/openITCOCKPIT frontend
Abhängigkeiten Installieren¶
Stellen Sie sicher, dass Sie alle Kommandos als root
Benutzer ausführen (sudo su
).
Installation der PHP Abhängigkeiten¶
cd /opt/openitc/frontend
composer install
rm -f /opt/openitc/frontend/config/app_local.php
Installation der JavaScript Abhängigkeiten¶
cd /opt/openitc/frontend
npm install
Aktualisierung der Datenbank und Reparieren der Dateiberechtigungen¶
openitcockpit-update --cc --rights
Aktivierung des openITCOCKPIT Entwicklungsmodus (permanent)¶
Als Entwickler möchten Sie die Entwicklungsfeatures von openITCOCKPIT aktivieren. Dies ermöglicht beispielsweise ausgabe
der Fehlermeldungen im Browser, aktivierung globaler PHP Methoden wie dd($var)
und debug($var)
sowie das Laden von
unkomprimiertem CSS und JavaScript
Stellen Sie sicher, dass Sie alle Kommandos als root
Benutzer ausführen (sudo su
).
Danger
Seien Sie sich im Klaren darüber, dass das Aktivieren des debug Modus zu Datenlecks und dem verlust von sensitiven Informationen führen kann.
echo "OITC_DEBUG=1" >> /etc/environment
export OITC_DEBUG=1
sed -i 's/OITC_DEBUG 0/OITC_DEBUG 1/g' /etc/nginx/openitc/master.conf
systemctl restart nginx
Start Hacking¶
Dateizugriff über ein Remote System (IDE) (optional)¶
Ihre Entwicklungsumgebung (bspw. PHPStorm, Visual Studio Code etc.) wird in der Regel nicht auf demselben System laufen, auf dem auch openITCOCKPIT läuft.
Es gibt drei gängige wege, um Zugriff auf den Quellcode über ihre IDE zu erlangen: NFS, SMB und SSH
NFS (Linux und macOS clients)¶
Öffnen Sie die Datei /etc/exports
auf ihrem openITCOCKPIT Server und erstellen Sie einen neuen Eintrag wie folgt: (Sie
können den Zugriff für eine einzelne IP-Adresse oder aber ein ganzes Subnetz freigeben. Stellen Sie sicher, die richtige
IP-Adresse für ihr Netzwerk einzustellen)
/opt/openitc/frontend/ 192.168.56.0/24(rw,no_subtree_check,no_root_squash,all_squash,anonuid=33,anongid=33)
sudo exportfs -a
NFS Freigabe auf einem Linux client mounten¶
sudo apt-get install nfs-common
mkdir ~/openitcockpit-frontend
mount xxx.xxx.xxx.xxx:/opt/openitc/frontend ~/openitcockpit-frontend
Stellen Sie sicher, dass Sie xxx.xxx.xxx.xxx
mit der IP-Adresse ihres openITCOCKPIT Servers ersetzen.
Sie können nun den Ordner ~/openitcockpit-frontend
mit ihrer IDE öffnen.
Unmount NFS Freigabe (Linux client)¶
Sollten Sie die Freigabe nicht mehr auf Ihrem System benötigen, können Sie sie mit folgendem Befehl entfernen:
umount ~/openitcockpit-frontend
NFS Freigabe auf einem macOS client mounten¶
mkdir ~/openitcockpit-frontend
sudo mount_nfs -o resvport xxx.xxx.xxx.xxx:/opt/openitc/frontend ~/openitcockpit-frontend
xxx.xxx.xxx.xxx
mit der IP-Adresse ihres openITCOCKPIT Servers ersetzen
Sie können nun den Ordner ~/openitcockpit-frontend
mit ihrer IDE öffnen.
Unmount NFS Freigabe (macOS client)¶
Sollten Sie die Freigabe nicht mehr auf Ihrem System benötigen, können Sie sie mit folgendem Befehl entfernen:
sudo umount ~/openitcockpit-frontend
SMB (Windows, Linux und macOS clients)¶
Als Erstes müssen Sie den SMB daemon auf ihrem openITCOCKPIT Server einrichten.
sudo cp /etc/samba/smb.conf /etc/samba/smb.conf.backup
Ersetzen Sie Ihre aktuelle smb Konfiguration, welche unter /etc/samba/smb.conf
zu finden ist mit der Folgenden:
[global]
workgroup = WORKGROUP
server string = %h server (Samba, Ubuntu)
#### Debugging/Accounting ####
log file = /var/log/samba/log.%m
max log size = 1000
logging = file
panic action = /usr/share/samba/panic-action %d
####### Authentication #######
server role = standalone server
obey pam restrictions = yes
unix password sync = yes
passwd program = /usr/bin/passwd %u
passwd chat = *Enter\snew\s*\spassword:* %n\n *Retype\snew\s*\spassword:* %n\n *password\supdated\ssuccessfully* .
pam password change = yes
security = user
guest only = yes
map to guest = bad user
guest account = nobody
############ Misc ############
usershare allow guests = yes
#======================= Share Definitions =======================
[frontend]
path = /opt/openitc/frontend
available = yes
browseable = yes
guest ok = no
writeable = yes
create mask = 0644
directory mask = 0755
force user = www-data
valid users = www-data
Setzen Sie ein Passwort für den Benutzer www-data
um Zugriff auf die Dateien via samba zu erhalten.
smbpasswd -a www-data
Aktivieren Sie die Änderungen:
sudo systemctl restart smbd
SMB Freigabe auf einem Windows client mounten¶
- Öffnen Sie den Windows Explorer und klicken Sie auf "Netzlaufwerk Verbinden".
- Fügen Sie ihre SMB Freigabe als Netzlaufwerk hinzu.
Stellen Sie sicher, dass Sie die Option "Anmelden mit anderen Anmeldeinformationen herstellen" ausgewählt haben.
- Nutzen Sie den
www-data
Benutzer und das Passwort, welches Sie eben gesetzt hatten.
- Nun können Sie die Dateien durchsuchen.
Öffnen Sie Z:\
mit ihrer IDE.
Hilfe: https://support.microsoft.com/en-us/help/4026635/windows-10-map-a-network-drive
SMB Freigabe auf einem macOS client mounten¶
- Öffnen Sie den "Finder" und drücken Sie
CMD+k
.
- Nutzen Sie den
www-data
Benutzer und das Passwort, welches Sie eben gesetzt hatten.
- Nun können Sie die Dateien durchsuchen.
Öffnen Sie /Volumes/frontend
mit ihrer IDE.
SSH (Plattformunabhängig - abhängig von der IDE)¶
Viele IDEs unterstützen den Zugriff auf entfernte Dateien via FTP, SFTP oder SSH. Der Setup Prozess ist abhängig von ihrer IDE. Bitte suchen Sie im Web nach der Einrichtung via SSH für ihre IDE.
Einrichtung für PHPStorm: https://www.jetbrains.com/help/phpstorm/create-new-project-add-remote-server.html
Einrichtung für Visual Studio Code: https://code.visualstudio.com/docs/remote/ssh