Automatyczna instalacja supla (server,cloud,dev)

alv
Posty: 74
Rejestracja: sob lip 09, 2016 11:36 am

Wiele osób pyta jak zainstalować własny serwer, przygotowałem coś, co z pewnością to ułatwi. Do swoich projektów wykorzystuję ansible (oprogramowanie m.i.n do auto-provisioningu), pozwala to szybko odtwarzać konfigurację serwera bez konieczności logowania się na niego. Wystarczy uruchomić zdefiniowaną rolę. (według założeń z komputera lokalnego na serwer zdalny)

https://github.com/alv91/ansible-role-supla

Nic nie szkodzi by uruchomić ansible lokalnie, skonfigurowanie serwera powinno być zatem banalnie proste. Wystarczy zalogować się na swojego użytkownika z uprawnieniami sudo i wykonać kilka poleceń. Pisałem i testowałem na Debian 8, Ubuntu 16.04 (architektura bez znaczenia). Instalacja trwa zależnie od wydajności jednostki 5-25 min.

Kod: Zaznacz cały

sudo apt-get update
sudo apt-get install python-pip python-dev libffi-dev libssl-dev libxml2-dev libxslt1-dev libjpeg8-dev zlib1g-dev -y
sudo pip install --upgrade pip
sudo pip install ansible
mkdir -p ~/ansible/roles
cd ~/ansible
git clone https://github.com/alv91/ansible-role-supla roles/supla
Utworzyć plik playbook.yml i uzupełnić

Kod: Zaznacz cały

---
- hosts: all
  become: true
  vars:
    mysql_root_pass: secretpassword
    supla_database_password: secretpassword
    install_supla_server: True
    install_supla_cloud: True
    install_supla_dev: True
    supla_generate_cert: True
    supla_server: supla.example.com
  roles:
    - role: supla
Można podać więcej zmiennych (trzeba pamiętać o wyrównaniu linii)

Kod: Zaznacz cały

supla_mailer_transport: null
supla_mailer_host: null
supla_mailer_user: null
supla_mailer_password: null
supla_mailer_port: null
supla_mailer_encryption: null
supla_mailer_from: null
supla_admin_email: null
supla_server: supla
supla_server_list: null
supla_locale: en
supla_ewz_recaptcha_public_key: null
supla_ewz_recaptcha_private_key: null
supla_secret: generatesecrethashhere
Następnie można uruchomić instalację

Kod: Zaznacz cały

ansible-playbook -i "localhost," -c local playbook.yml -k -K -s -D
Poprosi o hasło do usera, potem sudo (można dać enter)

Gdyby wywalił się na "Git clone", wywołajcie polecenie powyżej jeszcze raz. (W module git oprogramowania ansible jest bug, który dostał już poprawkę, ale nie została wydana jego nowa wersja)

Kilka uwag:
Nie wykonuj z roota
Zmienne install_supla_* ustawione na True będą za każdym razem instalować najnowszą wersję oprogramowania dostępną na github.
Zmienna supla_server definuje nazwę serwera, która jest dodana do symfony, certyfikatu i apache2 jako servername.
Jeśli nie podasz kluczy recaptcha instalator wyłączy jego obsługę.
Zmienną supla_generate_cert możesz wyłączyć generowanie certyfikatu, np. gdy chcesz dodać własny lub uruchomić letsencrypt.
Po zainstalowaniu możesz się zarejestrować, dodać urządzenia, lokalizacje. Pamiętaj jednak, że do poprawnej aktywacji potrzebujesz skonfigurowanej funkcji "mail", czyli zmiennych "mailer".

Jeśli ktoś ma jakieś uwagi, proszę pisać.
moondec
Posty: 29
Rejestracja: ndz paź 30, 2016 7:54 pm

Pisałem i testowałem na Debian 8, Ubuntu 16.04 (architektura bez znaczenia).
Może to naiwne pytanie. Czy na innych dystybucjach też to zadziała? OpenSuSE?
Awatar użytkownika
nowy1
Posty: 339
Rejestracja: pt lip 01, 2016 11:51 am
Lokalizacja: Warszawa

