Alpine linux install git

Development using git

It should be renamed to Git. All git development articles should be consolidated (Discuss)

This document describes how to use git for Alpine Linux development and related projects. If you just want to browse the Alpine git repositories, please visit git.alpinelinux.org.

Contents

Basic Git usage

Configure your global git config

First you need to tell your name and email to git. This name and email will show up in all your commits.

git config —global user.name «Your Name Comes Here» git config —global user.email you@yourdomain.example.com

Using git config without --global let you configure other details for a specific git repository.

git config —global color.ui true git config —global core.pager more

Email configuration

To be able send your commits (patches) via email you need configure an SMTP server.

git config —global sendemail.smtpserver smtp.exmaple.com

For sending from a gmail address you can do:

git config —global sendemail.smtpserver smtp.gmail.com git config —global sendemail.smtpserverport 587 git config —global sendemail.smtpencryption tls git config —global sendemail.smtpuser your_email@gmail.com

Optionally, it is possible to skip the password prompt by adding it to the configuration with:

git config —global sendemail.smtppass your_password

To reset CC mail attribute

git config —global sendemail.suppresscc all

Cloning a repository via Git

There are two ways to work with the Alpine git repository.

  • . without write access.
  • . with write access.

git.alpinelinux.org shows all available Alpine git repositories.

Without write access

If you want to clone the Alpine aports repository, switch to the directory you want to have the aports/ directory in and launch git.

If you want only the last 3 revisions:

Use the command below to see the full log of the trunk.

With write access

If you have write access to the Alpine repository, the URL needs to be adjusted for cloning a repository

git clone git@git.alpinelinux.org:aports

Alternatively you can set the remote url of an exisiting git clone:

git remote set-url origin git@git.alpinelinux.org:aports

General GIT Workflow

  1. Make your file edits in your local checkout of the local copy of repository.
  2. Commit the changes in your local repository:

Bring the rest of your local repository up to date:

git pull —rebase

Check what you are going to push:

git log origin..master

Move your changes up to the master if you have write access

Источник

Как я домашний Git-сервер Gogs на Alpine linux устанавливал

“Опасное это дело, Фродо, выходить за порог: стоит ступить на дорогу и, если дашь волю ногам, неизвестно куда тебя занесет.”

(с) Властелин Колец: Братство Кольца

С чего всё началось

Мне захотелось завести себе домашний Git-сервер, чтобы практиковаться в разработке и развёртывании пет-проектов. Плюс спокойнее, когда твои наработки лежат не только на github.

В качестве операционной системы выбрал Alpine linux, так как меня заинтересовали её возможности. Был опыт размещения на ней небольшого сервиса. Понравилось, что в ней нет ничего лишнего, а ещё она очень лёгкая в плане системных ресурсов.

Исходные данные

В распоряжении был гипервизор на Proxmox 6.1-3, контейнер с системой Alpine просто взял из шаблонов (template) — Alpine Linux 3.12 Kernel 5.3.10-1-pve on an x86_64.

Реализацию Git-сервера выбирал из числа открытых и бесплатных проектов. Решил взять для начала, тот у которого меньше настроек и лишних плюшек. Мне нужен git-сервер, который не требователен к ресурсам и наличием базовых операций. Остановился на проекте Gogs.io.

Причины такого выбора:

знакомый интерфейс, т.к. использую на работе;

написан на Golang — значит довольно шустрый;

минимальный набор настроек и функционала;

Мой гипервизор пока обладает скромным железом. В распоряжении только:

ЦПУ — 4 x AMD Ryzen 3 1200 Quad-Core

Диски — два SSD в ZFS

Из них 1-2 Гб ОЗУ забирает ОС гипервизора. Значит на контейнеры и виртуалки остаётся не так много ресурсов. Решил, что для 1-2 пользователей git-сервера хватит одного ядра, 512 Мб ОЗУ и 8 Гб диска.

Запуск контейнера с ОС Alpine

Настройка и запуск Alpine на Proxmox очень просты и удобны. Описывать их не буду. Скажу только, что мне эта тема с шаблонами очень понравилась. Жаль, что самих шаблонов не так много на мой взгляд.

С другой стороны, никто не мешает развернуть любую ОС и поставить нужный сервис из её пакетов. Например в Alpine так:

Читайте также:  Wordpress category name on category page

Подготовка системы

Сменил имя хоста сервера:

Вначале я установил openssh и nano для его настройки, чтобы нормально подключаться по ssh:

Далее добавил демон в автозагрузку:

Поправил конфиг /etc/ssh/sshd_config и убрал комментарии строк:

