Как установить соединение между сервером Couchbase и шлюзом синхронизации Couchbase в Mac OS?

Установление соединения между сервером Couchbase и шлюзом синхронизации Couchbase в Mac OS —

$ ../sync_gateway 
 ==== Couchbase Sync Gateway/1.0.4(34;04138fd) ====

 Configured Go to use all 2 CPUs; `setenv GOMAXPROCS` to override this
 Opening db /sync_gateway as bucket "sync_gateway", pool "default", server <walrus:>
 Opening Walrus database sync_gateway on <walrus:>
 Using default sync function `'channel(doc.channels)'` for database "sync_gateway"
 Starting profile server on 
 ***Starting admin server on 127.0.0.1:4985
 Starting server on :4984 ...***

Я создал файл config.json и попытался подключить его к этому серверу, но по умолчанию это не происходит, он идет к 127.0.0.1:4985.

Может кто-нибудь мне помочь??


person Chethan Pasupuleti    schedule 20.05.2015    source источник


Ответы (1)


Добавьте следующее значение конфигурации в файл config.json:

"adminInterface":"[ВАШ_ПРЕДПОЧТИТЕЛЬНЫЙ_IP_FOR_ADMIN_INTERFACE]:4985",

Поле adminInterface позволяет sync_gateway узнать, на каком IP:ПОРТ запускать интерфейс администратора.

Кроме того, вам нужно указать sync_gateway, где запускать остальные API для корзины (todos в приведенном ниже примере). Как показано в приведенном ниже примере, вы можете сделать это, добавив "server": "http://[COUCHBASE_SERVER_IP]:8091", в конфигурации базы данных.

So,

  1. Вы активируете остальные API администратора на [YOUR_PREFERRED_IP_FOR_ADMIN_INTERFACE]:4985.
  2. Кроме того, sync_gateway будет запускать остальные API для операций CRUD для ведра «todos» на [COUCHBASE_SERVER_IP]:8091.

Вот пример файла конфигурации:

{
  "interface":"192.168.1.117:4984",
  "adminInterface":"127.0.0.1:4985",
  "log": ["CRUD", "REST+", "Access"],
  "facebook": { "register": true },
  "databases": {
    "todos": {
      "server": "http://[COUCHBASE_SERVER_IP]:8091",
      "users": {
        "GUEST": {"disabled": true}
      },
      "sync": 
    `
      function(doc, oldDoc) {
        // NOTE this function is the same across the iOS, Android, and PhoneGap versions.
        if (doc.type == "task") {
          if (!doc.list_id) {
            throw({forbidden : "Items must have a list_id"})
          }
          channel("list-"+doc.list_id);
        } else if (doc.type == "list") {
          channel("list-"+doc._id);
          if (!doc.owner) {
            throw({forbidden : "List must have an owner"})
          }
          if (oldDoc) {
            var oldOwnerName = oldDoc.owner.substring(oldDoc.owner.indexOf(":")+1);
            requireUser(oldOwnerName)
          }
          var ownerName = doc.owner.substring(doc.owner.indexOf(":")+1);
          access(ownerName, "list-"+doc._id);
          if (Array.isArray(doc.members)) {
            var memberNames = [];
            for (var i = doc.members.length - 1; i >= 0; i--) {
              memberNames.push(doc.members[i].substring(doc.members[i].indexOf(":")+1))
            };
            access(memberNames, "list-"+doc._id);
          }
        } else if (doc.type == "profile") {
          channel("profiles");
          var user = doc._id.substring(doc._id.indexOf(":")+1);

          if (user !== doc.user_id) {
            throw({forbidden : "Profile user_id must match docid : " + user + " : " + doc.user_id})
          }
          requireUser(user);
          access(user, "profiles"); // TODO this should use roles
        }
      }
    `
    }
  }
}
person Anish Singh    schedule 06.06.2015