alv pisze:Wiele osób pyta jak zainstalować własny serwer, przygotowałem coś, co z pewnością to ułatwi. Do swoich projektów wykorzystuję ansible (oprogramowanie m.i.n do auto-provisioningu), pozwala to szybko odtwarzać konfigurację serwera bez konieczności logowania się na niego. Wystarczy uruchomić zdefiniowaną rolę. (według założeń z komputera lokalnego na serwer zdalny)

https://github.com/alv91/ansible-role-supla

Nic nie szkodzi by uruchomić ansible lokalnie, skonfigurowanie serwera powinno być zatem banalnie proste. Wystarczy zalogować się na swojego użytkownika z uprawnieniami sudo i wykonać kilka poleceń. Pisałem i testowałem na Debian 8, Ubuntu 16.04 (architektura bez znaczenia). Instalacja trwa zależnie od wydajności jednostki 5-25 min.

Kod: Zaznacz cały

sudo apt-get update
sudo apt-get install python-pip python-dev libffi-dev libssl-dev libxml2-dev libxslt1-dev libjpeg8-dev zlib1g-dev -y
sudo pip install --upgrade pip
sudo pip install ansible
mkdir -p ~/ansible/roles
cd ~/ansible
git clone https://github.com/alv91/ansible-role-supla roles/supla
Utworzyć plik playbook.yml i uzupełnić

Kod: Zaznacz cały

---
- hosts: all
  become: true
  vars:
    mysql_root_pass: secretpassword
    supla_database_password: secretpassword
    install_supla_server: True
    install_supla_cloud: True
    install_supla_dev: True
    supla_generate_cert: True
    supla_server: supla.example.com
  roles:
    - role: supla
Można podać więcej zmiennych (trzeba pamiętać o wyrównaniu linii)

Kod: Zaznacz cały

supla_mailer_transport: null
supla_mailer_host: null
supla_mailer_user: null
supla_mailer_password: null
supla_mailer_port: null
supla_mailer_encryption: null
supla_mailer_from: null
supla_admin_email: null
supla_server: supla
supla_server_list: null
supla_locale: en
supla_ewz_recaptcha_public_key: null
supla_ewz_recaptcha_private_key: null
supla_secret: generatesecrethashhere
Następnie można uruchomić instalację

Kod: Zaznacz cały

ansible-playbook -i "localhost," -c local playbook.yml -k -K -s -D
Poprosi o hasło do usera, potem sudo (można dać enter)

Gdyby wywalił się na "Git clone", wywołajcie polecenie powyżej jeszcze raz. (W module git oprogramowania ansible jest bug, który dostał już poprawkę, ale nie została wydana jego nowa wersja)

Kilka uwag:
Nie wykonuj z roota
Zmienne install_supla_* ustawione na True będą za każdym razem instalować najnowszą wersję oprogramowania dostępną na github.
Zmienna supla_server definuje nazwę serwera, która jest dodana do symfony, certyfikatu i apache2 jako servername.
Jeśli nie podasz kluczy recaptcha instalator wyłączy jego obsługę.
Zmienną supla_generate_cert możesz wyłączyć generowanie certyfikatu, np. gdy chcesz dodać własny lub uruchomić letsencrypt.
Po zainstalowaniu możesz się zarejestrować, dodać urządzenia, lokalizacje. Pamiętaj jednak, że do poprawnej aktywacji potrzebujesz skonfigurowanej funkcji "mail", czyli zmiennych "mailer".

Jeśli ktoś ma jakieś uwagi, proszę pisać.
Jutro sprawdzę :)

mam :
nanopi fire2
orange pi
hummingboard
byngleboard
alv
Posty: 74
Rejestracja: sob lip 09, 2016 11:36 am

moondec pisze: Może to naiwne pytanie. Czy na innych dystybucjach też to zadziała? OpenSuSE?
Niestety nie
michu9010
Posty: 8
Rejestracja: pn lis 07, 2016 12:48 pm

przy instalacji pokazuje się błąd

Kod: Zaznacz cały

fatal: [localhost]: FAILED! => {"changed": false, "failed": true, "msg": "file (/home/michal/.my.cnf) is absent, cannot continue", "path": "/home/michal/.my.cnf", "state": "absent"}
mam zainstalowane:
Apache2
MySQL
PhpMyAdmin
PHP 7

nie wiem co zrobić z tym faktem trzeba coś doinstalować jeszcze?

Może po prostu spróbować na czystym ubuntu 16.04?
Ostatnio zmieniony pn gru 19, 2016 3:20 pm przez michu9010, łącznie zmieniany 1 raz.
Awatar użytkownika
pzygmunt
Posty: 18282
Rejestracja: wt sty 19, 2016 9:26 am
Lokalizacja: Paczków
Kontakt:

Apropos automatycznej instalacji to myślę o

apt-get install supla-server
michu9010
Posty: 8
Rejestracja: pn lis 07, 2016 12:48 pm

pzygmunt pisze:Apropos automatycznej instalacji to myślę o

apt-get install supla-server
w sumie to był by dobry pomysł
alv
Posty: 74
Rejestracja: sob lip 09, 2016 11:36 am

michu9010 pisze:przy instalacji pokazuje się błąd

Kod: Zaznacz cały

fatal: [localhost]: FAILED! => {"changed": false, "failed": true, "msg": "file (/home/michal/.my.cnf) is absent, cannot continue", "path": "/home/michal/.my.cnf", "state": "absent"}
To dlatego, że masz już zainstalowanego MySQL. Instalator tworzy nową bazę i konfiguruje sam serwer. Możesz dodać tagi, np. "-t supla-server" czy "-t www", wtedy nie wykona wszystkich zadań, a tylko część.
michu9010
Posty: 8
Rejestracja: pn lis 07, 2016 12:48 pm

supla zainstalowana ale nie mogę się zalogować na admina. Więc chciałem zainstalowac jeszcze wraz tymi ustawieniami ale mam błąd na koncu.

Kod: Zaznacz cały

---
- hosts: all
  become: true
  vars:
    mysql_root_pass: zaq1234rfv
    supla_database_password: suplapass
    install_supla_server: True
    install_supla_cloud: True
    install_supla_dev: True
    supla_generate_cert: True
    supla_server: supla.mjastrzebski.eu
    supla_mailer_transport: supla@mjastrzebski.eu
    supla_mailer_host: mjastrzebski.eu
    supla_mailer_user: supla@mjastrzebski.eu
    supla_mailer_password: ************
    supla_mailer_port: 587
    supla_mailer_encryption: null
    supla_mailer_from: michal.jastrzebski@hotmail.com
    supla_admin_email: michal.jastrzebski@hotmail.com
    supla_server: supla
    supla_server_list: null
    supla_locale: pl
    supla_ewz_recaptcha_public_key: null
    supla_ewz_recaptcha_private_key: null
    supla_secret: generatesecrethashhere
  roles:
    - role: supla
błąd

Kod: Zaznacz cały

An exception occurred during task execution. To see the full traceback, use -vvv                                                                                                                                                             . The error was: UnboundLocalError: local variable 'remote_head' referenced befo                                                                                                                                                             re assignment
fatal: [localhost]: FAILED! => {"changed": false, "failed": true, "module_stderr                                                                                                                                                             ": "Traceback (most recent call last):\n  File \"/tmp/ansible_JFPHGc/ansible_mod                                                                                                                                                             ule_git.py\", line 1040, in <module>\n    main()\n  File \"/tmp/ansible_JFPHGc/a                                                                                                                                                             nsible_module_git.py\", line 994, in main\n    result.update(changed=True, after                                                                                                                                                             =remote_head, msg='Local modifications exist')\nUnboundLocalError: local variabl                                                                                                                                                             e 'remote_head' referenced before assignment\n", "module_stdout": "", "msg": "MO                                                                                                                                                             DULE FAILURE"}
alv
Posty: 74
Rejestracja: sob lip 09, 2016 11:36 am

O tym błędzie mówiłem, puść jeszcze raz.
ODPOWIEDZ

Wróć do „Projekty użytkowników”