Всё, запустил демон:

Установка сервиса Gogs

Попытка первая

В документации к Alpine рекомендуют для разработки использовать Gitea. Но это слишком просто неть, поэтому выбрал другое. Я решил внаглую установить git-сервер командой:

В результате, система помимо самого сервиса gogs установила ещё и дополнительные пакеты, например сам git. Пробую запустить сервер и получаю ошибку:

Как мы видим, ему не хватает конфига и структуры каталогов для работы. Проверил каталог /usr/bin, там оказался лишь одинокий исполняемый файл gogs.

Попытка вторая

После первой попытки я попробовал воссоздать необходимую структуру и конфиг вручную. Ничего хорошего из этого не вышло.

Тогда решил пойти другим путём — в документации Gogs описывается установка под популярные дистрибутивы Linux. Обнаружил там таблицу архивов под две версии Gogs, поэтому проверил, какой установился у меня на Alpine:

Решил попробовать вот этот. Скопировал его в директорию /opt на Alpine:

Мой замысел был в том, что либо он заработает после распаковки сразу, либо с него можно будет взять недостающей структуры и конфигов. Поменял права на директорию распакованного gogs:

Попробовал запустить и получил странную ошибку (спойлер: не удивительно, ведь С-компиляторы разные на Alpine это mysl, но об этом я узнаю позже):

Тогда то мне и пришла дикая идея подсунуть gogs из Alpine пакетов:

И бинго! Сервер стартанул и я даже смог его настроить из веб-интерфейса. Но это был не конец…

Попытка третья

Несмотря на охватившую меня эйфорию, радости и “я у мамки сисадмин!” весь следующий день я провёл в раздумьях. Мне не верилось, что в таком перспективном проекте как Alpine, есть место битому пакету. Чувство, что ошибка на моей стороне, не давала покоя.

Я нашел телеграм-чат по Alpine и (увы) на ломаном инглише объяснил свою проблему. Меня направили проверять конфиги в репозитории пакета gogs проекта Alpine.

Честно — у меня не получилось выяснить, в чём ошибка. Но добыл ценную инфу — сервер можно запускать с явным указанием пути к файлу конфига. Попробовал, и штатный gogs-сервер запустился:

Дальше настраивал по этому видео-уроку, начиная с момента про настройку из веб-интерфейса.

Конечно, это не полная настройка. При настройке из GUI, я выяснил, что нужно ещё ставить bash.

Кроме этого, нужно настроить автозапуск сервера. Вернее, он уже есть — /etc/init.d/gogs, но не работает:

Путём перебора вариантов пришёл к такому:

Грубо, но да — я просто вместо переменных прописал путь и пользователя (того, которого задавал при настройке из веб-интерфейса). Возможно на этот момент мне указывали в чатике Alpine?

Как на самом деле нужно было

После такого долгого пути экспериментов и щупанья головой стены на прочность, меня осенило! Сервер не нужно запускать вручную, он должен стартовать вместе с системой. Значит, его надо настроить по аналогии с openssh.

Снова решил проверить — клонировал контейнер с Alpine и уже настроенным ssh. А дальше всё оказалось очень просто:

Этого действительно достаточно, чтобы запустить свой Git-сервер (если вас устраивает БД SQLite). Теперь можно идти на веб-интерфейс, у меня это был http://192.168.50.205:3000, и делать базовые настройки.

Заключение

Этой статьёй я хочу обратить внимание на важность документации и навыков по ОС Linux. Скорее всего, опытные линуксоиды сразу поняли в чём дело и от души посмеялись над моим дилетанством. Что ж, теперь мне и самому забавно, каким извилистым был мой путь =).

Но правда также и в том, что простой справки по развороту именно пакета gogs на Alpine я не нашёл. Надеюсь, моя статья будет полезна тем, кто задумает нечто подобное.

Источник

Alpine newbie developer: full stack web

Contents

Documents series

Previous required What’s next to read
Alpine newbie developer, Alpine newbie desktops must be completed! Alpine newbie developer: work from desktop on remote servers, Alpine_production_deploy, Alpine newbie developer: full stack backend

gitea is a management interface.. this guide will install locally for local management of git, for better installation please refers to Alpine_newbie_developer: gitea wiki page.

Git is the version control system (VCS) software behind gitea perse, so must be installed first. But repositories on server are not same as in clients.. server repositories are bare repositories.

git and gitea Installation

