Einführung
MEAN ist ein Softwareanwendungsstack, der sich aus folgenden Komponenten zusammensetzt:
-
MongoDB, eine NoSQL-Datenbank mit Unterstützung für die serverseitige JavaScript-Ausführung
-
ExpressJS, ein Webanwendungsframework von Node.js.
-
AngularJS, ein Webanwendungsframework, das für die Entwicklung dynamischer Anwendungen mit nur einer Seite geeignet ist
-
NodeJS, ein asynchrones ereignisgesteuertes Framework, das zum Erstellen skalierbarer Netzwerkanwendungen geeignet ist
Der Begriff MEAN wurde zuerst von Valeri Karpov geprägt, und der Begriff wurde aus dem Anfangsbuchstaben jeder Komponente abgeleitet. Valeri definierte MEAN inthis blog post, in dem er einige Gründe für die Entscheidung gab, JavaScript-Anwendungen mit Hilfe des MEAN-Stacks zu entwickeln:
Durch die durchgängige Codierung mit Javascript sind wir in der Lage, sowohl in der Software selbst als auch in der Produktivität unserer Entwickler Leistungssteigerungen zu erzielen. Mit MongoDB können wir unsere Dokumente in einem JSON-ähnlichen Format speichern, JSON-Abfragen auf unseren ExpressJS- und NodeJS-basierten Servern schreiben und JSON-Dokumente nahtlos an unser AngularJS-Frontend übergeben. Das Debuggen und die Datenbankverwaltung werden viel einfacher, wenn die in Ihrer Datenbank gespeicherten Objekte im Wesentlichen mit den Objekten identisch sind, die Ihr Client-Javascript sieht. Noch besser ist, dass jemand, der auf der Clientseite arbeitet, den serverseitigen Code und die Datenbankabfragen leicht verstehen kann. Durch die Verwendung der gleichen Syntax und Objekte auf dem gesamten Weg müssen Sie nicht mehr mehrere Best Practices für Sprachen berücksichtigen, und die Zugangsbeschränkungen für das Verständnis Ihrer Codebasis werden verringert.
Derzeit gibt es zwei parallele Implementierungen des MEAN-Stacks:MEAN.io undMEAN.JS. Jedes hat eine etwas andere Installationsmethode. MEAN.JS is a purely community-driven implementation, while MEAN.io is sponsored by a company called Linnovate. Beide enthalten dieselben Komponenten, aber MEAN.io bietet ein zusätzliches Befehlszeilentool,mean
, sowie kommerziellen Support.
In diesem Handbuch installieren wir einen MEAN-Stack mit MEAN.JS auf einem CentOS 7-Server. Bei dieser Methode wird zuerst MongoDB, dann NodeJS installiert und anschließend die MEAN.JS-Dateien von GitHub geklont.
Voraussetzungen
Zu Beginn benötigen Sie Folgendes:
-
Ein CentOS 7-Server mit mindestens 4 GB RAM. Einige der Komponenten des MEAN-Stacks, wie
npm
, benötigen viel Speicher. -
Ein Sudo-Benutzer ohne Rootberechtigung, der mitthis CentOS 7 initial server setup guide konfiguriert wurde.
[[Schritt-1 - Installieren von Abhängigkeiten]] == Schritt 1 - Installieren von Abhängigkeiten
Da wir Anwendungen aus dem Quellcode kompilieren, ein Git-Repository klonen und Ruby-Gems installieren, müssen wir zuerst einige Abhängigkeiten installieren. libpng-devel
undfontconfig
werden von einem der MEAN.JS-Module (pngquant) benötigt.
sudo yum install gcc-c++ make git fontconfig bzip2 libpng-devel ruby ruby-devel
Einige der Node.js-Module, die wir installieren, benötigen Sass, eine CSS-Erweiterungssprache. Installieren Sie es mitgem
, Rubys Paketmanager.
sudo gem install sass
Nachdem die Abhängigkeiten installiert sind, können wir die erste Komponente des Stacks installieren: MongoDB.
[[Schritt-2 - Installation von Mongodb]] == Schritt 2 - Installation von MongoDB
MongoDB befindet sich nicht im offiziellen CentOS-Repository. Um es zu installieren, müssen Sie das offizielle MongoDB-Repository aktivieren. Auf diese Weise erhalten Sie Zugriff auf die neuesten Pakete und können diese von dort aus installieren.
Für dieses Tutorial installieren wir die Community-Edition, die kostenlos heruntergeladen werden kann. Es gibt auch eine Enterprise-Edition, für die jedoch eine Lizenz erforderlich ist. Daher werden wir hier nicht darauf eingehen.
Zum Zeitpunkt der Veröffentlichung ist MongoDB 3.2 die neueste stabile Edition, die zum Herunterladen und Installieren verfügbar ist. Um das Repository zu aktivieren, erstellen Sie eine Datei unter/etc/yum.repos.d
, dem CentOS-Repository-Verzeichnis. Für MongoDB 3.2 nennen wir diese Dateimongodb.org-3.2.repo
.
Erstellen und öffnen Sie/etc/yum.repos.d/mongodb.org-3.2.repo
mitvi
oder Ihrem bevorzugten Texteditor.
sudo vi /etc/yum.repos.d/mongodb.org-3.2.repo
Um den Paketmanager auf das offizielle MongoDB-Repository zu verweisen und es zu aktivieren, kopieren Sie Folgendes und fügen Sie es in die Datei ein. Durch Festlegen vonenabled=1
wird das Repository aktiviert, und durch Festlegen vongpgcheck=1
wird die GPG-Signaturprüfung (GNU Privacy Guard) für alle aus dem Repository installierten Pakete aktiviert.
/etc/yum.repos.d/mongodb.org-3.2.repo
[mongodb-org-3.2]
name=MongoDB Repository
baseurl=https://repo.mongodb.org/yum/redhat/$releasever/mongodb-org/3.2/x86_64/
gpgcheck=1
enabled=1
gpgkey=https://www.mongodb.org/static/pgp/server-3.2.asc
Speichern und schließen Sie die Datei und installieren Sie das Paketmongodb-org
, um MongoDB und die zugehörigen Tools zu installieren. Wenn Sie aufgefordert werden, den GPG-Schlüssel zu importieren, geben Siey
für yes ein:
sudo yum install mongodb-org
Starten Sie nach Abschluss der Installation den MongoDB-Daemon.
sudo systemctl start mongod
mongod
, der MongoDB-Daemon, sollte jetzt ausgeführt werden, und Sie können dies mit dem folgenden Befehl überprüfen:
sudo systemctl status mongod
Wenn es ausgeführt wird, sollte die Ausgabe folgendermaßen aussehen:
Outputmongod.service - SYSV: Mongo is a scalable, document-oriented database.
Loaded: loaded (/etc/rc.d/init.d/mongod)
Active: active (running) since Tue 2016-09-06 12:42:16 UTC; 9s ago
Docs: man:systemd-sysv-generator(8)
Process: 9374 ExecStart=/etc/rc.d/init.d/mongod start (code=exited, status=0/SUCCESS)
CGroup: /system.slice/mongod.service
└─9385 /usr/bin/mongod -f /etc/mongod.conf
Sep 06 12:42:16 centos-mean-js systemd[1]: Starting SYSV: Mongo is a scalable, document-oriented database....
Sep 06 12:42:16 centos-mean-js runuser[9381]: pam_unix(runuser:session): session opened for user mongod by (uid=0)
Sep 06 12:42:16 centos-mean-js mongod[9374]: Starting mongod: [ OK ]
Sep 06 12:42:16 centos-mean-js systemd[1]: Started SYSV: Mongo is a scalable, document-oriented database..
Der nächste Teil des Stacks, den wir installieren müssen, ist Node.js.
[[Schritt-3 - Installieren von Node-Js]] == Schritt 3 - Installieren von Node.js.
Eine einfache Möglichkeit, Node.js zu installieren, ist die Verwendung der Binärdatei aus dem Node.js-Repository vonNodeSource. Fügen Sie zunächst das Repository des Stable-Zweigs hinzu. Sie können den Inhalt des Skripts lesen, bevor Sie es mit dem folgenden Befehl ausführen, indem Sie die URL in Ihrem Browser aufrufen.
curl -sL https://rpm.nodesource.com/setup_4.x | sudo -E bash -
Installieren Sie als Nächstes Node.js undnpm
, einen Paketmanager für Node.js.
sudo yum install -y nodejs
Stellen Sie sicher, dass Node.js undnpm
installiert sind.
npm version
Die Ausgabe sollte sein:
Output{ npm: '2.15.9',
ares: '1.10.1-DEV',
http_parser: '2.7.0',
icu: '56.1',
modules: '46',
node: '4.5.0',
openssl: '1.0.2h',
uv: '1.9.1',
v8: '4.5.103.37',
zlib: '1.2.8' }
Nachdemnpm
installiert ist, können wir die restlichen Komponenten des MEAN-Stacks installieren.
[[Schritt 4 - Installation von Laube und Schluck]] == Schritt 4 - Installation von Laube und Schluck
Die Komponenten, die wir in diesem Schritt installieren werden, sind Bower, ein Paketmanager, mit dem Front-End-Anwendungen verwaltet werden, und Gulp, mit dem allgemeine Aufgaben automatisiert werden.
Sowohl Bower als auch Gulp müssen global installiert werden. Dies erreichen wir, indem wir die Optiong annpm
übergeben. Wenn Sie beide Anwendungen global installieren, sind sie systemweit verfügbar und nicht nur im lokalen Projektverzeichnis.
Installieren Sie zuerst Bower:
sudo npm install -g bower
Dann installiere Gulp:
sudo npm install -g gulp
Jetzt haben wir endlich alle erforderlichen Pakete installiert. Wir können mit der Installation der eigentlichen MEAN.JS-Kesselplatte fortfahren, mit der die Anwendungen erstellt wurden.
[[Schritt-5 -—- Installieren der mittleren Kesselplatte]] == Schritt 5 - Installieren der MEAN-Kesselplatte
Zuerst klonen wir das offizielle MEAN.JS GitHub-Repository.
git clone https://github.com/meanjs/mean.git meanjs
Dadurch wird das MEAN.JS-Boilerplate in ein Verzeichnis namensmeanjs
in Ihrem Home-Verzeichnis geklont. Um alle Pakete zu installieren, auf die das Projekt verweist, müssen Sie sich in diesem Verzeichnis befinden. Wechseln Sie also in dieses Verzeichnis.
cd ~/meanjs
Installieren Sie dann die erforderlichen Pakete als Benutzer ohne Rootberechtigung.
npm install
Die Installation dauert einige Minuten. Nach Abschluss haben Sie alles, was Sie zum Entwickeln einer MEAN-Anwendung benötigen. Im letzten Schritt testen wir den Stack, um sicherzustellen, dass er funktioniert.
[[Schritt-6 -—- Ausführen Ihrer Beispiel-Mittelwert-Anwendung]] == Schritt 6 - Ausführen Ihrer Beispiel-MEAN-Anwendung
Führen Sie die Beispielanwendung aus, um sicherzustellen, dass das System ordnungsgemäß funktioniert. Eine Methode besteht darin,npm start
zu verwenden, und die andere Methode besteht darin,gulp
zu verwenden. Mit beiden Befehlen können Sie Ihre Anwendung im Entwicklungsmodus testen. Hier verwenden wirnpm
.
npm start
[.Hinweis]##
Note: Der erste Lauf eines dieser Befehle kann mit einer Ausgabe ähnlich der folgenden fehlschlagen:
Error output[12:56:49] 'lint' errored after 702 ms
[12:56:49] Error in plugin 'run-sequence'
Message:
An error occured in task 'sass'.
Wenn Sie diesen Fehler erhalten, ist das Update einfach. Dabei wird das Verzeichnisnode_modules
gelöscht, der Cache geleert und die Pakete neu installiert.
rm -rf node_modules
npm cache clean
npm install
Starten Sie dann die Beispiel-App mitnpm start
odergulp
wie zuvor neu.
Sie können jetzt auf Ihre MEAN-Anwendung zugreifen, indem Siehttp://your_server_ip:3000
in Ihrem bevorzugten Browser aufrufen. Das sollte eine Seite mit dem MEAN.JS-Logo einschließlich des TextesCongrats! You’ve configured and run the sample application. rendern. Dies bedeutet, dass Sie einen voll funktionsfähigen MEAN-Stapel auf Ihrem Server haben.
Fazit
Nachdem Sie über die erforderlichen Komponenten und die MEAN.JS-Boilerplate verfügen, können Sie mit dem Erstellen, Testen und Bereitstellen Ihrer eigenen Apps beginnen. Indocumentation on MEAN.JS websitefinden Sie spezifische Hilfe zur Arbeit mit MEAN.JS.