Запуск dotnet приложений на Ubuntu

Проверяем наличие установленной версии dotnet

Если dotnet не установлен, то устанавливаем его согласно инструкции https://docs.microsoft.com/en-us/dotnet/core/install/linux-ubuntu

Читать далее «Запуск dotnet приложений на Ubuntu»

Ошибка Nginx accept() failed (24: Too many open files)

У вас мощный сервер с десятком простых сайтов, клиенты довольны, сайты быстро открываются и регулярно обновляются. Приток посетителей с каждый днем все больше и больше. Но в один прекрасный момент эта идилия закончится, клиенты начнут жаловаться на частое появление ошибки 500. А почему она возникает? Давайте разберемся с одним из случаев.

Любая конфигурация связки apache+nginx с настройками по умолчанию когда-нибудь приведет к регулярному появлению ошибки 500. Почитав логи nginx вы увидите следующее:

Читать далее «Ошибка Nginx accept() failed (24: Too many open files)»

Размеры папок и дисков в Linux. Команды df и du

  • свободное место на диске
df -f # f - опция для вывода в Гб
  • размер папок на диске
du -sh /var/*
  • размер папок на диске с сортировкой
du -sh * | sort -hr
Пояснение параметров:
  • -h в sort — человеко-читаемые размеры (K, M, G)
  • -r — обратный порядок сортировки
  • -n — числовая сортировка

Подключение телефона в Android Studio (Ubuntu)

  • Проверяем что есть подключенное устройство
lsusb
Наше устройство Qualcomm, Inc
  • В папке /etc/udev/rules.d добавляем файл 51-android.rules и добавить туда следующую информацию
ATTR{idProduct}=="9091", SYMLINK+="android_adb", MODE="0660", GROUP="plugdev", TAG+="uaccess", SYMLINK+="android" 

где 9091 — это идентификатор из команды выше (lsusb)

  • Далее добавляем текущего пользователя в группу plugdev
 sudo usermod -a -G plugdev $userId

где userId — логин пользователя.

  • Активируем правила и перезапускаем adb
sudo udevadm control --reload-rules
sudo service udev restart
sudo udevadm trigger 

Оригинал статьи: https://dimitar.me/how-to-connect-your-android-phone-to-ubuntu-to-do-development-testing-installations-or-tethering-updated/

Запуск nodejs служб на ubuntu 18

В директории /lib/systemd/system требуется создать файл с расширением .service

Файл должен содержать следующую информацию

[Unit]
Description=docs service by nodejs
After=network-online.target

[Service]
User=www-data 
Restart=on-failure
WorkingDirectory=/var/www/docs
ExecStart=/usr/bin/node /var/www/docs/bin/www

[Install]
WantedBy=multi-user.target

где,

  • User — имя пользователя от имени которого запускается служба
  • WorkingDirectory — каталог с приложением, где nodejs

После этого требуется перезапустить daemon

systemctl daemon-reload
systemctl restart docs 
systemctl status docs

, где docs имя службы

systemd вместо upstart

В Ubuntu 18 нет upstart и чтобы можно было использовать это механизм нужно научиться работать с systemd

  1. переходим в каталог /lib/systemd/system и внутри него создаем новый сервис, например node_app.service
[Unit] 
Description=hello_env.js - making your environment variables rad
Documentation=https://example.com
After=network.target

[Service]
Environment=NODE_PORT=3001
Type=simple
User=ubuntu # тут нужен пользователь например root (от имени кого запускаем)
ExecStart=/usr/bin/nodejs /home/ubuntu/hello_env.js
Restart=on-failure

[Install]
WantedBy=multi-user.target

Подробнее тут.

sudo systemctl daemon-reload # перезапускаем deamon
sudo systemctl start hello_env

Установка plv8 на postgresql 9.3

На ubuntu 14.04 по умолчанию устанавливается postgresql 9.3. Для установка plv8 требуется:

  • выполнить команду apt-get install postgresql-9.3-plv8
  • выполнить запрос CREATE EXTENSION plv8;

Для тестирования можно создать следующую функцию:

-- FUNCTION: public.plv8_test()
-- DROP FUNCTION public.plv8_test(TEXT[], TEXT[]);
CREATE OR REPLACE FUNCTION public.plv8_test(keys TEXT[], vals TEXT[])
RETURNS json
LANGUAGE 'plv8'
COST 100
VOLATILE
AS $BODY$
var o = {};
for(var i=0; i<keys.length; i++){
o[keys[i]] = vals[i];
}
return o;
$BODY$;
ALTER FUNCTION public.plv8_test(TEXT[], TEXT[])
OWNER TO postgres;
Пример выполнения javascript