This guide does work either if are or not in main or edge the gitea package:, take note, do not install any more from edge.. so in fact all gitea dependencies must be listed and installed before gitea and edge brand are activated, so the following process will guide and show you how to do that; first gain root privileges and then:

  1. added and update normal repositories
  2. install direct dependences: git, gnupg, make, bash, coreutils and from normal stable repositories
  3. install indirect dependences: manpages, grep, lsof, less, curl, binutils, attr, dialog
  4. alternate edge repositories
  5. install gitea from edge repository
  6. restore normal repository
  7. Start gitea init script!
  8. Make enabled the init script!
Читайте также:  Linux find file that contains

Take in consideration that the user gitea was configure during installation.

Configurations

Gitea runs as gitea user, and www-data group, so are compatible with any web deploy in system webservers packages of alpine repositories, but not with any other external installation if does not are same as.

Gitea has two configuration files, the system defaults at /var/lib/gitea/conf/app.ini and modifiable package defaults, at /etc/gitea/app.ini . Original files are in /usr/share/webapps/gitea and are defaults non-modifiable. For specific and better configurations visit Alpine_newbie_developer: gitea wiki page.

Gitea for data database backend for storing configurations.. SQLite are the default. But for others database backends alpine packages of MySQL/MariaDB or PostgreSQL are like normal tarball of each one, admins must know what they want.. there’s no automatic window-like installation here. So first go to MariaDB or PostgreSQL wiki pages and with a user database configure in the /etc/gitea/app.ini and modify the DB_TYPE change from sqlite to postgres or mysql, NAME as the database access where gitea will store the data, USER as the user that will access the database, PASSWORD with the password of the user to access to the database defined. HOST must be with «localhost» value since this wiki assumes local installation. For specific and better configurations visit Alpine_newbie_developer: gitea wiki page.

Gitea can be customized: just take same path from /usr/share/webapps/gitea/ and put in same manner at /var/lib/gitea/custom/ place, by example to customize default landing page, just take a copy of the /usr/share/webapps/gitea/templates/home.tmpl and put modified one as /var/lib/gitea/custom/templates/home.tmpl as well.

Post installation

After install and initialized the daemon, you now can just go to http://localhost:3000 and start the post-installation process, if you dont want to change any configuration.. if not check next sections. A starting page will be show.

The post install page, only are show when try to use the system, away of the starting page, by example if browse the repositories or try to login. You must not forget to setup that installation.

Administrator account must be configured before push «install gitea», the button at the end of the post-configuration page when you first visit the installation. Provide and username for admin user, take note «admin» are a reserved word so choose another name. after provide passowrd you will continue the installation.

Geany IDE

Sublime text

Documents series

Previous required What’s next to read
Alpine newbie developer, Alpine newbie desktops must be completed! Alpine newbie developer: work from desktop on remote servers, Alpine_production_deploy, Alpine newbie developer: full stack backend

Alpine is minimalist so not all PHP packages are needed in most cases, in development environment we used most, but for PHP at production LAMP please take a look at the Production LAMP system: Lighttpd + PHP + MySQL wiki page.

PHP Installation

Since version v3.5, PHP 7 is available along with PHP 5.6 coexisting together, until version v3.9 where the latter was removed. So for Alpine 3.5+m we will assume PHP7, if you need PHP5.6 still could use it, that will be cover in the special Production LAMP system: Lighttpd + PHP5 + MySQL wiki page for older Alpine systems and some PHP specific software.

  1. Install core packages of PHP
  2. Install databases access packages of PHP, take into consideration the previous ODBC configurations
  3. Install extra packages of PHP

PHP Global Configuration

  1. Use fix.pathinfo
  2. Set safe mode to be off
  3. Don’t expose PHP code if something fails
  4. Set memory limit for execution to 256Mb (most servers are minimal of 1Gb of RAM)
  5. So then set upload size to 56Mb as maximum.
  6. Set then POST max size to 128Mb based on the upload max size limit.
  7. Turn on the URL open method
  8. Set default charset to UTF-8 for more compatibility
  9. Increase the execution time and the input time for.

PHP-FPM Configuration

The PHP-FPM defined a master process with some pool of process for each service resuests, by default there’s only one pool of processes, the www pool process.

  1. Create directory for php socket and pid files, MUST BE EQUAL to openrc init script defined!
  2. Set into configuration file the socket path, MUST BE EQUAL to openrc init script defined!
  3. Set into configuration file the pid file path, MUST BE EQUAL to openrc nit script defined!
  4. enable the mod_alias at the config file, due need of a specific path for cgi files into security
  5. be sure and disable the fastcgi-php module by cgi only
  6. and then enable the fastcgi-php-fpm specific module then
  7. write a much much better approach of the php handler in the local server using the socket
  8. configure the php to use also the socket too for direct connection locally
  9. restart the service to see changes at the browser

