Свой github.com, golang giteo |
Здравствуйте, гость Вход | Регистрация
Наши новости:
|
|
|
Свой github.com, golang giteo |
Gecko
|
8.5.2022, 16:45
Сообщение
|
|
|
Представляю вашему вниманию очень полезную и нужную в современных реалиях программу, которая позволяет организовать свой собственный веб-сервис по развёртыванию git-репозиториев аналогичный github.com.
Данная программа написана на языке Go (golang) и требует компиляции из исходного кода, после которого вы получаете монолитный бинарный файл. При первом запуске вам предоставляется возможность выбрать одну из доступных СУБД для работы с БД. ![]() Я написал небольшой bash-скрипт который скачает исходники и соберёт/установит всю необходимую программную инфраструктуру за исключением СУБД и прочих вспомогательных программ. Внимание! Скрипт писался под Debian с использованием apt Перед запуском скрипта: Если установлен nodejs <= 14 тогда выполнить: Код sudo apt remove nodejs Если уже установлен Go <= 16 тогда выполнить: Код rm -rf /usr/local/go Скрипт универсальный его легко можно дополнить установкой дополнительного ПО которое необходимо вашему проекту на golang, а также собирать другие проекты на golang. Запускать его можно с любого места, а также можно использовать как makefile gitea_install.sh Код #!/bin/bash ### set -e # Переменные приложения app_name=gitea app_version="1.16.7" app_src=main.go app_git_repo=https://github.com/go-gitea/gitea app_cfg= app_folder=${app_name} nodejs=https://deb.nodesource.com/setup_14.x # Переменные компилятора (можно не трогать) go_url=https://go.dev/dl/ go_version=1.18.1 go_archive=go${go_version}.linux-amd64.tar.gz go_projects=${HOME}/golang/go_projects ############################################# # ВСЁ ЧТО НИЖЕ, ЛУЧШЕ НЕ ТРОГАТЬ! # Переменные окружения golang export PATH=$PATH:/usr/local/go/bin export GOPATH=${go_projects} export GOBIN=$PATH:$GOPATH/bin export PATH=$PATH:$GOPATH/bin export PATH=$PATH:$GOROOT/bin export GOMODCACHE=${go_projects}/pkg/mod export GO111MODULE="auto" # Переменные цветного вывода текста normal=$(echo "\033[m") lightred=$(echo "\e[91m") green=$(echo "\033[0;32m") blue=$(echo "\033[36m") clear if [ "$(whoami)" != 'root' ]; then sudo=sudo else sudo= fi if [[ ! -f "/usr/bin/wget" ]]; then printf "\n ${lightred}Need to install ${green}Wget${normal}\n\n" ${sudo} apt install wget -y fi if [[ ! -f "/usr/bin/git" ]]; then printf "\n ${lightred}Need to install ${green}Git${normal}\n\n" ${sudo} apt install git -y fi if [[ ! -f "/usr/bin/make" ]]; then wget -qO- ${nodejs} |${sudo} bash - ${sudo} apt install -y make fi if [[ ! -f "/usr/bin/node" ]]; then wget -qO- ${nodejs} |${sudo} bash - ${sudo} apt install -y nodejs fi if [[ ! -f "/usr/local/go/bin/go" ]]; then wget ${go_url}${go_archive} && ${sudo} tar -C /usr/local -xzf ${go_archive} && rm -rf ${go_archive} fi if [[ ! -d "${go_projects}/src/${app_folder}/.git" ]]; then mkdir -p ${go_projects}/{bin,src/${app_folder},pkg} && cd ${go_projects}/src/${app_folder} && git clone ${app_git_repo} . fi if [[ ! -f "${go_projects}/src/${app_folder}/go.mod" ]]; then printf "module ${app_git_repo:8:${#app_git_repo}}\n\ngo ${go_version}" >go.mod go mod tidy fi # go build ${app_src} && cp -pf ${go_projects}/src/${app_folder}/$(basename -- ${app_src%.*}) ${go_projects}/bin/${app_name} cd ${go_projects}/src/${app_folder} && TAGS="bindata" make build && cp -pf ${go_projects}/src/${app_folder}/$(basename -- ${app_src%.*}) ${go_projects}/bin/${app_name} printf "\n Application: ${blue}${app_name} ${app_version}${normal}\n Repo: ${green}${app_git_repo}${normal}\n" if [[ -f "${app_cfg}" ]]; then printf " Config: ${blue}${app_cfg}${normal}\n" fi # printf " Usage: ${lightred}cd ${go_projects}/src/${app_folder} && ./$(basename -- ${app_src%.*})${normal}\n\n ${green}Initialization completed!${normal}\n\n " # cd ${go_projects}/src/${app_folder} && chmod -R 777 * && ./$(basename -- ${app_src%.*}) printf " Usage: ${lightred}cd ${go_projects}/src/${app_folder} && ./${app_name}${normal}\n\n ${green}Initialization completed!${normal}\n\n" cd ${go_projects}/src/${app_folder} && chmod -R 777 * && ./${app_name} exit ![]() Demo Ещё один рабочий пример Сайт программы | GitHub Подробная документация: https://docs.gitea.io/en-us/
Отредактировал: Gecko, - 8.5.2022, 16:53
![]() Не отвечаю на ЛС.
|
Поблагодарили 1 раз
|
|
Eka
|
8.5.2022, 17:09
Сообщение
|
|
|
Нужную в современных реалиях кому и зачем?
![]() цитаты великих умов
Цитата аналог libcurl в Go это net/http |
Поблагодарили 1 раз
|
|
Gecko
|
8.5.2022, 17:33
Сообщение
|
|
|
Нужную в современных реалиях кому и зачем? Ну ты видимо не в курсах что сейчас происходит в мире OpenSource, значит тебе оно точно не надо. ![]() Не отвечаю на ЛС.
|
|
|
|
Gecko
|
8.5.2022, 18:20
Сообщение
|
|
|
![]() Не отвечаю на ЛС.
|
|
|
|
Gecko
|
8.5.2022, 18:28
Сообщение
|
|
|
Eka, Зачем собаке пятая нога, зачем Пугачёва уехала в Израиль, ... ??? Цитата Зачем соло разработчику свой гит свой гит ? Ты почитай что такое git ![]() Не отвечаю на ЛС.
|
|
|
|
Gecko
|
10.5.2022, 18:39
Сообщение
|
|
|
Не понимаю кому нужно будет поднимать свое вместо использовать готовое бесплатное, но сам по себе мануал ценный. Вообще на форуме не помешала бы серия статей смежной тематики, все что связано с хостингом сайтов, банлистов, fastDL, настройка nginx, выделение ядер cpu под игровой сервер, приоритеты процессов в Linux и так далее К написанию этого поста меня сподвиг этот пост на хабре ну и добавил саспенса в том числе и этот видосик Код https://www.youtube.com/watch?v=U_2jnhx_l-M да и логично предположить что могут быть серьёзные перемены с доступ к тем или иным зарубежным ресурсам где к стати не особо и разбираются РФ или Украина. Хотя, я уже давненько хотел перейти на свой хостинг в котором все мои проекты существовали бы как в собственной локальной сети, так и в интернет, под собственным доменом и с моими правилами, с возможностью подключать других людей к написанию кода и выделять им те или иные ресурсы. На базе gitea можно создать сервис для хостинга сайтов аналогичный к примеру github page, очень удобно вести разработку статей блога на базе SSG (Генератора статических сайтов). К примеру в контексте данного форума и игровой тематики на базе gitea можно создать аналог Dev-CS.ru, ведь согласись, приставка dev в контексте gitea выглядит более солидно чем в контексте форумного cms. Немного оптимизировал скрипт сборки go_install.sh Код #!/bin/bash # set -e # Переменные приложения app_name=gitea app_version="1.16.7" app_src=main.go app_git_repo=https://github.com/go-gitea/gitea app_cfg= app_folder=${app_name} # Особая сборка проекта APP=${app_name} # Дополнительное ПО nodejs=https://deb.nodesource.com/setup_14.x # Переменные компилятора (можно не трогать) go_url=https://go.dev/dl/ go_version=1.18.1 go_archive=go${go_version}.linux-amd64.tar.gz go_projects=${HOME}/golang/go_projects ############################################# # ВСЁ ЧТО НИЖЕ, ЛУЧШЕ НЕ ТРОГАТЬ! # Переменные цветного вывода текста normal=$(echo "\033[m") lightred=$(echo "\e[91m") green=$(echo "\033[0;32m") blue=$(echo "\033[36m") # Переменные окружения golang export PATH=$PATH:/usr/local/go/bin export GOPATH=${go_projects} export GOBIN=$PATH:$GOPATH/bin export PATH=$PATH:$GOPATH/bin export PATH=$PATH:$GOROOT/bin export GOMODCACHE=${go_projects}/pkg/mod export GO111MODULE="auto" clear if [ "$(whoami)" != 'root' ]; then sudo=sudo else sudo="" fi if [[ ! -f "/usr/bin/wget" ]]; then printf "\n ${lightred}Need to install ${green}Wget${normal}\n\n" ${sudo} apt install wget -y fi if [[ ! -f "/usr/bin/git" ]]; then printf "\n ${lightred}Need to install ${green}Git${normal}\n\n" ${sudo} apt install git -y fi if [[ ! -f "/usr/bin/make" ]]; then wget -qO- ${nodejs} |${sudo} bash - ${sudo} apt install -y make fi if [[ ! -f "/usr/bin/node" ]]; then wget -qO- ${nodejs} |${sudo} bash - ${sudo} apt install -y nodejs fi if [[ ! -f "/usr/local/go/bin/go" ]]; then wget ${go_url}${go_archive} && ${sudo} tar -C /usr/local -xzf ${go_archive} && rm -rf ${go_archive} fi if [[ ! -d "${go_projects}/src/${app_folder}/.git" ]]; then mkdir -p ${go_projects}/{bin,src/${app_folder},pkg} && cd ${go_projects}/src/${app_folder} && git clone ${app_git_repo} . fi if [[ ! -f "${go_projects}/src/${app_folder}/go.mod" ]]; then printf "module ${app_git_repo:8:${#app_git_repo}}\n\ngo ${go_version}" >go.mod go mod tidy fi if [[ -z "${APP}" ]]; then cd ${go_projects}/src/${app_folder} && go build ${app_src} else cd ${go_projects}/src/${app_folder} && TAGS="bindata" make build fi if [[ ! -f "${go_projects}/src/${app_folder}/$(basename -- ${app_src%.*})" ]]; then cp -pf ${go_projects}/src/${app_folder}/$(basename -- ${app_src%.*}) ${go_projects}/bin/${app_name} fi printf "\n Application: ${blue}${app_name} ${app_version}${normal}\n Repo: ${green}${app_git_repo}${normal}\n" # Для конфигов if [[ -f "${app_cfg}" ]]; then printf " Config: ${blue}${app_cfg}${normal}\n" fi if [[ -z "${APP}" ]]; then printf " Usage: ${lightred}cd ${go_projects}/src/${app_folder} && ./$(basename -- ${app_src%.*})${normal}\n\n ${green}Initialization completed!${normal}\n\n " cd ${go_projects}/src/${app_folder} && chmod -R 777 * && ./$(basename -- ${app_src%.*}) else printf " Usage: ${lightred}cd ${go_projects}/src/${app_folder} && ./${app_name}${normal}\n\n ${green}Initialization completed!${normal}\n\n" cd ${go_projects}/src/${app_folder} && chmod -R 777 * && ./${app_name} fi exit
Отредактировал: Gecko, - 10.5.2022, 19:46
![]() Не отвечаю на ЛС.
|
|
|
|
![]() ![]() |