imported>Vix |
imported>Vix |
Строка 1: |
Строка 1: |
| [https://golang.org/ Go], или golang – это современный язык программирования, разработанный в Google. Он предлагает надежный набор библиотек и применяет минималистичный подход к разработке, благодаря чему становится все более популярным и чаще используется для создания надежного и производительного ПО.
| | '''Установка и настройка''' |
|
| |
|
| В этом мануале вы узнаете, как установить последнюю версию Go на сервер Debian 9, а также создать простое приложение Hello World.
| | Прежде всего обновите локальный список пакетов с помощью вашего пакетного менеджера, например на Ubuntu и Debian это можно сделать с помощью apt: |
| | apt-get update |
|
| |
|
| '''Требования'''
| | Для установки выполните команду: |
| | apt-get install exim4 |
|
| |
|
| Для работы вам понадобится сервер '''Debian 9''', настроенный по мануалу Начальная настройка сервера '''Debian 9'''.
| | Примечание: если вам необходимо использовать ACL и другие расширенные функции, то установите exim4-daemon-heavy: |
| | apt-get install exim4-daemon-heavy |
|
| |
|
| '''1: Загрузка Go'''
| | Чтобы перейти к настройке, выполните команду: |
| | dpkg-reconfigure exim4-config |
|
| |
|
| Для начала установите '''curl''':
| | Нажмите Ok для начала настройки. |
| | '''РЕШЕНИЕ ПРОБЛЕМ''' |
| | <hr> |
| | * '''defer (-53): retry time not reached for any host''' |
| | Повреждены ваши exim db Это возможно связанно с недоступостью почтового сервера какой-то время. |
|
| |
|
| sudo apt install curl
| | '''решение:''' |
|
| |
|
| Загрузите последнюю версию Go с официального сайта проекта. Здесь вы найдете URL на архив текущей стабильной версии. Обязательно скопируйте ссылку на последнюю версию для 64-битной архитектуры.
| | cd /var/spool/exim/db |
| | rm -f retry retry.lockfile |
| | rm -f wait-remote_smtp wait-remote_smtp.lockfile |
| | service exim restart |
|
| |
|
| В домашнем каталоге запустите '''curl''' для загрузки тарбола: | | В дальнейшим имеет смысл: внести изменения в /etc/exim/exim.conf |
| | в раздел |
|
| |
|
| curl -O https://dl.google.com/go/go1.12.5.linux-amd64.tar.gz | | begin retry |
| | * rcpt_451 F,1h,15m |
| | * refused F,1h,2m |
| | * timeout_connect F,2h,2m; F,6h,1h; F,4d,6h |
| | * * F,2h,2m; G,16h,1h,1.5; F,4d,6h |
|
| |
|
| Хотя архив загружен с надежного источника, рекомендуем все же проверить оригинальность и целостность полученных пакетов. Так вы будете уверены, что файл никак не пострадал во время установки.
| | также обратите внимание на запуск с какой опцией он стартует: -q5m |
| | * [https://www.linuxshop.ru/forum/f7/t31431--resheno-remote-smtp-defer-53-retry-time-not-reached-for-any-host-exchange-exim.html взято тут] |
|
| |
|
| Проверьте целостность архива с помощью '''sha256sum''':
| | * Для решения проблемы с ssl в exim4.conf.template изменить: |
| | ... |
| | REMOTE_SMTP_SMARTHOST_TLS_VERIFY_HOSTS = * |
|
| |
|
| sha256sum go1.12.5.linux-amd64.tar.gz
| | на |
| go1.12.5.linux-amd64.tar.gz | | ... |
| aea86e3c73495f205929cfebba0d63f1382c8ac59be081b6351681415f4063cf go1.12.5.linux-amd64.tar.gz | | REMOTE_SMTP_SMARTHOST_TLS_VERIFY_HOSTS = !* |
|
| |
|
| Убедитесь, что хэш соответствует значению на странице загрузки.
| | * Если нужно жестко указать порт smtp, то: |
| | | ... |
| '''2: Установка Go'''
| | dc_smarthost='mail.myhost.ru::25' |
| | |
| Затем используйте tar для извлечения архива. Опция x распакует архив, v настраивает расширенный вывод (список извлеченных файлов), а f определяет имя файла:
| |
| | |
| tar xvf go1.12.5.linux-amd64.tar.gz | |
| | |
| Теперь в домашнем каталоге должен быть новый каталог по имени go. Передайте права на каталог go пользователю и группе root и переместите его в /usr/local:
| |
| | |
| sudo chown -R root:root ./go
| |
| sudo mv go /usr/local | |
| | |
| '''Примечание:''' Официально рекомендуется использовать каталог /usr/local/go, однако в зависимости от ситуации вам может потребоваться другое расположение. | |
| | |
| Теперь нужно указать несколько путей Go, чтобы упростить работу.
| |
| | |
| '''3: Настройка путей Go'''
| |
| | |
| На этом этапе нужно установить пути в вашей среде.
| |
| | |
| Сначала установите корневой каталог '''Go''', где нужно искать его файлы.
| |
| | |
| nano ~/.profile
| |
| | |
| В конец файла добавьте:
| |
| ... | | ... |
| export GOROOT=/usr/local/share/go
| |
| export GOPATH=$HOME/Projects/Go/src
| |
| export GOBIN=$HOME/Projects/Go/bin
| |
| export PATH
| |
|
| |
| Если вы выбрали другое расположение для установки Go, укажите его здесь. В этом примере показаны команды, которые сработают, если Go был установлен в домашнем каталоге:
| |
| export GOROOT=$HOME/go
| |
| export GOPATH=$HOME/src
| |
| export PATH=$PATH:$GOROOT/bin:$GOPATH/bin
| |
|
| |
|
| |
| Сохраните и закройте файл. Обновите настройки:
| |
|
| |
| source ~/.profile
| |
|
| |
| '''4: Тестирование установки'''
| |
|
| |
| Теперь нужно убедиться, что установка '''Go''' прошла успешно.
| |
|
| |
| Создайте новый каталог для рабочего пространства Go, где он сможет выполнять сборку файлов.
| |
|
| |
| mkdir $HOME/Projects/Go/src
| |
|
| |
| После этого создайте иерархию каталогов с помощью следующей команды, чтобы поместить здесь тестовый файл. К примеру, структура каталогов может выглядеть так:
| |
|
| |
| mkdir -p ~/src/my_project/hello
| |
|
| |
| Теперь создайте файл для приложения Hello World:
| |
|
| |
| nano ~/src/my_project/hello/hello.go
| |
|
| |
| Вставьте в него следующий код. Он использует основные пакеты Go, импортирует форматированный компонент IO и устанавливает функцию, которая выводит «Hello, World» при запуске.
| |
|
| |
| package main
| |
| import "fmt"
| |
| func main() {
| |
| fmt.Printf("Hello, World!\n")
| |
| }
| |
|
| |
| Эта программа будет выводить фразу «Hello, World», если она успешно работает. Это позволит подтвердить, что программы Go компилируются правильно.
| |
|
| |
| Сохраните и закройте этот файл, затем скомпилируйте его, вызвав команду Go install:
| |
|
| |
| go install my_project/hello
| |
|
| |
| Запустите файл:
| |
|
| |
| hello
| |
|
| |
| Если команда вернула «hello, world», установка Go прошла успешно. Чтобы узнать, где установлен скомпилированный файл hello, используйте команду:
| |
|
| |
| which hello
| |
| $HOME/Projects/Go/bin/hello
| |
|
| |
| '''Заключение'''
| |
|
| |
| Установив и настроив последнюю версию Go, вы можете приступать к разработке своего проекта.
| |
|
| |
|
| '''ИСТОЧНИК:''' | | '''ИСТОЧНИКИ:''' |
| <hr> | | <hr> |
| * [https://www.8host.com/blog/ustanovka-go-v-debian-9/ Установка Go в Debian 9] | | * [https://qna.habr.com/q/146009 Exim и внешний SMTP сервер, как заставить ходить почту?] |
| | * [https://1cloud.ru/help/linux/nastrojka-exim4 Настройка EXIM4 для отправки почтовых сообщений в Linux] |
| | * [https://serverspace.by/support/help/nastroika-exim-4-na-ubuntu/ Ubuntu. Настройка Exim4] |
Установка и настройка
Прежде всего обновите локальный список пакетов с помощью вашего пакетного менеджера, например на Ubuntu и Debian это можно сделать с помощью apt:
apt-get update
Для установки выполните команду:
apt-get install exim4
Примечание: если вам необходимо использовать ACL и другие расширенные функции, то установите exim4-daemon-heavy:
apt-get install exim4-daemon-heavy
Чтобы перейти к настройке, выполните команду:
dpkg-reconfigure exim4-config
Нажмите Ok для начала настройки.
РЕШЕНИЕ ПРОБЛЕМ
- defer (-53): retry time not reached for any host
Повреждены ваши exim db Это возможно связанно с недоступостью почтового сервера какой-то время.
решение:
cd /var/spool/exim/db
rm -f retry retry.lockfile
rm -f wait-remote_smtp wait-remote_smtp.lockfile
service exim restart
В дальнейшим имеет смысл: внести изменения в /etc/exim/exim.conf
в раздел
begin retry
* rcpt_451 F,1h,15m
* refused F,1h,2m
* timeout_connect F,2h,2m; F,6h,1h; F,4d,6h
* * F,2h,2m; G,16h,1h,1.5; F,4d,6h
также обратите внимание на запуск с какой опцией он стартует: -q5m
- Для решения проблемы с ssl в exim4.conf.template изменить:
...
REMOTE_SMTP_SMARTHOST_TLS_VERIFY_HOSTS = *
на
...
REMOTE_SMTP_SMARTHOST_TLS_VERIFY_HOSTS = !*
- Если нужно жестко указать порт smtp, то:
...
dc_smarthost='mail.myhost.ru::25'
...
ИСТОЧНИКИ: