Skip to content

Instantly share code, notes, and snippets.

@Samorai
Last active September 14, 2017 10:15
Show Gist options
  • Save Samorai/14de11d1554933cc80db8bca3f55ecb2 to your computer and use it in GitHub Desktop.
Save Samorai/14de11d1554933cc80db8bca3f55ecb2 to your computer and use it in GitHub Desktop.
Пошаговая установка и настройка gandalf.api + gandalf.web + serega на одном сервере

#Пошаговая установка и настройка gandalf.api + gandalf.web + serega на одном сервере ##Gandalf.api

  • Необходимо включить автоапдейт пакетов
    • apt-get install unattended-upgrades
    • содержание файла /etc/apt/apt.conf.d/10periodic должно быть следующим:
  APT::Periodic::Unattended-Upgrade "1";
  APT::Periodic::Update-Package-Lists "1";
  APT::Periodic::Download-Upgradeable-Packages "1";
  APT::Periodic::AutocleanInterval "7";
  • содержание файла /etc/apt/apt.conf.d/20auto-upgrades
Unattended-Upgrade::Allowed-Origins {
    "${distro_id}:${distro_codename}-security";
};
  • Меняем ssh порт для входа с 22 на 2020
    • nano /etc/ssh/sshd_config
    • замените Pоrt 22 на Port 2020
    • service ssh restart
  • На сервере должны быть эти папки: "/www", "/var/www", "/var/www/.ssh", "/var/log", "/var/log/www", пользователь и группа у них www-data
  • Установите nginx
    sudo apt-get install nginx
    
  • Установите mongodb следуя этим инструкциям https://docs.mongodb.com/v3.2/tutorial/install-mongodb-on-ubuntu/
  • Установите php56 и сопутствующие пакеты
      sudo apt-get install php5-fpm php5-cli php5-curl php5-mongo
    
  • Скачайте и установите глобально composer следуя этой инструкции https://getcomposer.org/doc/00-intro.md#globally
  • Скачайте и настройте исходный код gandalf.api
    cd /www
    sudo -Hu www-data git clone -b forza_prod_version https://github.com/Nebo15/gandalf.api.git
    cd /www/gandalf.api
    sudo -Hu www-data composer install
    sudo -Hu www-data cp .env.example .env
    
    • Установите нужные значения в .env - из имен переменных понятно к чему каждая относится
  • Конфигурация nginx для gandalf.api исходя из вышеизложенных настроек и с учетом того, что фронтенд будет находиться на том-же сервере, что и api
server {
  listen 81;

  add_header 'Access-Control-Allow-Origin' *;
  add_header 'Access-Control-Allow-Methods' 'GET, POST, OPTIONS, PUT, DELETE';
  add_header 'Access-Control-Allow-Headers' 'Authorization,Content-Type,Accept,Origin,User-Agent,DNT,Cache-Control,Keep-Alive,If-Modified-Since,X-Project-ID,X-Date,X-Accept-Charset,X-Application-ID,X-Device-Information,X-Application-Secret-Hash,X-Device-Push-Token,X-Application';
  add_header 'X-Frame-Options' 'DENY';
  if ($request_method = OPTIONS ) {
  return 200;
  }
  root /www/gandalf.api/public;

  location / {
    index index.php;
    try_files $uri $uri/ /index.php?$query_string;
  }

  location ~ ^\/index\.php$ {
    include fastcgi_params;
    try_files $fastcgi_script_name =404;
    fastcgi_split_path_info ^(.+\.php)(/.+)$;
    fastcgi_index index.php;
    fastcgi_param HTTP_X_REAL_IP $http_x_real_ip;
    fastcgi_param HTTP_X_FORWARDED_FOR $http_x_forwarded_for;
    fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
    fastcgi_pass 127.0.0.1:9000;
  }
}
  • После перезапуска nginx - проверьте корректность настройки выполнив команду: curl -X GET 127.0.0.1:81 - ответ должен быть: ok

##gandalf.web

в данном описании настройки сервера будут опущены, так как они все должны быть выполнены для установки gandlf.api пункты 1 - 4
  • Устанавливаем npm
    apt-get install npm
    
  • Устанавливаем необходимые npm пакеты глобально
    npm install -g n bower gulp
    
  • Ставим нужную версию node при помощи n пакета
    /usr/local/bin/n v5.10.1
    
  • Устанавливаем compass
    apt-get install ruby-dev
    gem install compass --pre
    
  • В папку www скачайте и соберите код
    sudo -Hu www-data git clone -b master-forza https://github.com/Nebo15/gandalf.web.git
    cd /www/gandalf.web
    sudo -Hu www-data npm install
    sudo -Hu www-data bower install
    
    • Сконфигурируйте файл settings/config.json - указав endpoint - Ваш ИП + порт 82
    sudo -Hu www-data gulp build
    
  • Конфигурация nginx для gandalf.web с учетом того, что gandalf.api сконфигурировано полностью по вышеописаным рекомендациям
