Можно ли загрузить в heroku простую файловую структуру html и javascript?

84

Я пытаюсь развернуть свой проект с открытым исходным кодом на heroku, это по необходимости очень просто с помощью статических html и javascript. Но разве они не поддерживают статические сайты? Я бы предпочел не делать это проектом Sinatra, если я не планирую когда-либо использовать что-либо, кроме html и javascript.

~/sites/d4-site $ heroku create --stack cedar
Creating quiet-ice-4769... done, stack is cedar
http://quiet-ice-4769.herokuapp.com/ | git@heroku.com: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
Джереми Смит
источник

Ответы:

13

Для этого можно использовать стойку:

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

или вы можете использовать что-то вроде Octopress / Jekyll, который использует синатру.

Но вам нужен минимальный стек для обслуживания статического содержимого HTML.

Тьяго Печени
источник
17
OP не запрашивал решение Ruby.
Адам Арольд
23
Прочтите мою фразу еще раз.
Адам Арольд
215

Простой способ - замаскировать HTML-приложение под PHP-приложение. Heroku правильно определяет приложения PHP.

  1. Переименуйте файл index.html в home.html.
  2. Создайте файл index.php и включите свой входной html-файл. Если ваш файл записи HTML называется home.html, как рекомендуется, ваш index.php должен выглядеть так:

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

  3. В командной строке на машине, с которой вы нажимаете, введите:

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

Теперь Heroku должен правильно определить ваше приложение как приложение 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
...

Безумное спасибо Лемифу за его сообщение в блоге: http://www.lemiffe.com/how-to-deploy-a-static-page-to-heroku-the-easy-way/

пканане
источник
28
Это ПУТЬ проще, и его следует принять как правильный ответ
Гленн Бек
3
примечание: мне нужно сначала добавить composer.json, чтобы заставить это работать. devcenter.heroku.com/articles/…
happygilmore 02
Действительно, действительно хорошо. Спасла меня от того, что я возился с Node.js, большое спасибо!
davidkelleher 05
Возможно, вам потребуется выполнить a, git initчтобы получить команды git, и a, heroku createчтобы заставить команду heroku работать
joncodo
5
Чтобы сделать это еще проще, вы можете просто переименовать index.html в index.php
председательMeow
38

Вот более элегантный метод: просто добавьте файл с именем, package.jsonкоторый говорит Heroku использовать арфу в качестве сервера:

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

а затем разверните в Heroku. Готово!

Дополнительная информация: https://harpjs.com/docs/deployment/heroku

Харлан Т Вуд
источник
3
Из всех ответов это рабочий по состоянию на ноябрь 2016 года
Серджио Майлуф,
2
да, это быстро и просто
user2431114
harp serverпо какой-то причине не удалось загрузить файл less file. Пробовал с php answerвышеуказанным, и это сработало. Хотя это решение действительно простое. Спасибо ...
Aakash
12

Вот что у меня сработало:

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

Если точка входа - main.htmlсоздайте index.phpс помощью этой единственной строки содержимого:

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

а затем выполните следующие действия:

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

Перейдите на http://myApp.herokuapp.com/, и ваше приложение должно быть теперь в сети.

qed
источник
5

Есть очень простой способ сделать это на тот случай, если кому-то будет сложно следовать приведенным выше ответам.

У вас есть статический веб-сайт с корнем index.html(скажем), теперь вы хотите развернуть его на Heroku, как?

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

Теперь просто беги, git push heroku masterи все готово!

Скротч
источник
2

Я знаю, что это может быть немного старовато, но в итоге я использовал Vienna Gemw для его развертывания, в основном это небольшое приложение Rack, которое позволит вам обслуживать все в вашей общей папке (css, images, js, html) всего с парой строк Рубина:

require 'vienna'
run Vienna

Кроме того, для развертывания этого на heroku вам необходимо создать Gemfile:

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

Затем запустите установку пакета, если у вас не установлен пакет gem, просто запустите его на своем терминале:

sudo gem install bundle

И это в значительной степени, вы можете получить дополнительную информацию по адресу : http://kmikael.com/2013/05/28/creating-static-sites-in-ruby-with-rack/

Ронье Лопес
источник
2

Следуйте этим шагам

Шаг 1

Тип touch composer.json index.php index.html

Шаг 2 в типе index.php:

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

и в типе composer.json {}

Шаг 3

git add .

git commit -m "[your message]"

git push ['yourrepo'] ['yourbranch']
user4920718
источник
0

Хммм ... одна из причин, по которой heroku отвергает приложение, может заключаться в том, что оно пытается обнаружить конвейер ресурсов в приложениях rails 3.1.x, я думаю.

Почему бы не создать свое приложение в стеке по умолчанию Bamboo , просто запустив

heroku create

Затем все ваши js и css могут перейти в общую папку в приложении rails с деактивированным конвейером ресурсов.

Hishalv
источник
5
Мысль об использовании Rails для обслуживания статического контента заставляет меня хотеть кого-то обидеть :)
Джереми Смит,
Когда у вас есть только js / html / css, он ищет приложение node.js. Он терпит неудачу, если не находит его, независимо от того, в каком стеке вы его пытаетесь запустить.
fresh5447 08
0

Что ж, если ваша веб-страница содержит HTML, CSS и JavaScript, выполните всего 2 шага:

1) Сделайте один файл с именем index.html (сохраните в нем все), например: скрипт, таблица стилей и тело.

2) Теперь измените этот файл, скопируйте и вставьте тот же файл, но измените домен на index.php

Затем разверните на Heroku.

Следовательно, этот метод поможет вам развернуть ваши веб-страницы.

Аамир М Меман
источник
0

Обновление 2020:

Если вы получили пустую страницу с упомянутым здесь ответом PHP, попробуйте следующее - Если ваша домашняя страница находится по адресу index.html:

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

Создание репозитория Git и фиксация после добавления файлов:

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

Развертывание Heroku -

heroku login
heroku apps:create my-static-site-example
git push heroku master
Адитья Бансал
источник