Ist es möglich, eine einfache HTML- und Javascript-Dateistruktur auf heroku hochzuladen?

83

Ich versuche, ein Open-Source-Projekt von mir für Heroku bereitzustellen. Es ist notwendigerweise sehr einfach, nur mit statischem HTML und Javascript. Aber unterstützen sie keine statischen Sites? Ich würde es lieber nicht zu einem Sinatra-Projekt machen, wenn ich nicht vorhabe, jemals etwas anderes als HTML und Javascript zu verwenden.

~/sites/d4-site $ heroku create --stack cedar
Creating quiet-ice-4769... done, stack is cedar
http://quiet-ice-4769.herokuapp.com/ | [email protected]:quiet-ice-4769.git
Git remote heroku added


~/sites/d4-site $ git remote -v
heroku  git@heroku.com:quiet-ice-4769.git (fetch)
heroku  git@heroku.com:quiet-ice-4769.git (push)


~/sites/d4-site $ git push heroku master
Counting objects: 53, done.
Delta compression using up to 2 threads.
Compressing objects: 100% (49/49), done.
Writing objects: 100% (53/53), 206.08 KiB, done.
Total 53 (delta 4), reused 0 (delta 0)

-----> Heroku receiving push
-----> Removing .DS_Store files
 !     Heroku push rejected, no Cedar-supported app detected
Jeremy Smith
quelle

Antworten:

13

Sie können Rack verwenden, um dies zu tun:

https://devcenter.heroku.com/articles/static-sites-on-heroku

oder Sie können etwas wie Octopress / Jekyll verwenden, das Sinatra verwendet.

Sie benötigen jedoch einen Mindeststapel, um statischen HTML-Inhalt bereitzustellen

Tiago Peczenyj
quelle
16
Das OP hat nicht nach einer Ruby-Lösung gefragt.
Adam Arold
22
Lies meinen Satz noch einmal.
Adam Arold
213

Eine einfache Möglichkeit besteht darin, die HTML-App als PHP-App zu tarnen. Heroku identifiziert PHP-Apps korrekt.

  1. Benennen Sie Ihre index.html-Datei in home.html um.
  2. Erstellen Sie eine index.php-Datei und fügen Sie Ihre HTML-Eintragsdatei hinzu. Wenn Ihre HTML-Eintragsdatei wie empfohlen home.html heißt, sollte Ihre index.php folgendermaßen aussehen:

    <?php include_once("home.html"); ?>

  3. Geben Sie in Ihrer Befehlszeile auf dem Computer, von dem aus Sie pushen, Folgendes ein:

    git add .
    git commit -m 'your commit message'
    git push heroku master

Heroku sollte Ihre App jetzt als PHP-App richtig erkennen:

-----> PHP app detected
-----> Bundling Apache version 2.2.22
-----> Bundling PHP version 5.3.10
-----> Discovering process types
       Procfile declares types -> (none)
       Default types for PHP   -> web

-----> Compiled slug size: 9.9MB
-----> Launching... done, v3
...

Mad Danke an Lemiffe für seinen Blog-Beitrag: http://www.lemiffe.com/how-to-deploy-a-static-page-to-heroku-the-easy-way/

pkanane
quelle
28
Dies ist viel einfacher und sollte als die richtige Antwort akzeptiert werden
Glenn Bech
3
Hinweis: Ich musste zuerst composer.json hinzufügen, damit dies funktioniert. devcenter.heroku.com/articles/…
happygilmore
Wirklich sehr, sehr gut. Ich habe viel Zeit mit Node.js gespart, vielen Dank!
Davidkelleher
Möglicherweise müssen Sie a git initausführen, um die git-Befehle zu erhalten, und a heroku create, um den heroku-Befehl zum Laufen zu bringen
joncodo
5
Um es noch einfacher zu machen, können Sie einfach die index.html in eine index.php umbenennen
ChairmanMeow
38

Hier ist eine elegantere Methode: Fügen Sie einfach eine Datei mit dem Namen package.jsonHeroku hinzu, die Haroku als Server verwendet:

{
  "name": "my-static-site",
  "version": "1.0.0",
  "description": "This will load any static html site",
  "scripts": {
    "start": "harp server --port $PORT"
  },
  "dependencies": {
    "harp": "*"
  }
}

und dann nach Heroku einsetzen. Getan!

Weitere Informationen: https://harpjs.com/docs/deployment/heroku

Harlan T Wood
quelle
3
Von allen Antworten ist dies die funktionierende ab November 2016
Sergio Majluf
2
Ja, das ist schnell und einfach
user2431114
harp serverkonnte aus irgendeinem Grund das nicht laden less file. Versuchte mit dem php answeroben genannten und das hat funktioniert. Diese Lösung ist jedoch sehr einfach. Danke ...
Akash
12