server {
 listen 82;
 server_name scoring.forza.md;

  gzip on;
  gzip_types text/css text/plain application/javascript application/json;

  location / {
  root /www/gandalf.web/www;
  index index.html;
  charset utf-8;
  }

  location ~ ^/api/(?<api_path>.*)$ {
  set $proxy_host_name "127.0.0.1";
  set $proxy_api_path "/api/";
  set $proxy_host_scheme "http";
  set $proxy_host_port ":81";

  resolver 8.8.8.8;
  proxy_set_header Host $proxy_host_name;
  proxy_set_header X-Real-IP $remote_addr;
  proxy_set_header X-Scheme $scheme;
  proxy_set_header X-Forwarded-Proto $scheme;
  proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
  proxy_pass $proxy_host_scheme://$proxy_host_name$proxy_host_port$proxy_api_path$api_path?$query_string;
  proxy_redirect off;
  }

}
  • Перезапустите nginx и проверьте корректность настройки. Перейдите по адресу: ИП:82, в форме введите admin:admin - должен появиться внутренний интерфейс gandalf.

##serega #####в данном описании настройки сервера будут опущены, так как они все должны быть выполнены для установки gandlf.api пункты 1-7

  • Скачайте и настройте исходный код serega

    cd /www
    sudo -Hu www-data git clone https://github.com/Nebo15/mbank.api.serega
    cd /www/mbank.api.serega
    sudo -Hu www-data composer install
    sudo -Hu www-data nano .env
    
    APP_ENV=local
    APP_DEBUG=false
    APP_KEY=f9g&Y5o-n>&e2~&(^i_orBDWgx=#
    APP_TIMEZONE=UTC
    APP_LOCALE=en
    APP_FALLBACK_LOCALE=en
    
    DB_NAME=serega
    
    CACHE_DRIVER=array
    SESSION_DRIVER=cookie
    
    API_MONITORING_SECRET=ZidgJjnqu6CUTRCX76sNj2f7
    API_FORZA_SECRET=S-e-P7b_-W1@9zL@SEmdP1
    API_FORZA_SENDER_NAME=FORZA
    API_FORZA_TWILIO_ACCOUNT_SID=AC0be53de0fc56264ddf0536f52aa27e32
    API_FORZA_TWILIO_TOKEN=710a4d43611dbe229136d5600fda5bac
    
    MOLDCELL_PROVIDER_ID=212b4401-3932-4c36-b114-4f67696e30d5
    MOLDCELL_DEFAULT_LANGUAGE=ro
    
  • Сконфигурируйте nginx

server{
  listen 80 default_server;
  server_name sms.forza.md;

  set $php 127.0.0.1:9000;
  set $root_path /www/mbank.api.serega;

  access_log /var/log/sandbox.sms.access.log;
  error_log /var/log/sandbox.sms.error.log;

  include /www/mbank.api.serega/nginx.conf;
}
  • Перезапустите nginx, при выполнении curl -X GET 127.0.0.1:80 вы должны получить:
<h1>Serega</h1><a href="https://github.com/Nebo15/mbank.api.serega">Documentation GitHub</a>
  • Установите для пользователя www-data два крона:
sudo -Hu www-data crontab -e
* * * * * /www/mbank.api.serega/vendor/bin/drunken --config="/www/mbank.api.serega/drunken.config.php" do
0,15,30,45 * * * * /www/mbank.api.serega/vendor/bin/drunken --config="/www/mbank.api.serega/drunken.config.php" clear

##faktura #####в данном описании настройки сервера будут опущены, так как они все должны быть выполнены для установки gandlf.api пункты 1-7

  • Скачайте и настройте исходный код serega

    cd /www
    sudo -Hu www-data git clone https://github.com/Nebo15/faktura.api.git
    cd /www/faktura.api
    sudo -Hu www-data composer install
    sudo -Hu www-data nano .env
    
    APP_ENV=local
    APP_DEBUG=true
    APP_KEY=zSYd65N1YhcHCEUdm+J=Ig0=
    APP_LOCALE=en
    APP_FALLBACK_LOCALE=en
    
    DB_CONNECTION=mongodb
    DB_HOST=localhost
    DB_PORT=27017
    DB_DATABASE=faktura
    DB_USERNAME=
    DB_PASSWORD=
    
    CACHE_DRIVER=array
    SESSION_DRIVER=array
    QUEUE_DRIVER=array
    
    MAMBU_API_URL=https://credits2all.sandbox.mambu.com/api/
    MAMBU_API_USER=api_disbursement
    MAMBU_API_PWD=91gchOOGsM
    
    PASSWORD_ADMIN=On.7-R_g
    PASSWORD_FAKTURA=jLpRz4eHstm~
    PASSWORD_VICTORIA=xtaB@uHZignu
    
  • Сконфигурируйте nginx

server {
   listen 85;
   root /www/faktura.api/public;

   include /www/faktura.api/config/nginx/nginx.conf;
}
  • Перезапустите nginx, при выполнении curl -X GET 127.0.0.1:85 вы должны получить:
{"meta":{"code":401,"msg":"ERR_UNAUTHORIZED"}}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment