Для начала, нам необходимы следующие ресурсы:
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 -pmysql> 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 nameserver_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 versionfastcgi_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 = zenlixgroup = zenlixlisten.owner = zenlixlisten.group = zenlixphp_admin_value[post_max_size] = 2Gphp_admin_value[upload_max_filesize] = 1Gphp_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)02dcommand=/usr/bin/php /home/zenlix/zenlix/artisan queue:work --sleep=3 --tries=3 --daemonautostart=trueautorestart=trueuser=zenlixnumprocs=8" | sudo tee --append /etc/supervisor/conf.d/zenlix-worker.conf
Перезапустим сервисы:
$ sudo supervisorctl reread$ sudo supervisorctl update$ sudo supervisorctl start zenlix-worker:*
Система готова к работе.