Install
-------------

0\. SSL certificate already installed on your server.

1\. Commands in target folder:

~~~
git clone https://stels55@bitbucket.org/rsbucket/tabasko-back-end.git .
~~~

If you want to install branch:

~~~
git clone https://stels55@bitbucket.org/rsbucket/tabasko-back-end.git . -b branch_name
~~~

2\. Install vendor (production version): 

~~~
composer install --no-dev
~~~

Install vendor (developer version)

~~~
composer install
~~~

3\. Upload SSL certificate to folder. Folder must have current user rights(not root!)

~~~
/var/www/{username}/data/sert/
~~~

4\. Upload config

5\. Upload database

6\. Start cron 

~~~
php yii cron
~~~

CONFIGURATION
-------------

### Database

Sample

```php
return [
    'class' => 'yii\db\Connection',
    'dsn' => 'mysql:host=localhost;dbname=yii2basic',
    'username' => 'root',
    'password' => '1234',
    'charset' => 'utf8',
];
```

### Config-common.php

Sample

```php

   $db = require(__DIR__ . '/db/db.php');
   $dbAdmins = require(__DIR__ . '/db/db-admins.php');
   $dbManagers = require(__DIR__ . '/db/db-managers.php');
   $dbPointsLog = require(__DIR__ . '/db/db-points-log.php');
   $dbVisitsLog = require(__DIR__ . '/db/db-visits-log.php');
   $paramsSms = require(__DIR__ . '/params/params-sms.php');
   
   
   $config = [
       'id' => 'Tabasko back-end',
       'basePath' => realpath('../../'),
       'bootstrap' => ['log'],
       'language' => 'ru',
       'components' => [
           'cache' => [
               'class' => 'yii\caching\FileCache',
           ],
           'urlManager' => [
               'enablePrettyUrl' => true,
               //'enableStrictParsing' => true, //доступ только к тем правилам которые настроены
               'showScriptName' => false,
           ],
           'mailer' => [
               'class' => 'yii\swiftmailer\Mailer',
               // send all mails to a file by default. You have to set
               // 'useFileTransport' to false and configure a transport
               // for the mailer to send real emails.
               'useFileTransport' => false,
               'transport' => [
                   'class' => 'Swift_SmtpTransport',
                   'host' => 'ssl://smtp.yandex.com',
                   'username' => '{email_login}',
                   'password' => '{email_pass}',
                   'port' => '465', //for yandex smtp
                   //'encryption' => 'tls',
               ],
               /*'htmlLayout' => '@app/mail/layouts/html'*/
           ],
           'log' => [
               'targets' => [
                   [
                       'class' => 'yii\log\FileTarget',
                       'levels' => ['error', 'warning'],
                   ],
                   [
                       'class' => 'yii\log\FileTarget',
                       'levels' => ['info'],
                       'categories' => ['test_category'],
                       'logFile' => '@app/runtime/logs/test_success.log',
                   ],
               ],
           ],
           'db' => $db,
           'dbAdmins' => $dbAdmins,
           'dbManagers' => $dbManagers,
           'dbPointsLog' => $dbPointsLog,
           'dbVisitsLog' => $dbVisitsLog,
           'formatter' => [
               'class' => 'yii\i18n\Formatter',
               'defaultTimeZone' => 'Europe/Kaliningrad',
               //'timeZone' => 'GMT+2',
               'locale' => 'ru',
               'datetimeFormat' => 'php:d.m.Y H:i',
               'dateFormat' => 'php:d.m.Y',
               'timeFormat' => 'php:H:i'
           ]
       ],
       'aliases' => [
           '@imgDomen' => 'https://domain.com',
           '@bower' => '@vendor/bower-asset',
           '@npm'   => '@vendor/npm-asset',
       ],
       'params' => [
           'sms' => $paramsSms,
           //make sure ports are free
           'managerWebsocketPort' => 8030,      
           'managerLocalsocketPort' => 8031,
           'clientWebsocketPort' => 8032,
           'clientLocalsocketPort' => 8033,
           'hostName' => 'domain.com',
           'websocketKey' => 'FL7KrTBsGJyOBYplgeszFNNeoFDE8j', //used for connection to websocket from server side
           'websocketMonitorKey' => 'HTd3678dewh7jfy43warh73j8yFEWA', //used for connection to websocket from client monitoring front side
           'firebaseToken' => 'AAAAKXNa6D0:APA91bF7yXo5sf-DariuQcjORM8ZYwUJAZ93UAcy26vwdtHbJwa1vgMB-zB_jCRVY6oHZHwHGbhkAZKuo4Qm_FC3J2c9_BpsDE6nhNptssx6-siXWuJ7aRwbFBwk3IeRBBNNJtYu0840',
           'dev-ver' => '', //should be empty for production
           'ver' => '1.0.0'
       ],
       'runtimePath' => '@app/runtime',
   ];
   
   $config['components']['websocket'] = [
       'class' => 'app\commands\models\Connection',
       'servers' => [
           'managers' => [
               'class' => 'app\commands\models\ManagerWebsocketDaemonHandler',
               'pid' => '/var/www/{username}/data/tmp/websocket_managers.pid', 
               'websocket' => 'ssl://'.$config['params']['hostName'].':'.$config['params']['managerWebsocketPort'],
               'localsocket' => 'ssl://'.$config['params']['hostName'].':'.$config['params']['managerLocalsocketPort'],
               'secure' => true,
               'cert_file' => '/var/www/{username}/data/sert/certificate.crt',
               'ca_file' => '/var/www/{username}/data/sert/ca_bundle.crt',
               'pk_file' => '/var/www/{username}/data/sert/private.key'
           ],
           'clients' => [
               'class' => 'app\commands\models\ClientsWebsocketDaemonHandler',
               'pid' => '/var/www/{username}/data/tmp/websocket_clients.pid',
               'websocket' => 'ssl://'.$config['params']['hostName'].':'.$config['params']['clientWebsocketPort'],
               'localsocket' => 'ssl://'.$config['params']['hostName'].':'.$config['params']['clientLocalsocketPort'],
               'secure' => true,
               'cert_file' => '/var/www/{username}d/data/sert/certificate.crt',
               'ca_file' => '/var/www/{username}/data/sert/ca_bundle.crt',
               'pk_file' => '/var/www/{username}/data/sert/private.key'
           ]
       ],
   ];

```

