• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Jak ustawić zewnętrzy serwer dla projektów PHP Symfony/Laravel

0 głosów
24 wizyt
pytanie zadane 13 lutego w Hostingi, domeny przez kevin Gaduła (4,070 p.)
edycja 13 lutego przez kevin

Cześć, piszę z takim dłuższym pytaniem/tematem i będę starał się opisywać co robię i dlaczego, Proszę o krytykę ponieważ chce dobrze zrozumieć to co tutaj opisuję. Dokładniej to chodzi mi o to jak poprawnie konfigurować serwer pod kilka projektów ( bez FPM'a) wszystkie projekty działają na takiej samej wersji php i mają dostęp do wszystkich zasobów.

Instaluję Apache2, PHP,  Yarn, Node, git, composer, MySQL. Jak to robić to nie będę opisywał więc zakładamy że to już jest.

Domyślna ścieżka na ka której pracuje Apache2 to /var/www/ config dla domyślnego v-hosta jest ustawiony na katalog /var/www/html. Domyślny użytkownik oraz grupa z jaką Apache uruchamia projekt to www-data .Można to zobaczyć wpisując polecenia apache2ctl -S. I z uprawnieniami dla tego użytkownika i grupy są uruchamiane strony jeżeli w przeglądarce wpiszemy adres www strony. Zakładamy że projekty będziemy trzymać w katalogu /var/www/ więc powinien pozwolić użytkownikowi www-data na odczyt i wykonanie skryptów php w tym katalogu, ale ten użytkownik nie może ich usuwać ( chodzi o sytuacje kiedy w skrypcie php jest unlink jakiegoś pliku php ). Inaczej jest w przypadku katalogu public/uploads do którego mogą być wysyłane zdjęcia, tam musi być już pozwolenie zapisu dla użytkownika www-data. Więc użytkownik www-data uruchamiający skrypty php musi mieć prawo do odczytu/wykonania skryptów ale pełne prawa do katalogu public/uploads oraz pełne prawa do katalogu z cache. Mam rację ?

Teraz praktyka:

Zaraz po zainstalowaniu Apache katalog /var ma takie ustawienia:

drwxr-xr-x  3 root root  4096 Feb  8 16:23 www

A w tym katalogu:

drwxr-xr-x  2 root root 4096 Feb  8 16:23 html

Właściciel i grupa to root, właściciel ma pełne prawa do katalogu grupa odczyt/wykonanie wszyscy pozostali tylko wykonanie. Jeżeli postawię projekt w tym katalogu to muszę to zrobić jako root wtedy automatycznie właścicielem stanie się root a użytkownik www-data będzie miał prawo tylko do wykonania skryptów. Więc ręcznie będę musiał ustawić chmod -R 777 public/images oraz katalogu z cache.

Nie powinno się stawiać projektów jako root chyba w ogóle każdy projekt powinien mieć swojego użytkownika aby jeden użytkownik nie miał dostępu do innego projektu.

 

1. Zakładając że jeden użytkownika ma dostęp do wszystkich projektów.

Tworzę swojego użytkownika deploy-user lub używam www-data:

useradd -m deploy-user -s /bin/bash

Zmieniam grupę ale zostawiam właściciela jako root katalogu /var/www na używanego użytkownika deploy-user albo www-data żeby mógł tworzyć katalogi, plikioraz aktualizować projekty przez gita i daję TYLKO grupie pełne prawa aby przypadkiem przez root nie zrobić git pull albo modyfikować czegoś w tym katalogu czy czegoś innego na projekcie ( może spowodować to utworzenie plików z prawami roota a przy zmianie chmod i chown git widzi to jako zmianę w plikach ) czyli:

chmod 070 -R /var/www/

chown -R root:deploy-user /var/www

lub

chown -R root:www-data /var/www

Tym sposobem otrzymujemy:

d---rwx---  3 root deploy-user  4096 Feb  8 16:23 www

lub

d---rwx---  3 root www-data  4096 Feb  8 16:23 www

Tylko deploy-user lub www-data może dokonywać jakichkolwiek zmian w tym katalogu.

Od tego momentu loguję się jako deploy-user lub www-data:

Zalogowany użytkownik powinien tworzyć wszystkie pliki i katalogi z ustawieniami:

Właściciel pliku - aktualny użytkownik

Grupa: zawsze ww-data

Uprawnienia: 750

        - Właściciel deploy-user albo www-data mogą dokonywać wszelkich zmian

        - Grupa może tylko wykonywać i odczytywać pliki nie może ich usuwać ( czyli jak apache wczytuje skrypty to z takimi uprawnieniami )

        - Pozostali nie mają żadnych praw

W takim wypadku ręcznie ustawiam chmod -R 770 public/images i dla katalogu z cache.

Nie wiem tylko jak ustawić domyślną maskę dla grupy ale tylko dla danego użytkownika Czyli jeżeli tworzę katalog jako root to mam właściciela i grupę root:root ale jeżeli tworzę jako deploy-user to mam właściciela i grupę deploy-user:www-data analogicznie z maską praw do plików/katalogów mask 750 ale tylko dla użytkownika deploy-user root już ma inną maskę. Czyli spersonalizowane ustawienia dla danego użytkownika.

Tworzę projekt poprzez: git clone repo_link nowy_projekt_z_gita

I zawierając poprzednie ustalenia to powinienem mieć stworzony katalog z ustawieniami:

Katalog: nowy_projekt_z_gita

chmod: 750

chown: deploy-user:www-data

Katalogi zawierające cache oraz przeznaczone do zapisu wysłanych zdjęć( public/uploads ) powinny być wpisane w git ignore więc mogę im ręcznie dać uprawnienia poprzez chmod -R 770

2. Każdy projekt ma swojego usera:

Zmieniam grupę i uprawnienia katalogu /var/www na:

chown -R root:root /var/www

chmod 707 -R /var/www

Dzięki temu każdy nowy użytkownik może tworzyć projekty w tym katalogu. Ale tworząc nowych użytkowników dla każdego projektu to zawartość katalogu /var/www wygląda tak:

drwxr-x---  3 user_projekt_1 www-data  4096 Feb  8 16:23 projekt_1

drwxr-x---  3 user_projekt_2 www-data  4096 Feb  8 16:23 projekt_2

Dalej już analogicznie jak w poprzednim punkcie.

I tyle. Czy to tak powinno być ?

Zaloguj lub zarejestruj się, aby odpowiedzieć na to pytanie.

Podobne pytania

0 głosów
0 odpowiedzi 82 wizyt
pytanie zadane 17 lutego 2018 w Sieci komputerowe, internet przez Vellur Gaduła (3,830 p.)
0 głosów
1 odpowiedź 250 wizyt
pytanie zadane 6 stycznia 2016 w Hostingi, domeny przez Uszmada Nowicjusz (120 p.)
0 głosów
0 odpowiedzi 79 wizyt
Porady nie od parady
Odznacz odpowiedź zieloną fajką, jeśli uważasz, że jest ona najlepsza ze wszystkich i umożliwiła ci rozwiązanie problemu.Najlepsza odpowiedź

61,405 zapytań

107,351 odpowiedzi

223,568 komentarzy

33,281 pasjonatów

Przeglądających: 338
Pasjonatów: 23 Gości: 315

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto dwie polecane książki warte uwagi. Pełną listę znajdziesz tutaj.

...