pacman -u
— обновить список пакетовpacman -S <packname>
— установить пакетpacman -R <packname>
— удаление конкретного пакета
Категория "Поддержка":
Центр поддержки клиентов
Docker справочник cli
docker images
— показать все локальные образы dockerdocker rmi [-f] <id|label>
— удалить образ c локальной машиныdocker rmi -f $(docker images -q)
— удалить все докер образыdocker build [-t <label>] <path>
— построить образ на основе докерфайлаdocker run [-dt] [--name <name>] [-v <path:path>] [-p <port:port>] [--...] <id|label> [cmd]
— запустить образ в контейнере c cmd-командой (необязательно)-
-d
— в фоновом режиме-t
— прикрепляет к контейнеру терминал-i
— перенаправляет ввод/вывод на текущий терминал--name
— явно указать имя контейнера, по которому можно будет обращаться к нему (иначе будет сгенерировано рэндомно)-p <external_port:internal_port>
— проброс портов-v --volume <external_path:internal_path>
— монтирует папки хоста в контейнер--rm
— удаляет контейнер после завершения работы--memory <n>
— позволяет указать количество ОЗУ, доступной контейнеру-P
— пробрасывает все порты контейнера в хост-систему--expose
— позволяет пробросить несколько портов из контейнера в хост-систему-e <"FOO=bar">
— добавляет переменную окружения в контейнер
-
docker ps [-a]
— показать все запущенные [существующие] докер контейнеры- `docker ps -q | xargs docker stats —no-stream` — посмотреть ресурсы, потребляемые запущенными контейнерами
docker stop <name>
— останавливает указанный образ (с сохранением данных)docker kill <name>
— то же самое без сохранения данныхdocker rm <name>
— удаляет указанный контейнерdocker attach <name>
— подключиться к выбранному докер-контейнеруdocker exec [-ti] <name> <cmd>
— выполняет команду в докер-контейнереdocker push <imagename>
— отправить образ в удаленный реестр
Деплой на heroku
Развертывание:
Heroku — достаточно крутой сервис. У них есть свой собственный cli, который включает в себя множество консольных инструментов, в том числе для работы с git, docker и ssh. И есть несколько способов деплоя приложения:
- Деплой непосредственно в dynos-ы — легкие изолированные контейнеры (environments) с использованием готовых buildpack-ов. На странице быстрого старта есть достаточно простые инструкции, которые позволят автоматически развернуть бойлерплейт популярного фреймворка с со страницы хероку на гитхабе, внести несколько изменений и задеплоить на сервер (например, для джанго). Особенности:
- Деплой статики через
whitenoise
- Медиа файлы (и, вероятно, файлы в целом) не сохраняются в контейнере (не проверено)
- Не поддерживает sqlite (не проверено)
- Дефолтная бд —
postgresql
- Дополнительные сервисы системы можно устанавливать только в рамках существующих
buildpack
-ов
- Деплой статики через
- Деплой через docker — это деплой готового докер-контейнера.
Список основных команд:
heroku login
— залогиниться на сервере heroku с локальной машиныheroku create [--buildpack heroku/buildpackname]
— создать новое приложение heroku: cоздает новое приложение c репозиторием на сервере heroku и одновременно добавляет ссылку на удаленный репозиторий в локальный git remotegit push heroku main
— обычнаяgit push
команда, которая отправит на heroku изменения и автоматически запустить pipline (для django по дефолтуpip install -r requirements && python manage.py collectstatic
и запуск/перезапуск веб-сервера (по дефолтуgunicorn
))heroku logs --tail
— показать последние логи с сервера (терминальную сессию)heroku ps
— показывает остаток по месячной квоте и список запущенных процессовheroku ps:scale web=1
— запустить buildpack, указав явно тип;heroku ps:scale web=0
— остановить buildpack c явным указанием типа, предопределенного в Procfile.heroku open
— открыть приложение в браузереheroku local web
— запустить web buildpack локально на сервере разработкиheroku addons
— посмотреть расширения (addons) приложения на heroku (по дефолту только postresql). Addons — это преопределнные доступные удаленные сервисы на хероку, которые работают независимо от вашего dynos (либо контейнера)heroku addons:create <add-on name>
— добавить add-on.heroku run <cmd>
— запустить linux приложение или shell скрипт в терминале dynos, перенаправив ввод/вывод на текущий терминалheroku config:set VARNAME=value [-a <appname>]
— устанавливает переменную окружения на сервере [для конкретного приложения, напримерblooming-hollows-52049
]heroku config
— посмотреть все переменные окружения. По дефолту содержитDATABASE_URL
c атрибутами дефолтной базы данныхheroku pg
— посмотреть детальную информацию об используемой базе данных (postgres). См так же heroku pg:psqlheroku buildpacks:set <heroku/buildpack_name>
— установка buildpack для приложенияheroku buildpacks:remove <heroku/buildpack_name>
— удалить buildpack из приложенияheroku buildpacks:clear
— сбросить на дефолтный buildpackheroku buildpacks:add --index 1 <heroku/nodejs>
— добавить дополнительный пакет сборкиheroku buildpacks
— посмотреть все установленные buildpack-и текущего приложенияheroku help buildpacks
— справка по командеbuildpacks
;heroku plugins:install heroku-builds
— установка плагина (не должен превышать квоты 500 мб)heroku container:login
— авторизоваться в реестре контейнеров herokuheroku container:release [-a evening-tundra-50688 web]
— полагаю, что запустить контейнер [для конкретного приложения с указанным типом]heroku stack
— посмотреть какой стэк использует ваше приложениеheroku stack:set <stackname> -a <appname>
— установить стэк для приложения, например `heroku stack:set container -a evening-tundra-50688`- `heroku update beta` — обновить heroku до beta (либо обновить канал бета (прим. переводчика))
- `heroku git:remote -a <appname>` — насколько я понял, добавить ссылку на удаленный репозиторий хероку в приложение
- `heroku auth:token` — авторизоваться через сторонний сервис
Особенности бесплатного хостинга:
- ограничение по времени работы до 550 часов в месяц
- сервер засыпает после секунд простоя, следующий запрос будет дольше (вероятно, несколько секунд)
- ограниченный размер — до 500 мб
- домен третьего уровня (можно докупить отдельно)
Дополнительно:
- Buildpack для selenium;
- Buildpack chromedriver;
- Buildpack google chrome;
Полезные ссылки:
Настройка postgresql с django
Установка Postgresql
- Для начала установим саму postgresql и ее утилиты cli
sudo apt install postgresql postgresql-contrib
- По дефолту posgresql развернется с пользователем postgres. Теперь можно переключиться на пользователя postgres:
sudo -i -u postgres
и войти в консоль postresql:psql
- Задаем пароль для текущего пользователя
\password postgres
- Выходим командой
\q
и создадим новую базу данных так:createdb <dbname>
либо так из cli psql:
create database first_db owner hostgeek_db;
- Cоздадим нового пользователя postgresql:
createuser --interactive
либо так из cli psql:
create user <hostgeek_db> with password <'testpassword18'>;
Другие команды postgresql:
\q
— выход- `\conninfo` — инфо о текущем пользователе
sudo -u postgres psql
— вход в консоль postgresql одной строкой
Полезные ссылки: установка postgresql на linux, и настройка с джангой,
django cli
Команды cli для django
py manage.py createapp [appname]
— создать новое приложение в текущем проектеpy manage.py makemigrations [appname]
— генерация файла миграции в приложенияхpy manage.py migrate
— генерация схемы БД на основе [файлов миграций] моделейpy manage.py createsuperuser
— создание супер администратораpy manage.py test [packname]
— запуск тестов [конкретного пакета/приложения] проектаpy manage.py collectstatic
— объединение всех статических файловpy manage.py dumpdata [appname[.model]] [--format xml] > dump.json
— сделать дамп базы данныхpy manage.py loaddata mydata.json
— загрузить данные из дампаpy manage.py flush
— удаляет все данные из базы данныхpy manage.py dbshell
— войти в командную оболочку используемой базы данныхpython manage.py check [appname]
— сделать проверку на распространенные ошибкиpy manage.py help
— показать список всех доступных команд
Дополнительно:
cli для sqlite:
(sqlite3
)
sqlite [db_filename] .dump > dump.sql
— сохранить дамп базы данных в файл либо из shell:.output dump.sql .dump
sqlite3 [db_filename] < dump.sql
— загрузить из дампа в базу данных. Либо из shell.read dump.sql
cli для mysql:
(`mysql`)
cli для pgsql:
(psql
)
Конверторы между базами данных
- mysqltosqlite конвертор — конвертирует дамп из mysql в sqlite-совместимый формат
- mysqltopgsql конвертор — конвертирует дамп из mysql в pgsql-совместимый формат
PS:
Экспорт и импорт данных в джанго
При миграции джанго вы можете столкнуться с тем, что необходимо сделать неполный дамп и накатить его на пустую бд, например, так: `py manage.py dumpdata —exclude=relevance_tests —indent 4 > dump.json`. Однако, на практике это может оказаться не так просто и вас могут поджидать множество `UNIQUE` и FOREIGN
constraint failed: django_site.domain
, поскольку джанга будет следить за целостностью данных и уникальностью ключей. А прежде, чем накатить данные, вам необходимо будет сделать миграции для новой бд:
py manage.py migrate
Однако миграции не просто создают схему для базы данных, но и заполняют некоторые из этих таблиц. А именно auth_permission, sites и content_types, и при попытке записать данные поверх уже существующих данных с теми же ключами, мы имеем то, что имеем. Поэтому при дампе эти таблицы необходимо исключить приложения:
py manage.py dumpdata --exclude=sites --exclude=contenttypes --exclude=my_app --indent 4 > dump.json
Второй нюанс заключается в кодировке. В моем случае получившийся дамп надо было вручную перегнать в utf-8, иначе loaddata его принимала.
Есть и еще один нюанс. В примере выше, вы вероятно, заметили, что я не перечислил приложение auth, в котором лежит модель permissions, и сделал это сознательно, поскольку хотел экспортировать пользователей. Теперь чтобы избежать конфликта ключей, для loaddata необходимо явно исключить таблицу permission из:
py manage.py loaddata --exclude=auth.permission data.json
Так же стоит обратить внимание на ключ —natural-foreign. В официальной документации рекомендуют его использовать при дампе Permission и ContentType моделей.
Утилиты linux
rsync
- -v — выводит подробную информацию о процессе копирования;
- [-a] — сохраняет все атрибуты оригинальных файлов;
- -u — не перезаписывать более новые файлы;
- -l — копирует символьные ссылки;
- -L — копирует содержимое ссылок;
- -p — сохраняет права для файлов;
- -t — сохраняет время модификации;
- -e — использовать другой транспорт, например, ssh;
- [-z] — cжимает файлы перед передачей;
- —recursive — перебирать директории рекурсивно;
- —exclude — Исключить файлы по шаблону;
Примеры:
rsync -avz skillproject/data/ .
— из подкаталога в текущий каталогrsync -avz skillproject/data/ aaa/
— из подпапки в подпапкуaaa/
rsync -avz skillproject/data/ digita6d@digita6d.beget.tech:/home/d/digita6d/code-skills.ru/public_html/sources/skillproject/data/
— передача на удаленный серверrsync -avze ssh skillproject/data/ digita6d@digita6d.beget.tech:/home/d/digita6d/code-skills.ru/public_html/sources/skillproject/data/
— то же самое м явным указанием ssh
ss
- -l или —listening — посмотреть только прослушиваемые порты;
- -p или —program — показать имя программы и ее PID;
- -t или —tcp — показать tcp порты;
- -u или —udp показать udp порты;
- -n или —numeric показывать ip адреса в числовом виде.
Примеры:
- `ss -tlpn` — проверить все прослушивающие tcp-порты
ss -tulpn | grep :80
— показать все процессы, работающие на 80-м порту
ps
ps -ef | grep phantom
— найти все процессы с именем `phantom`- `
dpkg
Пакетный менеджер для debian систем (не путать с системой управления пакетами — apt
/apt-get
)
dpkg -s <packname>
— проверить, установлен ли пакетdpkg -l
— список всех пакетовdpkg -l | grep apache2
— проверить, установлен ли конкретный пакетdpkg -i <package.deb>
— установить пакет
См так же краткий ликбез.
Основы pip
Шпаргалка для pip
pip install package_name [package_name [package_name]]
— установить пакет или список пакетовpip install package_name==x.x
— установить пакет конкретной версииpip install -r requirements.txt
— установка пакетов из указанного файлаpip install git+https://github.com/Sanshain/tortoise-orm.git[@name]
— установить пакет с гитхабpip freeze > requiremrnts.txt
— сохранить список пакетов окружения в файлpip list
— вывести список пакетов в консольpip install [package_name ] -U
— обновить пакетpip uninstall package_name [package_name [package_name]]
— удалить пакет или список пакетовpip show package_name
— показать зависимости пакетовpip -V
— показать установленную версию pip
DLang. Быстрый старт
Полезные ссылки
- Опции cli при компиляции и сборке через пакетный менеджер dub,
- Составление конфиг-файла для dub-проекта,
- Опции cli компилятора dmd,
- Ссылка на lldb-mi дебаггер
- Ссылка на mago-mi дебаггер (у меня завелся только под Windows для x86 сборок либо как интегрированный в DLangIDE (чуть чуть удобнее блокнота, автокомплит только после точки), в рамках последнего работает частично — показывает значения только для значимых типов)
- Пример использования gdb (поставляется вместе с gcc) в консоли. На примере nim наглядно. Отлично интегрируется в VSCode на линукс (рекомендуется).
- Ссылка на ldc2 компилятор
- Ссылка для gdc (для Windows только x64)
- Предкомпилированные константы для условной компиляции
Замечания автора
- С intelligeIdea автокомплит у меня так и не заработал либо я не разобрался (зато есть подсветка синтаксиса и удобная настройка опций компилятора в ui ( которые не уверен,что применяются )
- С VisualD не заработала отладка (автокомплит включается в настройках, ограниченный, но есть подсказка доков однотонным шрифтом. В VSCode подсказки лучше, но можно использовать как простенький редактор)
Настройка MySQL для django
Для этого необходимо выполнить несколько пунктов
- Скачать, установить и запустить mysql службу: если у вас свежая ubuntu, то ставим через apt:
sudo apt install mysql-server mysql-client
, для Windows — качать отсюда. Ставить mysql cli не обязательно. Необходимы mysql server и mysql client. Workbench — по желанию - После установки запустить службу. В Windows —
net start [имя_службы]
(имя службы задается в мастере установки) - Открыть MySQL command line client и выполнить команду
CREATE DATABASE 'someapp' DEFAULT CHARACTER SET utf-8
- Установить пакет для python для взаимодействия с mysql:
pip install mysqlclient
- Указать настройки для django в settings.py:
'default': { 'ENGINE': 'django.db.backends.mysql', 'NAME': 'someapp', 'USER': 'root', 'PASSWORD': 'psw', 'HOST': 'localhost', 'PORT': '3306', }
- Сделать миграции:
python manage.py makemigrations python manage.py migrate
Запускаем python manage.py runserver
. Профит.
Так же стоит обратить внимание на mysql shell
MySQL Cli
Очень часто на серверах у нас нет графического интерфейса или какого-либо его подобия и работать приходится через консоль. Ниже приведен список наиболее распростарненных команд для работы с MySQL через командную оболочку:
mysql -V
— просмотреть версию установленной mysqlservice mysql start
— запустить mysql службуmysql -u<root> -p<pass>
— смена рут пароля пользователя (например, `mysql -uroot -p123`)mysql -h 127.0.0.1 -u root -p
— старт консольного mysql-клиентаmysqld_safe -skip-grant-tables
— подключение к серверу mysql без проверки пароля (с отключенными таблицами безопасности)show databases;
— показать все существующие mysql базы данныхcreate database [dbname] default character set utf8;
— создать бдdrop database [dbname];
— удалить базу данныхuse [database_name]
— выбрать базу данных для работыshow tables;
— показать все существующие таблицы в текущей базе данныхselect [] \G
— вывод содержимого таблицы (запроса) в адаптивном форматеmysqldump -u [username] -p [password] [[database] tablename] > [dump_name.sql]
— сделать дамп базы. Например:mysqldump -u root -p code_skills > mysql_dump.sql
— запросит пароль и после его подтверждения сохранит дамп из базы данныхcode_skills
в файлmysql_dump.sql
. Так же можно экспортировать и отдельную таблицуmysql -u [username] -p [password] [database] < [dump_to_restore.sql]
— развернуть базу из дампа (файла)mysqldump -u[user] -p[password] -h[host] [database] [table_name] --no-data > /path/dump_name.sql
— сделать дамп конкретной таблицы. Например, таблицы users:mysqldump -uroot mydatabase users > users.dump.sql
mysql -uroot database_name < users.dump.sql
— развернуть дамп для конкретной таблицыmysql -u [user] -p -e "SELECT * FROM [table_name] [WHERE ...]" [ > filename]
— экспортировать отдельную таблицу непосредственно из mysql (альтернативный способ)mysql -u [user] -p LOAD DATA [filename]
— загрузить дамп таблицы в базу данных (альтернативный способ)
Полезные ссылки раз,
Для Windows:
net start MySQL80
— запуск сервера MySQLnet stop MySQL80
— остановка сервера MySQL