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

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

  • 1Gb RAM

  • 10Gb HDD

  • 1 Core CPU

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


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


  1. Необходимо обновить дерево пакетов
    $ sudo apt-get update


  2. Установим пакет поддержки
    $ sudo apt install -y build-essential


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


  4. Установим MySQL
    $ sudo apt install mysql-server

    4.1 Запускаем конфигурирование
    $ sudo mysql_secure_installation

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

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

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

    4.2 Меняем тип авторизации $ sudo mysql -u root -p

    mysql> ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'password';

    mysql> FLUSH PRIVILEGES;
    4.3 Создадим Базу данных
    mysql> create database zenlix;

    mysql> exit;


  5. Установим 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


  6. Перейдем к конфигурированию 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;

       }


}



Определим пользователя, под которым работает 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


  1. Установим 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



  1. Установим NodeJS

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


  1. Установим 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



  1. Настроим микросервис 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


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

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

  2. Установим и настроем 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:*



Готово!