Базовая инсталляция

На примере OS Ubuntu 18.04 server

Для начала, нам необходимы следующие ресурсы:

  • 1Gb RAM

  • 10Gb HDD

  • 1 Core CPU

Если Вы используете DigitalOcean, то самый минимальный droplet подойдёт для небольшого к-ва пользователей (до 20).

Необходимо обновить дерево пакетов:

$ sudo apt-get update

Установим пакет поддержки build-essential:

$ sudo apt install -y build-essential

Добавим пользователя zenlix:

$ sudo adduser zenlix
$ sudo usermod -aG sudo zenlix

Установим nginx:

$ sudo apt install nginx

Установим MySQL:

$ sudo apt install mysql-server

Сконфигурируем сервер:

$ sudo mysql_secure_installation

В процессе скрипт спросит о конфигурации VALIDATE PASSWORD PLUGIN, на что можно ответить отрицательно (на Ваше усмотрение)

Далее задайте пароль для root-пользователя.

В MySQL 5.7 и выше, по-умолчанию используется auth_socket плагин. Если Вы планируете подключаться под root из терминала, то необходимо изменить метод аутентификации auth_socket на mysql_native_password.

Меняем тип авторизации:

$ sudo mysql -u root -p
mysql> ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'password';
mysql> FLUSH PRIVILEGES;

Создадим базу данных:

mysql> create database zenlix;
mysql> exit;

Установим PHP и все необходимые модули:

$ sudo apt install -y php-fpm php-mysql php-mcrypt mcrypt \
php-zip php-curl php-gd php-ldap php-imap php-mbstring php-dom

Перейдем к конфигурированию nginx:

$ sudo nano /etc/nginx/sites-enabled/default
server {
listen 80 default_server;
listen [::]:80 default_server;
root /home/zenlix/zenlix/public;
index index.html index.htm index.nginx-debian.html index.php;
client_max_body_size 256M;
#Change server name
server_name example.com;
location / {
try_files $uri $uri/ /index.php?$query_string;
}
location /socket.io {
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_http_version 1.1;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Host $host;
proxy_pass http://127.0.0.1:3001/socket.io/;
}
location ~ \.php$ {
include snippets/fastcgi-php.conf;
fastcgi_param SERVER_NAME $host;
# Change PHP-fpm version
fastcgi_pass unix:/var/run/php/php7.2-fpm.sock;
}
}

Определим пользователя, под которым работает nginx в файле: nginx.conf

$ sudo nano /etc/nginx/nginx.conf
...
user zenlix;
...

А так же исправим на пользователя в файле www.conf:

$ sudo nano /etc/php/7.2/fpm/pool.d/www.conf
user = zenlix
group = zenlix
listen.owner = zenlix
listen.group = zenlix
php_admin_value[post_max_size] = 2G
php_admin_value[upload_max_filesize] = 1G
php_admin_value[memory_limit] = 2G

Перезапустим службы:

$ sudo nginx -t
$ sudo systemctl reload nginx
$ sudo service php-fpm restart

Установим REDIS:

$ wget http://download.redis.io/releases/redis-stable.tar.gz
$ tar xzf redis-stable.tar.gz
$ cd redis-stable
$ make
$ sudo make install
$ cd utils
$ sudo ./install_server.sh
$ sudo update-rc.d redis_6379 defaults

Установим NodeJS:

$ sudo apt install -y nodejs npm
$ sudo ln -s /usr/bin/nodejs /usr/bin/node

Инсталлируем ZENLIX

$ cd ~/
$ mkdir zenlix
$ cd zenlix
$ git init .
$ git pull "https://<LICENSE-LOGIN>:<LICENSE-PASSWORD>@git.zenlix.com/snisar/zenlix35.git" master
$ chmod -R +w ./storage/*
$ chmod -R +w ./bootstrap/*
$ chmod -R +w ./nodejs/*
$ php artisan zenlix:install

Настроим микросервис NodeJS и запустим zenserver:

$ sudo npm install dotenv --save -g
$ sudo npm install pm2 -g
$ sudo npm install socket.io ioredis dotenv
$ sudo pm2 start server.js -n zenserver --watch /home/zenlix/zenlix/nodejs
$ sudo pm2 startup
$ sudo pm2 save
$ sudo pm2 install pm2-logrotate

Добавим задачу в Cron:

$ (crontab -l ; echo "* * * * * /usr/bin/php /home/zenlix/zenlix/artisan schedule:run >> /dev/null 2>&1")| crontab -

Установим и настроим supervisor:

$ sudo apt install supervisor
$ echo "
[program:zenlix-worker]
process_name=%(program_name)s_%(process_num)02d
command=/usr/bin/php /home/zenlix/zenlix/artisan queue:work --sleep=3 --tries=3 --daemon
autostart=true
autorestart=true
user=zenlix
numprocs=8
" | sudo tee --append /etc/supervisor/conf.d/zenlix-worker.conf

Перезапустим сервисы:

$ sudo supervisorctl reread
$ sudo supervisorctl update
$ sudo supervisorctl start zenlix-worker:*

Система готова к работе.