Vorbereiten eines ASP.NET 5 (Core) -Projekts und einer DNX-Umgebung für die Teilnahme am Hackathon im Rahmen von hack.summit () 2016 auf Koding.com

Mein Freund und ich haben beschlossen, am Welt-Hackathon teilzunehmen, der im Rahmen von hack.summit () 2016 stattfindet . Auf einer habr gibt es einen Artikel zu dieser Veranstaltung.

Die Regeln auf der Website besagten, dass sich das endgültige Projekt auf der virtuellen Coding-Maschine befinden müsste und alles in Ordnung wäre, aber die Coding-Plattform verwendet Ubuntu als Betriebssystem, und wir schreiben auf Microsoft-Technologien. Es gab eine Frage der Ablehnung der Teilnahme oder des Tests von asp.net 5 auf coreclr. Wir entschieden uns für die zweite Variante und machten uns mit den Neuerungen dieser Version vertraut.

Die Microsoft-Website enthält allgemein verständliche Anweisungen zur Installation von dnx für Linux (zum Glück nur für Ubuntu 14.04), obwohl ich mit einigen Problemen zu kämpfen hatte, wie sie sagen: "Der erste Pfannkuchen ist klumpig" zum Arbeitsergebnis.



Der erste Schritt ist die Installation von curl:

sudo apt-get install unzip curl

Der zweite Schritt ist die Installation des .NET-Versionsmanagers:

curl -sSL https://raw.githubusercontent.com/aspnet/Home/dev/dnvminstall.sh | DNX_BRANCH=dev sh && source ~/.dnx/dnvm/dnvm.sh

Der dritte Schritt besteht darin, die erforderlichen Pakete für DNX zu installieren:

sudo apt-get install libunwind8 gettext libssl-dev libcurl4-openssl-dev zlib1g libicu-dev uuid-dev

Der vierte Schritt ist die Installation von DNX für .NET Core:

dnvm upgrade -r coreclr

Mono wird später im Microsoft-Handbuch installiert, wir haben jedoch coreclr verwendet. Überspringen Sie diesen Schritt.

Der fünfte Schritt ist die Installation von libuv (notwendig um Kestrel auszuführen):

sudo apt-get install make automake libtool curl
curl -sSL https://github.com/libuv/libuv/archive/v1.8.0.tar.gz | sudo tar zxfv - -C /usr/local/src
cd /usr/local/src/libuv-1.8.0
sudo sh autogen.sh
sudo ./configure
sudo make
sudo make install
sudo rm -rf /usr/local/src/libuv-1.8.0 && cd ~/
sudo ldconfig

Wenn alles ohne Fehler gelaufen ist, sollten wir die einzige installierte Version von .Net sehen:

dnvm list


Hier möchte ich eine Bemerkung machen, wenn ich in Visual Studio arbeite, flog die erforderliche Version von .Net ständig auf mich zu und wahrscheinlich stürzte der Build aus diesem Grund ab, wenn eine andere Version in den Projekteigenschaften zugewiesen wurde. Um dies zu beheben, können Sie die folgenden Befehle ausführen:

dnvm alias default -a x64 -r coreclr 1.0.0-rc1-update1
dnvm use default -p



Der sechste Schritt besteht darin, die Veröffentlichung auf dem Zielcomputer verfügbar zu machen. Sie können dazu einfach Dateien per Drag'n'Drop auf die Coding-Seite ziehen, aber wir haben uns dafür entschieden, dies per FTP zu tun. Übrigens, um die endgültige Version des Projekts über den Hackathon zu senden, musste ich die erste Option verwenden, da der FTP-Client aufgrund der Tradition, im letzten Moment alles hochzuladen, keine Verbindung zum Server herstellen konnte. Um die Sache nicht zu komplizieren, bietet Coding an, seinen Paketmanager zu verwenden und ftp in zwei Zeilen zu öffnen:

kpm install ftp

In der zweiten Zeile wird das Kennwort des Benutzers der virtuellen Maschine geändert. Die Server-IP-Adresse kann in den Eigenschaften des Geräts auf der Seite Codierung angezeigt werden.

Im Ordner des Benutzers befindet sich ein Webordner mit Beispieldateien. Löschen Sie diese und erstellen Sie an ihrer Stelle den ASP.Net-Ordner, in dem sich das Projekt befindet.

Die nächste Schwierigkeit war, dass Entity Framework 7 zum Zeitpunkt der Teilnahme am Hackathon keine Implementierung des Pakets "EntityFramework.MicrosoftSqlServer" für Linux enthielt, sodass Alternativen zu MS SQL Server verwendet werden mussten. Help EF schlägt vor , SQLite für diesen Zweck zu verwenden. Im

siebten Schritt installieren Sie SQLite:

sudo apt-get install libsqlite3-dev

Der achte Schritt besteht darin, das Projekt in Visual Studio vorzubereiten.

