Czy można przesłać do heroku prostą strukturę plików html i javascript?

84

Próbuję wdrożyć mój projekt open source na heroku, z konieczności jest to bardzo proste, wystarczy statyczny kod HTML i javascript. Ale czy nie obsługują witryn statycznych? Wolałbym nie robić z tego projektu Sinatra, jeśli nie planuję kiedykolwiek używać niczego oprócz html i javascript.

~/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  [email protected]:quiet-ice-4769.git (fetch)
heroku  [email protected]: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
źródło

Odpowiedzi:

13

Możesz to zrobić za pomocą stojaka:

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

lub możesz użyć czegoś takiego jak Octopress / Jekyll, który używa sinatry.

Jednak do obsługi statycznej zawartości html potrzebny jest minimalny stos

Tiago Peczenyj
źródło
17
OP nie poprosił o rozwiązanie Ruby.
Adam Arold
23
Przeczytaj ponownie moje zdanie.
Adam Arold
215

Prostym sposobem jest zamaskowanie aplikacji HTML jako aplikacji PHP. Heroku poprawnie identyfikuje aplikacje PHP.

  1. Zmień nazwę pliku index.html na home.html.
  2. Utwórz plik index.php i dołącz swój plik html. Jeśli Twój plik wejściowy HTML nosi nazwę home.html zgodnie z zaleceniami, plik index.php powinien wyglądać następująco:

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

  3. W linii poleceń na maszynie, z której pchasz, wpisz:

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

Heroku powinno teraz poprawnie wykryć twoją aplikację jako aplikację php:

-----> 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
...

Szalone podziękowania dla lemiffe za jego wpis na blogu: http://www.lemiffe.com/how-to-deploy-a-static-page-to-heroku-the-easy-way/

pkanan
źródło
28
To jest DUŻO prostsze i powinno być zaakceptowane jako poprawna odpowiedź
Glenn Bech
3
Uwaga: najpierw musiałem dodać plik composer.json, aby to zadziałało. devcenter.heroku.com/articles/…
happygilmore
Naprawdę, naprawdę dobrze. Zaoszczędziłem mi wiele kłopotów z Node.js, wielkie dzięki!
davidkelleher
Być może będziesz musiał zrobić a, git initaby uzyskać polecenia git i a, heroku createaby polecenie heroku działało
joncodo
5
Aby było to jeszcze prostsze, możesz po prostu zmienić nazwę index.html na index.php
ChairmanMeow,
38

Oto bardziej elegancka metoda: po prostu dodaj plik o nazwie, package.jsonktóry mówi Heroku, aby używał harfy jako serwera:

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

a następnie wdrożyć w Heroku. Gotowe!

Więcej informacji: https://harpjs.com/docs/deployment/heroku

Harlan T Wood
źródło
3
Ze wszystkich odpowiedzi jest to działająca na listopad 2016
Sergio Majluf
2
tak, ten jest szybki i prosty
user2431114
harp serverz jakiegoś powodu nie mógł załadować pliku less file. Próbowałem z php answerpowyższym i zadziałało. Chociaż to rozwiązanie jest naprawdę proste. Dzięki ...
Aakash
12

Oto, co zadziałało dla mnie:

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

Jeśli punktem wejścia jest main.html, utwórz index.phpz tym pojedynczym wierszem treści:

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

a następnie wykonaj następujące czynności:

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

Wejdź na http://myApp.herokuapp.com/, a Twoja aplikacja powinna być teraz online.

co było do okazania
źródło
5

Jest na to bardzo łatwy sposób, na wypadek gdyby ktoś stwierdził, że powyższe odpowiedzi są trudne do zrozumienia.

Masz swoją statyczną stronę internetową z index.htmlkatalogiem głównym w (powiedzmy), teraz chcesz ją wdrożyć w Heroku, jak?

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 - 
{}

Teraz po prostu biegnij git push heroku masteri gotowe!

Scrotch
źródło
2

Wiem, że to może być trochę stare, ale ostatecznie użyłem Vienna Gemw do wdrożenia tego, w zasadzie jest to mała aplikacja Rack, która pozwoli Ci obsłużyć wszystko w twoim folderze publicznym (css, images, js, html) za pomocą zaledwie kilku linii Rubiego:

require 'vienna'
run Vienna

Ponadto, aby wdrożyć to na Heroku, musisz utworzyć Gemfile:

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

Następnie uruchom instalację pakietu, jeśli nie masz zainstalowanego klejnotu pakietu, po prostu uruchom na swoim terminalu:

sudo gem install bundle

I to prawie wszystko, więcej informacji możesz znaleźć na: http://kmikael.com/2013/05/28/creating-static-sites-in-ruby-with-rack/

Ronier Lopez
źródło
2

Wykonaj poniższe czynności

Krok 1

Rodzaj touch composer.json index.php index.html

Krok 2 w typie index.php:

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

i w typie composer.json {}

Krok 3

git add .

git commit -m "[your message]"

git push ['yourrepo'] ['yourbranch']
user4920718
źródło
0

Hmmm ... jednym z powodów, dla których heroku odrzuca aplikację może być próba wykrycia potoku aktywów w aplikacjach rails 3.1.x.

Dlaczego nie utworzyć aplikacji na domyślnym stosie Bamboo , uruchamiając po prostu

heroku create

Następnie wszystkie pliki js i css mogą przejść do folderu publicznego w aplikacji rails z wyłączonym potokiem aktywów.

Hishalv
źródło
5
Myśl o wykorzystaniu Railsów do wyświetlania statycznej zawartości sprawia, że ​​chcę kogoś skrzywdzić :)
Jeremy Smith
Gdy masz tylko js / html / css, szuka aplikacji node.js. Nie udaje się, gdy go nie znajduje, niezależnie od stosu, z którym próbujesz go uruchomić.
fresh5447,
0

Cóż, ilekroć twoja strona internetowa zawiera HTML, CSS i JavaScript, wykonaj tylko 2 kroki:

1) Zrób jeden plik i nadaj mu nazwę index.html (zachowaj wszystko w nim) np: skrypt, arkusz stylów i treść.

2) Teraz zmień te pliki, skopiuj i wklej ten sam plik, ale zmień domenę na index.php

Następnie umieść na Heroku.

Dlatego ta metoda pomoże Ci wdrożyć Twoje strony internetowe

Aamir M Meman
źródło
0

Aktualizacja 2020:

Jeśli otrzymasz pustą stronę z wymienioną tutaj odpowiedzią PHP, spróbuj tego - Jeśli Twoja strona główna znajduje się pod adresem index.html:

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

Tworzenie repozytorium Git i zatwierdzanie po dodaniu plików:

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

Wdrożenie Heroku -

heroku login
heroku apps:create my-static-site-example
git push heroku master
Aditya Bansal
źródło