¿Es posible cargar una estructura de archivo html y javascript simple en heroku?

83

Estoy tratando de implementar un proyecto mío de código abierto en heroku, es por necesidad muy simple con solo html estático y javascript. ¿Pero no admiten sitios estáticos? Preferiría no convertirlo en un proyecto de Sinatra si no planeo usar nada más que html y 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
fuente

Respuestas:

13

Puede usar el bastidor para hacer esto:

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

o puede usar algo como Octopress / Jekyll que usa sinatra.

Pero necesita una pila mínima para servir contenido estático html

Tiago Peczenyj
fuente
16
El OP no solicitó una solución Ruby.
Adam Arold
22
Lee mi oración de nuevo.
Adam Arold
214

Una forma sencilla es disfrazar la aplicación HTML como una aplicación PHP. Heroku identifica correctamente las aplicaciones PHP.

  1. Cambie el nombre de su archivo index.html a home.html.
  2. Cree un archivo index.php e incluya su archivo html de entrada. Si su archivo de entrada HTML se llama home.html como se recomienda, su index.php debería verse así:

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

  3. En su línea de comando en la máquina desde la que está presionando, escriba:

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

Heroku debería detectar correctamente su aplicación ahora como una aplicación 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
...

Mad Thanks a lemiffe por su publicación en el blog: http://www.lemiffe.com/how-to-deploy-a-static-page-to-heroku-the-easy-way/

pkanane
fuente
28
Esto es MUCHO más simple y debe aceptarse como la respuesta correcta
Glenn Bech
3
nota: primero necesitaba agregar composer.json para que esto funcionara. devcenter.heroku.com/articles/…
happygilmore
Realmente muy bien. Me ahorró mucho tiempo con Node.js, ¡muchas gracias!
davidkelleher
Es posible que deba hacer una git initpara obtener los comandos git y una heroku createpara que funcione el comando
heroku
5
Para hacerlo aún más simple, simplemente puede cambiar el nombre del index.html a index.php
ChairmanMeow
38

Aquí hay un método más elegante: simplemente agregue un archivo llamado package.jsonque le dice a Heroku que use harp como su servidor:

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

y luego implementar en Heroku. ¡Hecho!

Más información: https://harpjs.com/docs/deployment/heroku

Madera Harlan T
fuente
3
De todas las respuestas, esta es la que funciona a noviembre de 2016
Sergio Majluf
2
sí, este es rápido y simple
user2431114
harp server, por alguna razón, no pudo cargar el less file. Probé con lo php answeranterior y funcionó. Sin embargo, esta solución es realmente simple. Gracias ...
Aakash
12

Esto es lo que funcionó para mí:

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

Si el punto de entrada es main.html, cree index.phpcon esta única línea de contenido:

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

y luego realice los siguientes pasos:

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

Vaya a http://myApp.herokuapp.com/ y su aplicación debería estar en línea ahora.

qed
fuente
5

Hay una manera muy fácil de hacerlo en caso de que a alguien le resulte difícil seguir las respuestas anteriores.

Tiene su sitio web estático con la raíz en index.html(digamos), ahora desea distribuirlo en Heroku, ¿cómo?

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

¡Ahora simplemente corre git push heroku mastery listo!

Scrotch
fuente
2

Sé que esto puede ser un poco antiguo, pero terminé usando Vienna Gemw para implementar esto, básicamente es una pequeña aplicación de Rack que le permitirá servir todo en su carpeta pública (css, images, js, html) con solo un par de líneas de Ruby:

require 'vienna'
run Vienna

Además, para implementar esto en heroku necesitas crear un Gemfile:

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

Luego ejecute la instalación del paquete, en caso de que no tenga instalada la gema del paquete, simplemente ejecútela en su terminal:

sudo gem install bundle

Y eso es prácticamente todo, puedes tener más información en: http://kmikael.com/2013/05/28/creating-static-sites-in-ruby-with-rack/

Ronier López
fuente
2

Siga estos pasos

Paso 1

Tipo touch composer.json index.php index.html

Paso 2 en el tipo index.php:

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

y en el tipo composer.json {}

Paso 3

git add .

git commit -m "[your message]"

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

Hmmm ... una razón por la que heroku está rechazando la aplicación podría ser que está tratando de detectar la canalización de activos en las aplicaciones rails 3.1.x, creo.

¿Por qué no crear su aplicación en la pila predeterminada Bamboo ejecutando solo

heroku create

Luego, todos sus js y css pueden ir a la carpeta pública en la aplicación rails con la canalización de activos desactivada.

Hishalv
fuente
5
La idea de usar Rails para ofrecer contenido estático me da ganas de lastimar a alguien :)
Jeremy Smith
Cuando solo tiene js / html / css, busca una aplicación node.js. Falla cuando no lo encuentra, independientemente de la pila con la que intente ejecutarlo.
fresh5447
0

Bueno, siempre que su página web contenga HTML, CSS y JavaScript, siga solo 2 pasos:

1) Haga que un archivo dé el nombre como index.html (mantenga todo en él) por ejemplo: script, hoja de estilo y cuerpo.

2) Ahora, cambie estos archivos, copie y pegue el mismo archivo pero cambie el dominio a index.php

Luego implemente en un Heroku.

Por lo tanto, este método le ayudará a implementar sus páginas web.

Aamir M Meman
fuente
0

Actualización 2020:

Si obtiene una página en blanco con la respuesta de PHP mencionada aquí, intente esto: si su página de inicio está en index.html:

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

Creando un repositorio de Git y confirmando después de agregar archivos:

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

Implementación de Heroku -

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