iOS Firebase Flashlight/ElasticSearch Heroku Настройка с использованием Node.JS
Я создаю iOS-приложение на Swift с бэкэндом Firebase. Мне нужны расширенные параметры поиска для моего приложения. Мне сказали, что я должен использовать Flashlight/ElasticSearch по этой ссылке на github https://github.com/firebase/flashlight
Предположим, мое приложение называется SneakerSearch, а мой
Firebase Project_ID is- sneakersearch-az12
Firebase Web_API_Key is- abc123XYZ000...
Firebase App_Url is- gs://sneakersearch-az12.appspot.com
Мне нужно несколько советов с инструкциями по настройке, так как я новичок в Heroku и Node.js. Я никогда раньше не учился, но я уже установил пояс инструмента Heroku, и установка sudo gem heroku завершена.
Я перечислил github направления / шаги и шаги, которые я сделал для каждого направления. Мне нужна помощь с указаниями: 1,4,5,6,9,10,12 и 15.
1.Install and run ElasticSearch or add Bonsai service via Heroku
1. Я делаю аккаунт в Heroku.
1.-ВОПРОС: Нужно ли мне создавать имя моего приложения и развертывать его после того, как я настрою свою учетную запись Heroku, или мне следует подождать до шага № 9?
2.git clone https://github.com/firebase/flashlight
2. Я клонирую вышеупомянутое в папку проекта моего приложения для iOS
3.npm install
3. По запросу я сначала запускаю "npm init", затем запускаю "npm install"
4. edit config.js (see comments at the top, you must set FB_URL and FB_SERVICEACCOUNT at a minimum)
4A.-ВОПРОС: Что такое "FB_SERVICEACCOUNT"? Я использую Firebase 3, и я не смог найти что-либо на служебной учетной записи в моей консоли. Является ли это другой учетной записью Firebase, которую я должен настроить для своего проекта, используя node.js в дополнение к проекту Firebase swift, который я уже сделал?
4B.-ВОПРОС: Где я могу "отредактировать config.js" и установить мои FB_URL и FB_SERVICEACCOUNT в? Это должно быть в моем файле package.json?
5.node app.js (run the app)
5.-ВОПРОС: В терминале я запустил "node app.js" и получил "throw err;^". Почему я получил эту ошибку?
6.curl -X POST http://localhost:9200/firebase
6.-ВОПРОС: Для чего это нужно?
7.cd flashlight
7. переключился на фонарик реж
8.heroku login
8. подключен к Heroku
9.heroku create (add heroku to project)
9A-ВОПРОС: Когда я впервые создал свою учетную запись в Heroku, я должен был создать новое приложение с именем своего приложения и развернуть его, используя инструкции git, которые он перечислил? Если бы мне не следовало этого делать, будет ли сначала запускать процесс "Heroku Create" для меня?
9B-ВОПРОС: Я просто запускаю "heroku create" или я запускаю "heroku create -app's name- here" здесь?
10.heroku addons:add bonsai (install bonsai)
10.-ВОПРОС: Нужно ли мне создать учетную запись на Bonasi.io и установить ее до этого шага, или это создает для меня учетную запись в бонсай? Я никогда не использовал бонсай раньше.
11.heroku config (check bonsai instance info and copy your new BONSAI_URL - you will need it later)
11. Думаю, этот вопрос будет зависеть от шага № 10.
12.heroku config:set FB_NAME=<instance> FB_TOKEN="<token>" (declare environment variables)
12.-ВОПРОС: Что такое ТОКЕН Firebase? Это мой Web_API_Key, App_URL или Project_ID? Я не смог найти что-то конкретное для "токена" в моей консоли Firebase. Я использую Firebase 3.
13.git add config.js (update)
git commit -m "configure bonsai"
13. зафиксировать с сообщением
14.git push heroku master (deploy to heroku)
14. толчок к мастеру
15.heroku ps:scale worker=1 (start dyno worker)
15.-ВОПРОС: Для чего это нужно?
2 ответа
Это ответ из двух частей, первая часть которого проходит по направлениям Github и заканчивается на шаге 19. Вторая часть содержит больше информации, которая не вписывается в первую часть, и она будет подробно описана на шаге 19. Я должен добавить это к другому вопросу и связать это с этим.
Вот Github
шаги перечислены в порядке. К вашему сведению, я держал оригинальные шаги в соответствии с тем, как оригинал Github author
перечислил их, но под ними я поставил несколько подэтапов с подробными объяснениями и указаниями под каждым.
Предполагая, что вы уже создали Firebase
проект и получил ваш GoogleService-Info.plist
файл
Открыть свой GoogleService-Info.plist
файл. Следующие variables
от Github directions
коррелируют с GoogleService-Info.plist keys
-FB_NAME is the same thing as your PROJECT_ID
-FB_URL is the same thing as your DATABASE_URL
-FB_TOKEN is the same thing as your API_KEY
So
-if your PROJECT_ID is "sneakersearch-az12" then your FB_NAME is "sneakersearch-az12"
-if your DATABASE_URL is "https://sneakersearch-az12.firebaseio.com" then your FB_URL is "https://sneakersearch-az12.firebaseio.com"
-if your API_KEY is "0012abc789xyz00019" then your FB_TOKEN is "0012abc789xyz00019"
//These are not inside your GoogleService-Info.plist but you will encounter them later
-FB_SERVICEACCOUNT pertains to downloading a json file from the your project's Firebase console. You will need to go to the page SERVICE ACCOUNTS it's exp in step 3B
-clientEmail is the same thing as your Firebase Service Account. You get this from either the Unknown file or on your SERVICE ACCOUNTS page via the FB Console and it's exp in step 3D and 3B
-privateKey is the same thing as private_key but this key is NOT your API_KEY, it is a key that is inside the Unknown file from the SERVICE ACCOUNTS page. It looks something like: "-----BEGIN PRIVATE KEY-----\nCYchgacopuyvpc017246t124087t6hpUTYVPUSVDPUCHVEpcl889ljbsiugr4ygrphvuygpuy...mutli-lines...\n-----END PRIVATE KEY-----\n". Also exp in step 3B
Под каждым Github
шаг у меня есть комментарии, а затем направления. Внутри направлений, где я использую приведенные ниже значения, вы должны вместо этого использовать project's values
, Так что для пошаговых примеров я буду использовать эти keys
а также values
:
//GoogleService-Info.plist
PROJECT_ID---aka--FB_NAME: sneakersearch-az12
DATABASE_URL-aka--FB_URL: https://sneakersearch-az12.firebaseio.com
API_KEY------aka--FB_TOKEN: 0012abc789xyz00019
//FB Service Account info
Firebase service account--aka--clientEmail: firebase-admin-81772@sneakersearch-az12.iam.gserviceaccount.com //this is auto generated for you once you've created your firebase project
//Heroku and Bonsai info
Heroku Instance Name--aka--Heroku App Name: sneakersearchinstanceAtoZ
BONASI_URL --aka--Bonsai Cluster URL: https://abc123a01:01abc12de45xyz34@xyz-012345.us-east-1.bonsaisearch.net
Swift Data Model: (это будет соответствовать тому, что вы положили в свой объект сопоставлений на шаге 19)
class Sneakers: NSObject{
var sneakercondition: String?
var sneakername: String?
}
VC с путями к файлам, куда я отправляю данные в Firebase, а searchSnkPath - это отдельный путь к файлу, по которому Бонсай будет выполнять поиск:
@IBOutlet weak var conditionTextField: UITextField!
@IBOutlet weak var nameTextField: UITextField!
var dbRef: FIRDatabaseReference!
let userID = FIRAuth.auth()?.currentUser?.uid
override func viewDidLoad() {
super.viewDidLoad()
self.dbRef = FIRDatabase.database().reference()
}
@IBAction func postDataButton(){
var dict = [String:AnyObject]()
dict.updateValue(conditionTextField.text!, forKey: "sneakercondition")
dict.updateValue(nameTextField.text!, forKey: "sneakername")
let idPath = self.dbRef.child("users").child(userID!).child("sneakersPath").childByAutoId()
//searches will run on this file path
let searchSnkPath = self.dbRef.child("searchSnkPath").childByAutoId()
idPath.updateChildValues(dict){
(err, ref) in
searchSnkPath.updateChildValues(dict)
}
}
}
внутри FBDatabase
путь, где мои данные для поиска хранятся в root/searchSnkPath/autoID
и имеет 2 keys
названный sneakercondition
а также sneakername
это представляет данные. Путь, из которого я хочу получить результаты поиска, root/searchSnkPath
root
|
@-users
| |
| @-userID
| |
| @-sneakersPath
| |
| @-autoID
| |-sneakercondition
| |-sneakername
@searchSnkPath
|
@-autoID
|-sneakercondition
|-sneakername
Если я хочу искать на searchSnkPath
и запрос на эти 2 keys
затем внутри config.js
файл я бы нашел exports.paths
и внутри есть место, где я бы установил информацию для поиска
exports.paths = [
{
path : "https://sneakersearch-az12.firebaseio.com/searchSnkPath", //exp in Step 4
index: "firebase", //exp in Step 17
type : "sneakers", //exp in Step 19
fields: ['sneakercondition', 'sneakername'] //these are the specific keys to search on (exp in Step 4)
}
]
Шаг 4 охватывает все это
Важно после запуска git clone https://github.com/firebase/flashlight
(шаг 2А) вам нужно cd
в flashlight
папка (шаг 2B), так как ВСЕ шаги с этого момента происходят внутри flashlight
папка, а не папка вашего основного проекта XCode. Ничто не будет работать в папке вашего проекта Xcode, потому что у него нет файла package.json
Часть 1 - Github шаги:
1 • Установите и запустите ElasticSearch или добавьте сервис Bonsai через Heroku
1.comments:
- Bonsai
будет добавлен на шаге 10
-Для продолжения необходимо выполнить следующие шаги 1A-1E.
1.directions:
1А. Загрузить и установить Node.js
с https://nodejs.org/en/download/
1В. Загрузите и установите Heroku Toolbelt
(это было переименовано Heroku CLI
) по адресу https://devcenter.heroku.com/articles/heroku-cli. К вашему сведению, я использовал OS X Installer, а не OS X Homebrew.
1С. После того, как вы загрузили и установили Heroku Toolbelt/CLI
войдите на Heroku.com и создайте аккаунт
1D. После создания Heroku
нет необходимости создавать новый аккаунт Heroku App
Вы сделаете это в шаге 9, используя командную строку. Это очень просто
1E. Откройте терминал и запустите: node -v
узнать ток node version
ваш бег (например, вы получаете v6.9.1
). На шаге 2D вы должны убедиться, что версия оттуда соответствует этому выводу.
2 • git clone https://github.com/firebase/flashlight
2.comments:
Предположим, что проект Xcode живет на рабочем столе в папке с именем sneakerSearchFolder
-Внутри вас терминал cd
в папку sneakerSearchFolder, т.е. запустите: cd Desktop/sneakerSearchFolder
-Как только внутри кроссовок clone
the github repo
на https://github.com/firebase/flashlight
- Важный ты тогда cd
в flashlight
папка т.е. запустить: cd flashlight
-Тебе понадобится node version
ваш бег в соответствии с https://devcenter.heroku.com/articles/deploying-nodejs
-бежать: node -v
чтобы получить то, что node version
работает внутри flashlight
папка (то есть v6.9.1
) позже, когда вы делаете Heroku instance
вам нужно это в соответствии с devcenter.heroku
ссылка выше
-Теперь что ты внутри flashlight
папка, если node version
только что запущенный файл не соответствует версии из шага 1E, вам нужно обновить версию внутри папки с фонариком, чтобы они совпадали. Обновление Node.js до последней версии. Если обе версии совпадают, вам не нужно беспокоиться об этом.
- При условии совпадения версий вашего узла, откройте package.json
файл внутри вашего flashlight
папку и добавить "engines"
объект со значением ключа, являющимся node version
вы в настоящее время используете
"engines": {
"node": "node_version_num_you_got_back_from_running_node -v"
}
2.directions:
2А. в терминале перейдите в любую папку, в которой находится ваш проект Xcode
2B. бежать: git clone https://github.com/firebase/flashlight
2C. бежать: cd flashlight
2D. бежать: node -v
2Е. Открой flashlight
затем откройте папку package.json
, Добавьте следующее в файл.
"engines": {
"node": "whatever_was_returned_from_Step_2D"
}
2E-пример. К вашему сведению, вот пример. открыто package.json
и после "dependencies"
closing brace
добавь это туда. Обязательно добавляйте запятую после закрывающей скобки. И не добавляйте "v" перед номером версии. Сохраните файл.
"dependencies": {
"JQDeferred": "~1.9.1",
"colors": "~0.6.2",
"elasticsearch": "^11.0.1",
"firebase": "^3.5.2"
},
"engines": {
"node": "6.9.1"
}
3 • установка npm
С этого момента очень важно, чтобы ваш flashlight
папка, а не папка вашего основного проекта, чтобы все работало, иначе вы получите ошибки
3.comments:
-Ты все еще должен быть внутри вашего flashlight
папка
-Войти в Firebase
в консоли вашего проекта FB перейдите к Project's Settings
(маленький круглый значок рядом с Overview
), в настройках проекта выберите SERVICE ACCOUNTS
перейти в раздел Firebase Admin SDK
, Есть 2 вещи, которые вы должны сделать здесь. 1. Найдите и скопируйте свой Firebase service account
, похоже, что firebase-admin-81772@sneakersearch-az12.iam.gserviceaccount.com и 2. внизу страницы вам нужно будет нажать на Generate New Private Key
Кнопка, он загрузит Unknown file
что вам нужно будет переименовать в service-account.json
, Если это имя файла что-то кроме Unknown
просто переименуйте это в service-account.json
, После переименования файла перетащите его в свой flashlight
папка, потому что шаг 4B FB_SERVICEACCOUNT
нужно будет получить доступ к этому файлу оттуда. Убедитесь, что вы положили файл в FLASHLIGHT FOLDER
!
-Это не указано в шагах Github, но это необходимо. Вы должны добавить Firebase Server SDK Credentials
к вашему проекту
-Вы должны быть внутри flashlight
папка для запуска $ npm install firebase-admin --save
команда или вы получите ошибки, потому что он будет искать packae.json
файл. Файл уже внутри вашего flashlight
папка, а не внутри вашей основной папке проекта XCode
-Следуйте инструкциям из https://firebase.google.com/docs/server/setup, внутри Initialize the SDK
раздел. Вам понадобятся 2 значения из Unknown
файл (который теперь должен быть переименован service-account.json
) чтобы инициализировать его. Значения в строках 5- private_key
и 6- clientEmail
, К вашему сведению clientEmail
а также Firebase service account
это одно и то же
-Вот кто ты initializing
внутри SDK
:
var admin = require("firebase-admin"); //this imports the npm firebase-admin module you just installed
admin.initializeApp({
credential: admin.credential.cert({
projectId: "<PROJECT_ID>", //projectId: is the PROJECT_ID from your GoogleService-Info.plist file
clientEmail: "foo@<PROJECT_ID>.iam.gserviceaccount.com", //clientEmail: is on line 6 in the Unknown file which is also your "Firebase service account" info
privateKey: "-----BEGIN PRIVATE KEY-----\n<KEY>\n-----END PRIVATE KEY-----\n" //privateKey: is NOT your API_KEY/FB_TOKEN. Inside the Unknown file on line 5 there is a very long multiline "private_key" key. It looks something like "-----BEGIN PRIVATE KEY-----\nCYchgacopuyvpc017tEpcl889ljbsiugr4ygrphvuygpuy...mutli-lines...\n-----END PRIVATE KEY-----\n". You need to copy and paste it from there to here. Be sure to include the "-----BEGIN PRIVATE KEY-----\n and \n-----END PRIVATE KEY-----\n
}),
databaseURL: "https://<DATABASE_NAME>.firebaseio.com" //databaseURL: is the DATABASE_URL from your GoogleService-Info.plist file
});
-FYI внутри Initialize the SDK
раздел у вас также есть возможность использования верхней части, где он говорит path/to/serviceAccountKey.json
и вместо этого вы можете указать путь к переименованному Неизвестному файлу. Я выбираю дно inline
расстаться как было проще. Если вы выполняете эти шаги, вам не нужно беспокоиться об этом, хотя.
-Внутри flashlight
папка есть app.js
файл, скопируйте и вставьте приведенный выше код и поместите его в верхней части файла
-Задавить внутри терминала в командной строке запустить: npm install
-Если все хорошо, единственные предупреждения, которые вы должны иметь, это No repository field
а также No license field
3.directions:
3А. Убедитесь, что вы внутри flashlight
запуск папки: pwd
3B. Войдите в свой Firebase Console
"s SERVICE ACCOUNTS
страницу и нажмите Generate New Private Key
кнопка, чтобы загрузить Unknown
файл.
3C. Переименовать Unknown
подать в service-account.json
и поместите файл в свой flashlight
папка
3D. Внутри service-account.json
файл скопировать key
названный client_email
или вы можете скопировать информацию учетной записи службы на свой Firebase SERVICE ACCOUNTS
страница
3E. Внутренний пробег терминала: npm install firebase-admin --save
3F. Скопируйте то, что внутри раздела Initialize the SDK
и инициализировать поля с этими значениями:
var admin = require("firebase-admin");
admin.initializeApp({
credential: admin.credential.cert({
projectId: "sneakersearch-az12", //use your PROJECT_ID
clientEmail: "firebase-admin-81772@sneakersearch-az12.iam.gserviceaccount.com", //clientEmail: is on line 6 in the Unknown file
privateKey: "-----BEGIN PRIVATE KEY-----\nCYchgacopuyvpc017tEpcl889ljbsiugr4ygrphvuygpuy...mutli-lines...\n-----END PRIVATE KEY-----\n" //privateKey: is on line 5 in the Unknown file
}),
databaseURL: "https://sneakersearch-az12.firebaseio.com" //use your DATABASE_URL
});
3G. Внутри flashlight
папку, откройте app.js
файл, вставьте / сохраните вышеуказанный код внутри него с правильными значениями
3H. бежать: npm install
4 • отредактируйте config.js (см. Комментарии вверху, вы должны установить как минимум FB_URL и FB_SERVICEACCOUNT)
4.comments:
-Внутри ваш flashlight
в папке есть файл с именем config.example.js
, Открой это
-Внутри этого config.example.js
файл, где вы найдете FB_URL
а также FB_SERVICEACCOUNT
переменные (они перечислены в строках 13 и 23)
-Вы должны изменить exports.FB_URL = process.env.FB_URL || 'https://<YOUR APP>.firebaseio.com';
в exports.FB_URL = process.env.FB_URL || 'whatever_your_DATABASE_URL_is';
(не забудьте поставить whatever_your_DATABASE_URL_is
внутри одинарных или двойных кавычек)
по линии 23 exports.FB_SERVICEACCOUNT = process.env.FB_ACC || 'service-account.json';
это то, что используется для доступа к service-account.json file
из шага 3C (нет необходимости добавлять или изменять что-либо здесь, так как оно получит к нему доступ самостоятельно)
- Теперь вам нужно установить путь, по которому ваши данные находятся (например, searchPath, используемый для отправки данных в FB внутри ViewController выше), индекс (шаг 17) и тип (аналогично вашей модели данных), который вы хотите для мониторинга по линии 64,65 и 66
exports.paths = [
{
path : "users",//line 64
index: "firebase",//line 65
type : "user"//line 66
},
- path
где твой data
сидит внутри FB
, Это то место, где вы хотите получить результаты поиска, т.е. <DATABASE_URL>/searchSnkPath
- index
опыт в шаге 17
- type
опыт в шаге 19
-FYI линии 69-79 установили бы другой путь, который вы хотели бы контролировать. Вы можете удалить или закомментировать их, если хотите. Вы также можете создать больше путей для мониторинга, т.е. если у вас был путь <DATABASE_URL>/searchClothingPath
тогда вы также настроите поиск по этому вопросу. Вы также можете добавить больше путей, если хотите:
exports.paths = [
{
path : "https://sneakersearch-az12.firebaseio.com/searchSnkPath"
index: "firebase",
type : "sneakers"
},
{
path : "<DATABASE_URL>/searchClothingPath"
index: "firebase",
type : "clothingDataModel",
fields: ['jeans','shirts']//completely optional to use
},
{
path : "<DATABASE_URL>/searchHatsPath"
index: "firebase",
type : "hatDataModel",
},
//etc...
-FYI Fields
являются keys
это будет проиндексировано в E S. Это необязательная вещь для добавления. Если бы у вас было 10 keys
и только хотел, чтобы 2 из них были indexed
тогда вы бы добавили это. Это означает, что из 10 ключей только те 2 keys
будет доступен для поиска. Вы также можете использовать функцию разбора внутри config.js
файл, чтобы сделать то же самое
-В дальнейшем сохраните / закройте config.example.js
и переименуй его config.js
4.directions:
4A. Открой config.example.js
файл и в строке 13 изменить exports.FB_URL = process.env.FB_URL || 'https://<YOUR APP>.firebaseio.com';
в exports.FB_URL = process.env.FB_URL || 'https://sneakersearch-az12.firebaseio.com';
4В. Строка 23 - это то, что используется для доступа к service-account.json
файл (пока вы переименовали Unknown file
на шаге 3С просто двигаться дальше)
4C. Строка 64,65,66, это то, что я хочу контролировать, а в строке 67 я добавил fields key
для двоих Firebase Database Keys
Я хочу искать, хотя это не обязательно
exports.paths = [
{
path : "https://sneakersearch-az12.firebaseio.com/searchSnkPath",//line 64
index: "firebase",//line 65
type : "sneakers",//line 66
fields: ['sneakercondition', 'sneakername']//line 67
},
4D. Сохранить / закрыть config.example.js
файл. Теперь переименуйте файл config.js
,
5• узел app.js (запустить приложение)
5.comments:
Вы не будете запускать эту команду до самого конца, поэтому пропустите ее, но есть кое-что, что вы должны знать. Бег node app.js
запускает приложение Heroku на локальном компьютере. Он будет искать ElasticSearch локально, которого у вас нет, поэтому вы получите ошибки соединения. Если вы хотите запустить его локально, вам придется запустить export BONSAI_URL="<your_bonsai_url>"
код на шаге 12B-Необязательно, который необходим для устранения локальных ошибок соединения. Если ваше приложение засыпает / вылетает (опыт в конце), вам придется запустить export BONSAI_URL="<your_bonsai_url>"
команда снова. Кроме того, Heroku автоматически запустит приложение, когда вы добавите к нему код.
-В данный момент для этого шага вам нужно открыть свой app.js
файл и в соответствии с https://docs.bonsai.io/docs/nodejs добавить код. Вы должны добавить код в любом месте после var elasticsearch = require('elasticsearch')
декларация.
/*
this code is already inside the app.js file. You should add the code anywhere below it
var elasticsearch = require('elasticsearch'),
conf = require('./config'),
fbutil = require('./lib/fbutil'),
PathMonitor = require('./lib/PathMonitor'),
SearchQueue = require('./lib/SearchQueue');
*/
//You need to add
var bonsai_url = process.env.BONSAI_URL;
var client = new elasticsearch.Client({
host: bonsai_url,
log: 'trace'
});
// Test the connection...
client.ping({
requestTimeout: 30000,
hello: "elasticsearch"
},
function (error) {
if (error) {
console.error('>>>My Bonsai url is>>>' + bonsai_url)
console.error('>>>Elasticsearch cluster is down!');
} else {
console.log('All is well');
}
}
);
-Направления также говорят, чтобы запустить $ export BONSAI_URL="https://username:password@my-awesome-cluster-123.us-east-1.bonsai.io"
(другими словами export BONSAI_URL="<your_BONSAI_URL>"
) это то, что вы бы сделали, только если вы хотите запустить свое приложение локально, чтобы использовать E S. Это не предназначено для удаленного
5.directions:
5. Откройте app.js
файл и добавьте код ниже и сохраните файл:
var bonsai_url = process.env.BONSAI_URL;
var client = new elasticsearch.Client({
host: bonsai_url,
log: 'trace'
});
// Test the connection...
client.ping({
requestTimeout: 30000,
hello: "elasticsearch"
},
function (error) {
if (error) {
console.error('>>>My Bonsai url is>>>' + bonsai_url)
console.error('>>>Elasticsearch cluster is down!');
} else {
console.log('All is well');
}
}
);
6 • curl -X POST http://localhost:9200/firebase
6.comments:
-Пропустите этот шаг, потому что на данный момент у вас нет местного ES
на вашем процессоре для индексации
6.directions:
6. Пропустить этот шаг
7• CD фонарик
7.comments:
-Не нужно запускать это, вы все равно должны быть внутри вашего flashlight
папка
7.directions:
7. Пропустить этот шаг
8• Heroku Войти
8.comments:
-Открытый терминал
-Вы должны будете ввести свой Heroku
"s email address
а также password.
Когда вы вводите пароль, он будет пустым
8.directions:
8А. бежать: heroku login
8В. В командной строке введите свой email address
а также password
войти в Heroku
9 • Героку создать (добавить героку в проект)
9.comments:
Вот почему вам не нужно было создавать heroku
приложение на шаге 1D. Теперь вы создадите и назовите свое приложение heroku
-После того, как вы введете create
вам нужно ввести любое имя, которое вы хотите, чтобы имя вашего приложения heroku было. т.е. я выбираю название sneakersearchinstanceAtoZ
-После запуска этой команды, если вы вошли в Heroku
и вы должны увидеть имя приложения в списке. Идите в правый угол, нажмите 9 dots
, выбирать Dashboard
9.directions:
9. запустить: heroku create sneakersearchinstanceAtoZ
10 • Герои аддонов: добавить бонсай (установить бонсай)
10.comments:
-Вы должны будете добавить credit card
на ваш Heroku
перед выполнением этого шага, в противном случае после его запуска будет указано, что вы должны это сделать. Это все еще бесплатный план. Я не уверен, что вы можете добавить Bonsai add on
без карточки
-Чтобы добавить кредитную карту, пройдите до правой стороны, нажмите круглый значок, выберите Account Settings
, тогда выбирай Billing
-Ты теперь нужно добавить bonsai
на ваш heroku app
, Вы делаете это, запустив heroku addons:add bonsai --app <your-app-name>
- <your-app-name>
что бы то ни было heroku
имя приложения, которое вы создали на шаге 9
-после того, как вы создадите bonsai cluster
Затем он захочет, чтобы вы открыли кластер, запустив heroku addons:open bonsai
10.directions:
10A. войти Heroku
и добавьте кредитную карту к Billing Page
10B. бежать: heroku addons:add bonsai --app sneakersearchinstanceAtoZ
// то же самое точное имя из шага 9
10С. бежать heroku addons:open bonsai
11• конфигурация heroku (проверьте информацию об экземпляре бонсай и скопируйте ваш новый BONSAI_URL, он понадобится вам позже)
11.comments:
-Бег heroku config
получит все ваши environment variables
и их соответствующие значения. Когда вы видите ваш bonsai's url
скопируйте его значение, оно понадобится вам для шагов 12B и 17
-Точно такой же URL вы увидите на шаге 10C
-The bonsai url
может выглядеть примерно так https://abc123a01:01abc12de45xyz34@xyz-012345.us-east-1.bonsaisearch.net
11.directions:
11А. бежать: heroku config
11В. Скопируйте bonsai url
это возвращается
12• конфигурация heroku: установить FB_NAME= FB_TOKEN="" (объявить переменные окружения)
12.comments:
-12A ТРЕБУЕТСЯ. Вы должны использовать свой проект GoogleService-Info.plist
"s PROJECT_ID
какой FB_NAME
и API_KEY
какой FB_TOKEN
для этого шага
-12B не является обязательным. Если вы хотите подключиться к ElasticSearch
локально запустить это. Вы должны будете установить свой bonsai url
так что бег node app.js
не будет выдавать ошибки соединения. Вы делаете это, запустив: export BONSAI_URL="<your_bonsai_url>"
, Вам нужно будет выполнить эту команду для каждого сеанса терминала или если ваше приложение Heroku засыпает / падает.
-Не используйте пробелы до или после знака равенства
12.directions:
12A (требуется). бежать: heroku config:set FB_NAME=sneakersearch-az12 FB_TOKEN=0012abc789xyz00019
12B(необязательно).run: export BONSAI_URL="https://abc123a01:01abc12de45xyz34@xyz-012345.us-east-1.bonsaisearch.net"
13 • git add config.js (обновление)
13.comments:
-Если вы запустите это, вы можете получить сообщение об ошибке: Следующие пути игнорируются одним из ваших файлов.gitignore: config.js Используйте -f, если вы действительно хотите добавить их.
- Это говорит, чтобы бежать git add config.js
затем добавьте -f
в конце
13.directions:
13А. бежать: git add config.js
13В. Если есть ошибка, запустите: git add config.js -f
14 • git commit -m "настроить бонсай"
14.directions:
14. запустить: git commit -m "configure bonsai"
15• Git Push Heroku Master (развернуть к героку)
15.directions:
15. запустить: git push heroku master
16 • Героку пс: шкала работника =1 (начало работы динамо)
16.comments:
- ответ на то, что делает эта команда, здесь может кто-нибудь объяснить "heroku ps: scale web = 1"
16.directions:
16. запустить: heroku ps:scale worker=1
17• curl -X POST / firebase (например: https://username:password@yourbonsai.bonsai.io/firebase)
17.comments:
- Прежде чем начать этот шаг, прочитайте обновленный ответ @DoesData (ниже мин), чтобы использовать вместо него curl -X PUT
-Схватить bonsai url
вы скопировали с шага 11B
-Вставьте URL после curl -X POST
команда и убедитесь, что вы добавляете /firebase
до конца этого
-Что это делает, это создает индекс с именем /firebase
это указывает на ваш bonsai url
, Открыть свой config.js
файл и искать exports.paths
(строка 62). Это имеет пару ключ / значение с именем index: "firebase"
(строка 65), значение указывает на индекс, который вы только что создали, и оттуда получает доступ к кластеру E S
-В основном в вашем файле config.js, в строке 65 index
значение firebase
должен точно соответствовать имени /firebase
что ваше добавление в конец curl -X POST
команда. Если имена не совпадают, то ничего из этого не будет работать.
- если успешно, вы должны получить этот ответ: {"acknowledged":true}
17.directions:
17. запустить: curl -X POST https://abc123a01:01abc12de45xyz34@xyz-012345.us-east-1.bonsaisearch.net/firebase
18• Теперь пришло время использовать узел шага 5 app.js (запустить приложение)
18.comments:
- Запуск этой команды запустит приложение локально. Вы также можете запустить npm start
но в любом случае он запустится на вашем локальном компьютере, и вам нужно будет выполнить код на шаге 12B(необязательно), чтобы это работало
18.directions
18. запустить: node app.js
19 • установить ваши объекты сопоставления
К вашему сведению Шаг 19 очень важен. Вы ДОЛЖНЫ установить свой ОБЪЕКТ MAPPINGS, и это КЛЮЧИ. У меня не хватает символов, чтобы объяснить это подробно здесь. Это то, что Шаг 4 type
ключ использует для установки. Посмотрите это видео, чтобы объяснить, как настроить mappings object
: https://www.youtube.com/watch?v=h3i3pqwjtjA&feature=youtu.be
19.directions:
19А. --открыть TextEdit
или же Sublime
затем создайте файл и назовите его sneakerfile.json
, Сохраните его и перетащите файл в свой flashlight
папка. Вам нужно .json
расширение.
19В. -В этом файле добавьте следующий код, сохраните и закройте файл:
{
"sneakers": {
"properties": {
"sneakercondition": {
"type": "string"
},
"sneakername": {
"type": "string"
}
}
}
}
//notice this is just like the Swift Sneakers Data Model declared at the beginning
19C. хватай свой BONSAI_URL
бежать heroku config:get BONSAI_URL
, Мой BONSAI_URL - это https://abc123a01:01abc12de45xyz34@xyz-012345.us-east-1.bonsaisearch.net/
19D. бежать: curl -XPOST https://abc123a01:01abc12de45xyz34@xyz-012345.us-east-1.bonsaisearch.net/firebase/sneakers/_mapping -d@sneakerfile.json
19E. бежать: curl -XGET <BONASI_URL>/firebase/sneakers/_mapping?pretty
Закончено с частью 1. Часть 2 подробно объяснит шаг 19
Дополнительная информация-
Героку командует:
Чтобы проверить на вашем dyno
бежать: heroku ps
Если вы получаете следующее, обратитесь к ссылкам ниже
=== web (Free): npm start (1)
web.1: crashed 2017/01/01 12:00:00 -0500 (~ 38m ago)
=== worker (Free): node ./app.js (1)
worker.1: crashed 2017/01/01 12:00:00 -0500 (~ 10m ago)
После создания вашего Heroku app
ваш dyno
находится под Heroku Free Plan
, Это будет в конечном итоге fall asleep
/ crash
если он не используется в течение определенного периода времени. Чтобы остановить сон / сбой следуйте
Простой способ предотвратить Heroku на холостом ходу?
https://devcenter.heroku.com/articles/free-dyno-hours
https://devcenter.heroku.com/articles/dyno-sleeping
Другие команды:
heroku help //help
heroku status //Heroku platform status
heroku logs //displays 100 logs
heroku logs --tail //realtime logs
heroku logs --tail | grep worker //dyno worker logs
heroku ps -a <heroku app name> //how many dyno hrs you have left
heroku config:get BONSAI_URL //gets only your bonsai url
heroku config //all your environment variables
heroku apps:info //your Heroku credentials
Чтобы вернуться к command prompt
Нажмите Ctrl+C
Вы также можете обратиться в службу поддержки Heroku или в службу поддержки бонсай, так как они очень полезны.
Я опубликую часть 2 очень скоро.
Приведенный выше ответ великолепен. Тем не менее, есть слишком много комментариев для моего обновления, чтобы быть полезным там, поэтому я размещаю его здесь.
Если вы выполните вышеуказанные шаги, вы увидите ошибку на шаге:
- запустите: curl -X POST https://abc123a01:01abc12de45xyz34@xyz-012345.us-east-1.bonsaisearch.net/firebase
Более новые версии asticSearch больше не позволяют создавать новый индекс с помощью POST, но вы можете использовать PUT. Итак, вы хотите запустить
curl -X PUT https://abc123a01:01abc12de45xyz34@xyz-012345.us-east-1.bonsaisearch.net/firebase
и ответ должен быть: {"acknowledged":true,"shards_acknowledged":true}
Смотрите этот вопрос для получения дополнительной информации.
Обновить
Я также переключился на Алголию, потому что документация была намного более ясной. Однако я бы сказал, что гибкая поисковая документация остро нуждается в обновлении. Я бы порекомендовал тем, кто интересуется гибким поиском, попытаться развернуть свой код, используя облачные функции Firebase, а не Heroku. Я не смог найти руководство для этого, но код node.js должен быть похожим, за исключением того, что он будет развернут в облаке Firebase вместо Heroku. Это должно сделать процесс намного проще. Вы можете проверить функции облака Firebase здесь