Konfiguracja serwera

Pisałem ostatnio o zakupionym przeze mnie VPS’ie. Pomyliłem się z ceną, kosztował nie 15, a 17zł. Czyli i tak był śmiesznie tani. Dzisiaj miałem trochę czasu, więc postanowiłem, że skonfiguruję sobie server. Udało się i wszystko działa. Nie ustawiłem jeszcze wszystkiego, co chciałem i nie wiem, czy będę konfigurował deploy przez git’a, ale najważniejsze już jest.

Do konfiguracji wybrałem Apache’a, bo miałem z nim więcej do czynienia niż z nginx’em.

Chciałem na początku zainstalować Fedorę, ale 23 nie chciała się zainstalować, serwer nie wstawał po instalacji, a w 20 nie mogłem zaktualizować php do 7. Wybrałem więc CentOS 7, który też pochodzi z linii RedHat. Zainstalowałem apache’a, który nie wiem czemu, ale w tej linii systemów instaluje się przez nazwę httpd i w katalogu o tej samej nazwie się znajduje, a w Debianie i pochodnych nosi nazwę apache2. Nie zagłębiałem się w to, ale może kiedyś z ciekawości się dowiem.

Następnie zainstalowałem PHP i zaktualizowałem go do wersji 7. Potem do konfiguracji musiałem zainstalować nano. Nigdy nie ciągnęło mnie do tego, żeby nauczyć się vim’a i za każdym razem mam problem, żeby go zamknąć, jak już się przez przypadek otworzy.

Jedną, z rzeczy których jeszcze nie zrobiłem, jest deploy przez git’a. Chodzi o to, żebym mógł kilkoma komendami automatycznie umieszczać wersję produkcyjną aplikacji na serwerze. Nie mam pojęcia, czy da się to zrobić i jak to będzie wyglądało, ale raczej powinno się dać. Później może będę próbował, a na razie po prostu sklonowałem repozytorim z GitHub. Doinstalowałem Node.js, NPM, Composer i kilka innych, żeby móc pobrać wszystkie zależności. Po pobraniu zależności musiałem jeszcze ustawić uprawnienia dla katalogów w API i skompilować aplikację w Angularze.

Pojawiło się kilka drobnych problemów. Po pierwsze, musiałem usunąć prefix /api/ z API, bo dodawał mi je Apache i każdy adres wyglądał tak:

http://example.com/api/api/controller

Następnie musiałem zbudować aplikację w Angularze. O mały włos i by się to nie udało. Za pierwszym razem kompilacja przerwała się w 69% ( ( ͡° ͜ʖ ͡° ) ), i z którąś próbą się w końcu udało. Nie wiedziałem, co było przyczyną. Później chciałem skompilować jeszcze raz i znów to samo. Dopiero później zorientowałem się, że na końcu pojawiał się napis „killed”, co oznaczało, że proces został zabity. I wszystko było jasne, 1GB ramu, to trochę mało na kompilację. Udaje się to zrobić tylko wtedy, kiedy wyłączę Apache’a a i tak na styk:

Screenshot from 2017-05-11 17-52-08

Przejrzałem na szybko dokumentację Apache’a i udało mi się napisać coś takiego:

<VirtualHost *:80>
    DocumentRoot /var/www/warsztat/application/dist

    Alias "/api" "/var/www/warsztat/api/web"

    <Directory /var/www/warsztat/application/dist>
        AllowOverride All
        Order Allow,Deny
        Allow from All
    </Directory>

    <Directory /var/www/warsztat/api/web>
        AllowOverride All
        Order Allow,Deny
        Allow from All
    </Directory>

    ErrorLog /var/log/httpd/project_error.log
    CustomLog /var/log/httpd/project_access.log combined
</VirtualHost>

Stworzyłem virtual hosta, który dla wszystkich zapytań o porcie 80 pobiera index z katalogu frontendu, a dla /api pobiera index z plików API.

Tym sposobem adres do API wygląda tak:

http://example.com/api
lub
http://example.com:80/api

a dla frontendu:

http://example.com/
lub
http://example.com:80/

Najlepszym rozwiązaniem, byłoby chyba ustawienie subdomeny api.example.com dla API, ale nie kupiłem jeszcze domeny, więc na chwilę obecną zostaje tak, jak jest.

Nie podaję jeszcze adresu serwera, ponieważ jest to jeszcze bardzo wczesna alpha, a do tego znów wysypał się generator numerów dokumentu i muszę rozwiązać ten problem inaczej.

To tyle na dziś.

Pozdrawiam!
MTK

Proudly powered by WordPress | Theme: Baskerville 2 by Anders Noren.

Up ↑