For testing open a browser and go to http:// /info.php and you will see only the minimal info due in production there’s no need for too much information to crackers. The «webserveripaddres» are the ip address of your setup/server machine.

Читайте также:  Еис настройка рабочего места linux

After that, all the files with php will be proceses faster than used a host based, also under the /var/www/localhost/cgi-bin directory will be showed as http://localhost/cgi-bin/ path.

Documents series

Previous required What’s next to read
Alpine newbie developer, Alpine newbie desktops must be completed! Alpine newbie developer: work from desktop on remote servers, Alpine_production_deploy, Alpine newbie developer: full stack backend

NodeJS and NPM

Installation

Documents series

Previous required What’s next to read
Alpine newbie developer, Alpine newbie desktops must be completed! Alpine newbie developer: work from desktop on remote servers, Alpine_production_deploy, Alpine newbie developer: full stack backend

Databases

Due web developer always uses Mysql, here only will cover Mysql/MariaDB and ODBC, for PostgreSQL please take a look to the Alpine newbie developer: full stack backend wiki page.

MySQL

Alpine Linux has dummy counterparts packages for those that are not close to that change from mysql to mariadb naming packages.

Installation

Take in consideration that the user mysql was created during instalation of packages, in the initialization section two users will be created in database init: root and mysql , and in that point only if are in their respective system accounts, will be able to connect to the database service.

That will install the most used ones.. mariadb-cient and mariadb-server with respective documents and manpages for developing, rest of packages are brief described in the MariaDB Alpine wiki page.

Initialization

The datadir are located to /var/lib/mysql must be owned by the mysql user and group. You can modify this behavior but must edit the service file at /etc/init.d directory. Also, you need to set datadir= under section [mysqld] at the config file.

  1. Initialize the main mysql database, and the data dir as standardized to /var/lib/mysql by the rc script
  2. Then initialize the service, root account and socket connection are enabled without password at this point
  3. Setup the root account by asignes a proper password, this are purely paranoid. due next step already do that!
  4. Setup and init the installation by running the mysql_secure_installation
  5. Setup permissions for manage others users and databases
  6. Run the mysql_secure_installation script and answer the questions (see section below)
  1. Enter current password for root (enter for none): must be provided due we already set previously. correct respond are OK, successfully used password, moving on.
  2. Switch to unix_socket authentication [Y/n] this are not the case and must be disabled, so answer NO, and response will be . skipping.
  3. Change the root password? [Y/n] Just press «n» only if you provided a good password, otherwise just change it!
  4. Remove anonymous users? [Y/n] In any case, production system must remove it, so answer Y and proper respond mus be . Success! .
  5. Disallow root login remotely? [Y/n] For sure answer Y and proper respond mus be . Success! .
  6. Remove test database and access to it? [Y/n] Should be removed, so answer Y and proper respond mus be . Success! .
  7. Reload privilege tables now? [Y/n] Answer Y and proper respond mus be . Success! .

After aswered all the questions.. restart the service with rc-service mariadb restart

Configuration

Newer system Alpine packages can set in independent files in any case those commands always works and where are not apply just will ignore the output, for more info about that watch the MariaDB Configuration files section of the MariaDB wiki page.

  • On older Alpine system must set config files for MAX ALLOWED PACKETS to minimun proper amount
  • Set default charset to UTF8MB4
  • Added the service to start process but not at boot process due needs networking started.
  • Restart the service to apply changes.

Upgrading

On upgrade cases: If are unable to run any mysql command after an upgrade, it’s because MySQL cannot start try run MySQL in safemode with mysqld_safe —datadir=/var/lib/mysql/ command and then run the mysql_upgrade -u root -p script. For more information watch the MariaDB upgrading section of the MariaDB wiki page.

  1. keep the old database (mysql sheme) structure of the engine daemon, currently this are not more the case, today this not make sense anymore
  2. upgrade the MariaDB/MySQL packages, of course with must be done if the upgrade process to mayor alpine version does not!
  3. run the mysql_upgrade -u root -p script, providing the password or root, (from the new package version) against the old still-running database (mysql sheme). This will produce some error messages; however, the upgrade will succeed.
  4. Restart the service

If are unable to run mysql_upgrade because MySQL cannot start try run MySQL in safemode with mysqld_safe —datadir=/var/lib/mysql/ command and then run the mysql_upgrade -u root -p script.

Источник

Поделиться с друзьями
КомпСовет
Adblock
detector