Базовая инсталляция (ZENLIX 3.5)

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

  • 1Gb RAM
  • 10Gb HDD
  • 1 Core CPU

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

Мы будем использовать, в качестве примера OS Ubuntu 18.04.

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

    $ sudo apt-get update
  2. Установим пакет поддержки

    $ sudo apt install -y build-essential

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

$ sudo adduser zenlix
$ sudo usermod -aG sudo zenlix
  1. Установим nginx

    $ sudo apt install nginx
  2. Установим MySQL

    $ sudo apt install mysql-server
  3. Запускаем конфигурирование

    $ sudo mysql_secure_installation

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

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

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

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

    $ sudo mysql -u root -p
    mysql> ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'password';
    mysql> FLUSH PRIVILEGES;
  2. Создадим Базу данных

    mysql> create database zenlix;
    mysql> exit;
  3. Установим 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
  4. Перейдем к конфигурированию nginx:

    $ sudo nano /etc/nginx/sites-enabled/default
server {

    listen 80 default_server;
    listen [::]:80 default_server;
    #root /var/www/html;
    root /home/zenlix/zenlix/public;
    # Add index.php to the list if you are using PHP
    index index.html index.htm index.nginx-debian.html index.php;
        client_max_body_size 256M;
    server_name example.com;
    location / {
        # First attempt to serve request as file, then
        # as directory, then fall back to displaying a 404.
        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;
                fastcgi_pass unix:/var/run/php/php7.2-fpm.sock;
        }
}
  1. Определим пользователя, под которым работает nginx:

    $ sudo nano /etc/nginx/nginx.conf
    user zenlix;
    $ 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
  2. Установим 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
  3. Установим NodeJS

    $ sudo apt install -y nodejs npm
    $ sudo ln -s /usr/bin/nodejs /usr/bin/node
  4. Установим ZENLIX

    $ cd ~/
    $ mkdir zenlix
    $ cd zenlix
    $ git init .
    $ git pull "http://:@git.zenlix.com/snisar/zenlix35.git" master
    $ chmod -R +w ./storage/*
    $ chmod -R +w ./bootstrap/*
    $ chmod -R +w ./nodejs/*
    $ php artisan zenlix:install
  5. Настроим микросервис 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
  6. Добавим задачу в Cron

    $ (crontab -l ; echo "* * * * * /usr/bin/php /home/zenlix/zenlix/artisan schedule:run >> /dev/null 2>&1")| crontab -
  7. Установим и настроим 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:*

Готово!