Folgendes hat bei mir funktioniert:

cd myProject 
git init
heroku create myApp 
heroku git:remote -a myApp 

Wenn der Einstiegspunkt ist main.html, erstellen Sie index.phpmit dieser einzelnen Inhaltszeile:

<?php include_once("main.html"); ?>

Führen Sie dann die folgenden Schritte aus:

echo '{}' > composer.json 
git add . 
git commit -am "first commit" 
git push heroku master

Gehen Sie zu http://myApp.herokuapp.com/ und Ihre App sollte jetzt online sein.

qed
quelle
5

Es gibt eine sehr einfache Möglichkeit, dies zu tun, falls jemand die oben genannten Antworten schwer zu befolgen findet.

Sie haben Ihre statische Website mit dem Stammverzeichnis unter index.html(sagen wir). Jetzt möchten Sie sie auf Heroku bereitstellen. Wie?

git init # initialise a git repo

git add -A # add the files

git commit -m "init commit" # commit the files

# Now add two files in the root, composer.json and index.php like so - 
touch composer.json
touch index.php

# Then add this line to index.php, making a PHP app and just asking it to display index.html - 
<?php include_once("index.html"); ?>

# Now open composer.json and add an empty object - 
{}

Jetzt einfach rennen git push heroku masterund fertig!

Scrotch
quelle
2

Ich weiß, dass dies vielleicht etwas alt ist, aber ich habe Vienna Gemw verwendet, um dies bereitzustellen. Im Grunde handelt es sich um eine kleine Rack-Anwendung, mit der Sie alles in Ihrem öffentlichen Ordner (CSS, Bilder, JS, HTML) mit nur wenigen Zeilen bereitstellen können von Ruby:

require 'vienna'
run Vienna

Um dies auf Heroku bereitzustellen, müssen Sie außerdem eine Gem-Datei erstellen:

source 'https://rubygems.org'
gem 'rack'
gem 'vienna'

Führen Sie dann die Bundle-Installation aus, falls Sie das Bundle-Gem nicht installiert haben, führen Sie es einfach auf Ihrem Terminal aus:

sudo gem install bundle

Und das ist so ziemlich alles. Weitere Informationen finden Sie unter: http://kmikael.com/2013/05/28/creating-static-sites-in-ruby-with-rack/

Ronier Lopez
quelle
2

Befolgen Sie diese Schritte

Schritt 1

Art touch composer.json index.php index.html

Schritt 2 im Typ index.php:

<?php include_once("index.html"); ?>

und in der Datei composer.json geben Sie {} ein

Schritt 3

git add .

git commit -m "[your message]"

git push ['yourrepo'] ['yourbranch']
user4920718
quelle
0

Hmmm ... ein Grund, warum Heroku die App ablehnt, könnte sein, dass es versucht, eine Asset-Pipeline in Rails 3.1.x-Apps zu erkennen, denke ich.

Warum erstellen Sie Ihre App nicht auf dem Standardstapel Bamboo, indem Sie nur ausführen

heroku create

Dann können alle Ihre js und css in den öffentlichen Ordner in der Rails-App mit deaktivierter Asset-Pipeline verschoben werden.

Hishalv
quelle
5
Der Gedanke, Rails zu verwenden, um statische Inhalte bereitzustellen, bringt mich dazu, jemanden zu verletzen :)
Jeremy Smith
Wenn Sie nur js / html / css haben, sucht es nach einer Anwendung node.js. Es schlägt fehl, wenn es nicht gefunden wird, unabhängig davon, mit welchem ​​Stapel Sie es ausführen möchten.
fresh5447
0

Wenn Ihre Webseiten HTML, CSS und JavaScript enthalten, befolgen Sie einfach zwei Schritte:

1) Geben Sie einer Datei den Namen index.html (behalten Sie alles bei). Beispiel: Skript, Stylesheet & Body.

2) Ändern Sie nun diese Datei, kopieren Sie dieselbe Datei und fügen Sie sie ein, ändern Sie jedoch die Domäne in index.php

Dann auf einem Heroku einsetzen.

Daher hilft Ihnen diese Methode bei der Bereitstellung Ihrer Webseiten

Aamir M Meman
quelle
0

Update 2020:

Wenn Sie eine leere Seite mit der hier genannten PHP-Antwort erhalten, versuchen Sie Folgendes index.html: Wenn sich Ihre Homepage unter folgender Adresse befindet :

echo '<?php header( 'Location: /index.html' ) ;  ?>' > index.php
echo '{}' > composer.json

Erstellen eines Git-Repos und Festschreiben nach dem Hinzufügen von Dateien:

git init
git add .
git commit -m "My site ready for deployment."

Heroku-Einsatz -

heroku login
heroku apps:create my-static-site-example
git push heroku master
Aditya Bansal
quelle