Erstellen Sie eine ASP.NET-Webanwendung aus der Vorlage, wählen Sie die Vorlage ASP.NET 5 -> Webanwendung aus und authentifizieren Sie einzelne Benutzerkonten.
Lassen Sie uns die Datei project.json bearbeiten, indem Sie SQLite hinzufügen und die zusätzliche Datei löschen und das dnx451-Framework entfernen:

...
  "dependencies": {
    "EntityFramework.Sqlite": "7.0.0-rc1-final",
      ...
  },
...
  "frameworks": {   
    "dnxcore50": { }
  }
...

Löschen Sie in der Datei "Startup.cs" in der ConfigureServices- Methode die Informationen zu SQL Server und fügen Sie die Informationen hinzu, die für SQLite erforderlich sind:

using Microsoft.Extensions.PlatformAbstractions
...
 var path = PlatformServices.Default.Application.ApplicationBasePath;
            services.AddEntityFramework()
                .AddSqlite()
                .AddDbContext(options => options.UseSqlite("Filename=" + Path.Combine(path, "site.db")));
...

Wenn Sie in project.json unnötige Dinge wie IISPlatformHandler und BrowserLink.Loader entfernt haben, müssen Sie auch die Configure- Methode vom Aufrufen unnötiger Middleware befreien .

Laden Sie im neunten Schritt die vorbereiteten Projektdateien aus dem Ordner src in den Ordner auf dem Coding-Server hoch. Wir behalten die Ordner node_modules und wwwroot \ lib bei, während wir diese Abhängigkeiten mit npm und bower auf den Zielserver laden.

Der zehnte Schritt . Node.js ist bereits auf der virtuellen Maschine vorhanden, sodass Sie bower sofort installieren und einige Probleme beim Starten von Paketen beheben können. Im Site-Ordner werden die Befehle ausgeführt, die zum Wiederherstellen von Paketen erforderlich sind:

sudo ln -s /usr/bin/nodejs /usr/bin/node
sudo npm install bower -g
npm install 
bower install

Elfter Schritt . Die Datenbank befindet sich im Site-Verzeichnis und heißt gemäß der Konfiguration in Startup.cs site.db. Die Migrationen dafür wurden automatisch von VS generiert. Sie können sie verwenden oder erneut ausführen. Löschen Sie aus Gründen der Testreinheit den Ordner " Migrations " und fügen Sie ihn zusammen mit der Erstellung der Datenbankdatei erneut hinzu.

Ich hatte den ersten Versuch, dnu zu starten, ein Fehler trat auf und dnx weigerte sich, überhaupt zu funktionieren, so dass ich im dritten Schritt beim Herunterladen und Installieren von Paketen nicht "Y" drückte.
failed to locate libcoreclr with error libunwind-x86_64.so.8: cannot open shared object file: No such file or directory


dnu restore
dnu build --quiet
dnx ef migrations add NewOne
dnx ef database update

Der Kestrel-Server, auf dem die asp.net-Website ausgeführt wird, wird standardmäßig auf dem 5000. Port ausgeführt. Maykrasoft empfiehlt, nicht auf das Netzwerk zuzugreifen, sondern einen Proxy zu verwenden. Apache ist bereits auf der virtuellen Maschine installiert, daher wird er für diesen Zweck verwendet.

Im zwölften Schritt konfigurieren Sie Apache:

cd /etc/apache2/sites-enabled
sudo nano 000-default.conf

Darin lassen wir nur das, was wir brauchen.


  S
  # Rewrite scheme to ws otherwise apache can't do a websocket proxy
  RewriteEngine on
  RewriteCond %{HTTP:UPGRADE} ^WebSocket$ [NC]
  RewriteCond %{HTTP:CONNECTION} ^Upgrade$ [NC]
  RewriteRule .* ws://localhost:3000%{REQUEST_URI} [P]
  # Proxy
  ProxyRequests On
  ProxyPass / http://localhost:5000/
  ProxyPassReverse / http://localhost:5000/
  ErrorLog ${APACHE_LOG_DIR}/error.log
  LogLevel warn
  CustomLog ${APACHE_LOG_DIR}/access.log combined

Wir starten Apache neu und wenn alles in Ordnung ist, wird beim Versuch, die Site im Browser zu öffnen, "Service nicht verfügbar" angezeigt:

sudo /etc/init.d/apache2 restart

Der dreizehnte und erfolgreichste Schritt ist der Start der Website. Wir führen dnx web im Site-Verzeichnis aus und sehen, wie Kestrel in der Konsole gestartet wurde:
dnx web

Ich habe auch hier eine Fehlermeldung erhalten: Dies bedeutet, dass ich im fünften Schritt alle Befehle auf einmal in die Konsole eingefügt habe und etwas nicht funktioniert hat oder die Taste "Y" nicht gedrückt wurde.

System.DllNotFoundException: Unable to load DLL 'libuv': The specified module could not be found.



Als alles begann, können Sie die Site öffnen und sehen, wie Anforderungen in der Konsole ausgeführt werden.



Die Seite öffnet sich, Sie können sich registrieren - es bedeutet, dass die Datenbank funktioniert.

Sie können mit der Arbeit am Projekt beginnen.

Jetzt auch beliebt: