Landing Page dla naszego projektu

Wstęp

Dziś zajmiemy się promocją naszego przyszłego projektu. Do tego najlepiej wykorzystać coś prostego, no dobra ja jestem z tych co nie lubią się męczyć ze stroną internetową. W sumie to narzędzie nie powinno sprawiać problemów, nie ma się co szarpać jeśli nie mamy ludzi od promocji.

Zatem weźmy się do roboty, strona produktu…

I jeszcze raz od początku, zacznijmy od serwera Apache.

Apache + PHP

Już to przerabialiśmy mnóstwo razy, ale i tak zrobimy sobie jeszcze raz, ale trochę inaczej. Zatem do dzieła. Aktualizujemy repozytoria:

apt-get install python-software-properties software-properties-common
LC_ALL=C.UTF-8 add-apt-repository ppa:ondrej/php
apt-get update

i dalej serwer:

apt-get install apache2 php7.2 php7.2-fpm libapache2-mod-php7.2

I konfigurujemy. Wchodzimy do katalogu stron:

cd /etc/apache2/sites-available/

I tworzymy naszą konfigurację:

vim app.e-strix.com.conf

dalej, uzupełniamy zawartość pliku:

<VirtualHost *:80>
 ServerAdmin admin@e-strix.pl
 ServerName app.e-strix.com
 DocumentRoot /var/www/app.e-strix.com/public_html

 <Directory "/var/www/app.e-strix.com/public_html/">
   AllowOverride All
   Order allow,deny
   Allow from all
  </Directory>


 ErrorLog /var/www/app.e-strix.com/error.log
 CustomLog /var/www/app.e-strix.com/access.log combined
</VirtualHost>

Dodajemy katalog:

mkdir -p /var/www/app.e-strix.com

Teraz dodamy użytkownika i dodamy do grupy www-data:

adduser appuser
usermod -a -G appuser www-data

Tworzymy katalog publc_html w katalohu użytkowanika:

mkdir -p /home/appuser/public_html/

Teraz zrobimy coś nowego, czyli link symboliczny:

ln -s /home/appuser/public_html /var/www/app.e-strix.com

Po co nam to? O tym później…

A teraz niespodzianka, coś nowego. Postawimy sobie serwer FTP’a.

FTP

Po co on nam jest? A no po to by WordPress sam sobie dociągał pluginy czy też aktualizacje. Na początku wspominałem o chęci pozbycia się problemów a to rozwiązanie daruje nam wiele prac administracyjnych.

Teraz instalujemy na VPS’ie demona:

apt-get install vsftpd

Teraz zróbmy kopię zapasową oryginalnego pliku z konfiguracją:

mv /etc/vsftpd.conf /etc/vsftpd.conf.orig

I teraz potrzebujemy własnej konfiguracji, czyli tworzymy nasz plik:

vim /etc/vsftpd.conf

Z zawartością:

listen=YES
anonymous_enable=NO
local_enable=YES
write_enable=YES
local_umask=022
dirmessage_enable=YES
use_localtime=YES
xferlog_enable=YES
connect_from_port_20=YES
chroot_local_user=YES
secure_chroot_dir=/var/run/vsftpd/empty
pam_service_name=vsftpd
rsa_cert_file=/etc/ssl/certs/ssl-cert-snakeoil.pem
rsa_private_key_file=/etc/ssl/private/ssl-cert-snakeoil.key
allow_writeable_chroot=YES
pasv_enable=YES
pasv_min_port=40000
pasv_max_port=50000
seccomp_sandbox=NO
user_sub_token=$USER
local_root=/home/$USER/public_html
userlist_enable=YES
userlist_file=/etc/vsftpd.userlist
userlist_deny=NO

Notatka: Zwróć uwagę że kopiowanie całości ustawień doda specyficzny znak końca linii, i wtedy serwer może się nie uruchomić.

Teraz zaczyna się już wszystko układać w całość.

Dodajmy teraz użytkownika do listy vsftpd.userlist.

echo "appuser" | tee -a /etc/vsftpd.userlist

I restartujemy naszego daemona:

service vsftpd restart

 I tu druga ciekawostka, czyli baza danych.

MySQL

No dobra, zajmijmy się dodaniem bazki. Tutaj też coś mało problemowego. Trzymam się firmy Oracle z większością produktów, dlatego małe projekty stawiam na bazach MySQL. Możesz się sprzeczać o to że są lepsze, że np. Postgresql jest o niebo lepsze, że bla bla bla. Uwierz mi, że źle utworzone zapytanie zarżnie każdą bazę, lub też przechowywanie zbyt dużej ilości danych archiwalnych przymuli każdy filesystem, a nam chodzi tu o prostotę i dostępność.

Zaczynamy oczywiście od instalacji:

apt-get install mysql-server php7.2-mysql

W trakcie tego procecsu, musimy mieć ustalone hasło do root. I w zasadzie tyle. Po zakończonym procesie instalacji możemy utworzyć bazę dla naszego CMS’a i użytkownika z którego będzie się ten CMS łączył do bazki.

Notatka: Nie łączymy się do bazy za pośrednictwem użytkownika root! W przyszłości pokażę dlaczego.

A zatem wchodzimy do MySQL’a z użytkownika root:

mysql -u root -p

I po wpisaniu hasła przystępujemy do tworzenia naszej bazy:

CREATE DATABASE app_e_strix_com;

Mamy bazę, więc dodamy użytkownika:

CREATE USER 'appuser'@'localhost' IDENTIFIED BY 'password';

Nazwa użytkownika bazy jest zbieżna z nazwą użytkownika systemy, ale nie jest zależna. Mamy dowolność w dodawaniu nazw oraz haseł 😉

Teraz nadamy prawa do bazy. Nie chcemy aby żaden problemik pozamiatał nam tabele więc nie damy pełnych praw:

GRANT CREATE,DELETE,INSERT,SELECT,UPDATE ON app_e_strix_com.* TO appuser@localhost;

Notatka: Delete jest dyskusyjne, możemy w prawdzie ustawić trigger, aby nam przenosił dane w inne miejsce ale w tej chwili wykracza to poza potrzeby prezentacji.

Teraz już mamy strukturę naszych katalogów, więc spokojnie możemy dodać naszą konfigurację Apache, a zatem:

a2ensite app.e-strix.com

I przeładowanie:

service apache2 reload

Notatka: Dlaczego teraz a nie wcześniej? Odpowiedź jest prosta, po instalacji MySQL trzeba przeładować apache, aby nowo zainstalowane moduły były widoczne. W prawdzie można przeładować kilka razy, nie zaszkodzi, ale stwierdziłem że wykonam to właśnie w taki sposób.

A teraz nasz CMS, czyli instalacja WordPress’a.

WordPress

W prawdzie można użyć hostingu z już zainstalowanym CMSem, ale takie rozwiązanie jest mało elastyczne. Mam na myśli instalacje innych rzeczy niż tylko jednego narzędzia.

Przejdźmy do katalogu użytkownika:

cd /home/appuser/

I pobieramy WordPress:

wget https://wordpress.org/latest.tar.gz

A teraz rozpakujemy paczkę:

tar zxvf latest.tar.gz

I zawartość przenosimy do katalogu public_html:

mv ./wordpress/* ./public_html/

I czyścimy niepotrzebne pliki:

 rm -r latest.tar.gz wordpress/

I nadajemy prawa do katalogu:

chown -R appuser:www-data public_html/
chmod -R 774 public_html/

Z poziomy administracji już wszystko gra, teraz użyjemy przeglądarki do finalizacji procesu instalacji:

A teraz instalacja numer 2, czyli już coś ładnie wygląda.

1. Wpisujemy dane naszej bazki

Teraz wypełnijmy formularz danymi, które ustaliliśmy przy tworzeniu bazy MySQL. I przechodzimy dalej.

 

2. Ustalamy konto administratora

Warto je sobie zapisać, żeby nie szukać w przyszłości. Mam na myśli sytuację, gdy będzie potrzeba coś zmienić, lub dodać osobę zajmującą się stroną. Gdy nasza aplikacja nabierze rozgłosu, może wystąpić sytuacja że nie będzie możliwości ogarnięcia wszystkiego w pojedynkę.

Klikamy przycisk „Let’s go!”.

Wypełniamy formularz i przechodzimy dalej:

Zakończenie

No i teraz mamy wszystko. Pozostaje nam wybrać sobie ładny layout i theme. Podłączyć statystyki googlowskie, lub coś innego np Piwik’a, lub zupełnie coś innego… Potem integracja z AdSense, może strona na początku na siebie zarobi, i integracja z portalem społecznościowym, ja wybiorę facebook. Ale o tym w przyszłości. Na chwilę obecną mamy domyślny motyw i to w rezultacie jest dobrym fundamentem do pracy.

svn + WebSVN

Wstęp

Każdy etap prowadzenia projektu wiąże się nierozerwalnie z posiadaniem kodu oraz dokumentacji do projektu. Każdy programista wie jak ważny jest czas poświęcony na tworzenie algorytmów i ich implementacja. Jeśli jesteś osobą, która nie doświadczyła jeszcze utraty kodu poprzez błąd systemu lub dysku, spokojnie możesz zignorować poniższy tutorial, w innym przypadku zapraszam do zapoznania się z instrukcją jak postawić własny serwer kontroli wersji za złotówkę miesięcznie.

Oczywiście zapytasz czy słyszałem o dobrodziejstwie takim jak GitHub czy inny serwer. Tak, coś mi się obiło przypadkiem o uszy… Problem jest taki że darmowe konta są publiczne a prywatne kosztuje dziś 7 dolarów amerykańskich. Za tę kwotę można spokojnie wykupić sobie  serwer prywatny (trochę więcej niż wersję podstawową) i samodzielnie postawić odpowiednie narzędzia. Nie będę opisywał jak korzystać z Subversion, jest tego pełno w internecie…

W tym artykule poruszę konfigurację Subversion, opowiem o tym jak zainstalować go na serwerze z systemem Ubuntu, skonfigurować odpowiednie pliki oraz ścieżki. W dalszej części pokażę jak zainstalować klienta webowego WebSVN do przyjemnego podglądania zmian w repozytorium. Jeśli jesteś fanem gita, zachęcam do zobaczenia artykułu o instalacji gita wraz z klientem webowym GitList tutaj.

 

L.P. Czego potrzebujemy
1 VPS
2 System Operacyjny ja wybrałem Ubuntu 16.04
3 Dostęp po SSH z prawami root
4 http://websvn.tigris.org/files/documents/1380/49057/websvn-2.3.3.zip
5 Skonfigurowana domena na serwer VPS

Instalujemy PHP

Serwer który ja wybrałem oferuje instancję Ubuntu 16.04, która posiada w sobie zainstalowaną wersję PHP 7.0, jest ona wystarczalna dla naszych potrzeb. Jeśli zdecydujesz się na instalację wyższej wersji lub niższej, też jest ok. Wykorzystywane narzędzia wymagają PHP 5, zatem bez wahania decyduj.

apt-get install php7.0 php7.0-fpm -y

Instalujemy Apache

Kolejny krok to instalcja serwera apache, może również wykorzystać nginx. Ja korzystam z Apache chyba przez zasiedzenie. Jest on dość prymitywny ale działa i jest łatwy do konfigurowania. Apache spokojnie może obsługiwać do 250 użytkowników jednocześnie więc dla niewielkich stron można śmiało przy nim zostać, jeśli przewidujemy ruch do 1000 użytkowników jednocześnie zainteresujmy się serwerem nginx lub stworzeniem farmy serwerów.

Wykonajmy polecenie:

apt-get install subversion apache2 libapache2-svn libapache2-mod-php php-xml-parser

Ok, teraz mamy zainstalowany serwer i czas na konfigurację. Przejdźmy do katalogu dostępnych stron w serwerze i stwórzy nasz plik konfiguracyjny:

cd /etc/apache2/sites-available/
vim svn.e-strix.com.conf

Ja używam Vim’a do edycji, ale użyj dowolnie. Początki z edytorami textowymi są trudne ale warte nauki.

Plik wypełnij zawartością wg nw. listingu:

<VirtualHost *:80> 
ServerAdmin kontakt@e-strix.pl 
ServerName svn.e-strix.com 

DocumentRoot /var/www/svn.e-strix.com/public_html/ 

<Directory "/var/www/svn.e-strix.com/public_html/"> 
DirectoryIndex index.php index.html 
Options FollowSymLinks 
AllowOverride All 
</Directory> 

<Location /repo> 
DAV svn 
SVNParentPath /home/svnuser/repo 
SVNListParentPath On 
</Location> 

ErrorLog /var/www/svn.e-strix.com/error.log 
CustomLog /var/www/svn.e-strix.com/access.log combined 
</VirtualHost>

Stwórz katalog w którym będą nasze aplikacje:

mkdir -p /var/www/svn.e-strix.com/

ustaw stronę jako aktywną i przeładuj ustawienia Apache:

a2ensite svn.e-strix.com
service apache2 reload

Tworzymy repozytorium

Repozytorium subversion podobnie jak git’a może być gdziekolwiek na dysku. Dla zachowania przejrzystości, utworzymy konto użytkownika svn a w nim katalog z naszymi projektami.

Zatem dodajemy użytkownika i uzupełniamy dane o które poprosi system:

adduser svnuser
usermod -a -G svnuser www-data

Dalej tworzy nasz katalog repozytorium:

mkdir -p /home/svnuser/repo/

Gdy poprawnie zainstalujemy pakiet subversion, dostępne będzie dla nas narzędzie svnadmin do zarządzania projektami. Korzystamy z niego dodając nowe repozytorium:

svnadmin create /home/svnuser/repo/project1

Przejdźmy teraz do innego katalogu, ja wybrałem katalog /tmp i pobierzmy kopię repozytorium. W tym przypadku posłużę się kopiowaniem z pliku, komenda co jest skrótem od checkout. A zatem:

cd /tmp/
svn co file:///home/svnuser/repo/project1

Subversion pobrał na projekt, wejdźmy do środka i stwórzmy dowolny plik. Ja wybrałem .svnignore, może być dowolny:

cd project1/
touch .svnignore

Teraz dodajmy go używając komendy add oraz wypchnijmy zmiany do naszego repozytorium ci -m „comment”, bardzo ważne jest używanie przełącznika -m:

svn add .svnignore
svn ci -m "init commit"

Dodajemy klienta webowego

Jest wiele dostępnych na rynku klientów webowych, każdy z nich działa. Nie będę się rozdrabniał na to, który jest mikrosekundę szybszy czy ma lepiej napisany kod. To jest dla nas nie istotne bo i tak w większości będziemy pracować na lokalnych maszynach w wybranym IDE lub konsoli. WebSVN u mnie wygrał ze względu na intuicyjność i funkcjonalność. Ma też przyjemny interfejs, który mnie nie denerwuje więc dobrze mi się z nim pracuje.

W pierwszej kolejności musimy nadać prawa do katalogu repozytorium dla użytkownika www-data, który jest wykorzystywany przez serwer www.

Notatka: Nie jest to część poświęcona idealnemu skonfigurowaniu katalogów. Jeśli masz życzenie tworzyć hierarchię grup i użytkowników to śmiało.

Zatem zmieniamy właściciela katalogu:

cd /home/svnuser
chown -R svnuser:www-data repo/

Przejdźmy teraz do naszego katalogu aplikacji i pobierzmy klienta:

Notatka: wymagany jest program wget.

cd /var/www/svn.e-strix.com/
wget http://websvn.tigris.org/files/documents/1380/49057/websvn-2.3.3.zip

Teraz rozpakujmy pobrane archiwum, zmieńmy nazwę wypakowanego katalogu websvn-2.3.3 na public_html, zgodny z plikiem konfiguracyjnym serwera:

Notatka: Wymagany jest program unzip. Może nie być zainstalowany domyślnie.

unzip websvn-2.3.3.zip
mv websvn-2.3.3/ public_html/

Wyczyścimy śmieci i nadamy właściciela plików:

rm websvn-2.3.3.zip

chown -R www-data:www-data public_html/

Konfiguracja klienta

Teraz już z górki. Do pełnego sukcesu potrzebujemy jeszcze skonfigurować naszego klienta z utworzonym repozytorium.

Przechodzimy do katalogu public_html/include i w nim musimy utowrzyć plik konfiguracyjny. Całe szczęście że dostawca załączył przykładowy plik distconfig.php, który możemy wykorzystać… Utworzymy plik w tej lokalizacji o nazwie config.php.

cd public_html/include
vim config.php

Jego zawartość znajduje się na nw. listingu. Więc przekopiuj i zapisz plik:

<?php
$config->parentPath('/home/svnuser/repo');
$config->addTemplatePath($locwebsvnreal.'/templates/calm/','group');
?>

Teraz spokojnie możemy wpisać adres w przeglądarce i naszym oczom pojawi się zawartość naszego jednego repozytorium. Ale co w przypadku gdy bym miał ich więcej? Spokojnie… w przypadku gdy jest tylko jedno repo aplikacja od razu przekierowuje na jej zawartość, jeśli będzie więcej projektów, pierw ukaże się nam ich lista.

Dodajmy na serwerze kolejny projekt:

svnadmin create /home/svnuser/repo/project2
chown -R svnuser:www-data /home/svnuser/repo/project2/
chmod -R 774 /home/svnuser/repo/project2/

I teraz spróbujemy skorzystać z innego komputera, w taki sposób aby ruch odbył się przez sieć. Ja użyłem swojego laptopa.

Przechodzimy na dowolny katalog z prawami zapisu.

Teraz pobieramy nasze repozytorium:

svn co http://svn.e-strix.com/repo/project2/

Dodamy jakiś plik do projektu i wypchniemy zmiany na serwer:

cd project2/
vim index.html
svn add index.html
svn ci -m "init commit"

Zmiany możemy obserwować już na serwerze.

Podsumowanie

Systemy kontroli wersji są podstawą przy pracy programisty czy DevOps’a, szukanie błędów w kodzie czy winnych jest dużo łatwiejsze gdy można śledzić każdą zmianę. Powstaje także odpowiedzialność osoby za swoje „dzieło”. Kolejnym plusem okazuje się możliwość zdalnego budowania poprzez odpowiednie narzędzia CI takie jak Hudsom, Jenkins, Travis czy TeamCity, które można ustawić w taki sposób aby czasowo budowały aplikację czy dla każdego komitu. Tak rozproszony system bardzo przyspiesza pracę nad projektem i pozwala deweloperowi skupić się nad konkretnym zadaniem.

Co wybrać? Czy Subversion czy Git? Ja używam obu w pracy, dla nowych projektów zainteresowałbym się gitem ale i svn też jest bardzo popularny. Pamiętajcie że duże instytucje nie lubią zmian…

git + GitList

 Wstęp

Każdy etap prowadzenia projektu wiąże się nierozerwalnie z posiadaniem kodu oraz dokumentacji do projektu. Każdy programista wie jak ważny jest czas poświęcony na tworzenie algorytmów i ich implementacja. Jeśli jesteś osobą, która nie doświadczyła jeszcze utraty kodu poprzez błąd systemu lub dysku, spokojnie możesz zignorować poniższy tutorial, w innym przypadku zapraszam do zapoznania się z instrukcją jak postawić własny serwer kontroli wersji za złotówkę miesięcznie.

Oczywiście zapytasz czy słyszałem o dobrodziejstwie takim jak GitHub czy inny serwer. Tak, coś mi się obiło przypadkiem o uszy… Problem jest taki że darmowe konta są publiczne a prywatne kosztuje dziś 7 dolarów amerykańskich. Za tę kwotę można spokojnie wykupić sobie  serwer prywatny (trochę więcej niż wersję podstawową) i samodzielnie postawić odpowiednie narzędzia. Nie będę opisywał jak korzystać z Git’a, jest tego pełno w internecie…

W tym artykule poruszę konfigurację systemu Git, opowiem o tym jak zainstalować go na serwerze z systemem Ubuntu, skonfigurować odpowiednie pliki oraz ścieżki. W dalszej części pokażę jak zainstalować klienta webowego GitList do przyjemnego podglądania zmian w repozytorium. Jeśli jesteś fanem Subversion, zachęcam do zobaczenia artykułu o instalacji svn’a wraz z klientem webowym WebSVN tutaj.

L.P. Czego potrzebujemy
1 VPS
2 System Operacyjny ja wybrałem Ubuntu 16.04
3 Dostęp po SSH z prawami root
4 https://github.com/klaussilveira/gitlist/releases
https://s3.amazonaws.com/gitlist/gitlist-0.3.tar.gz
5 Skonfigurowana domena na serwer VPS

1. Instalujemy PHP7.2 na Ubuntu 16.04

Gdy mamy zainstalowany system Ubuntu 16.04 w wersji serwerowej, mamy już zainstalowany PHP w wersji 7.0, dla naszego artykułu nie potrzebujemy wyższej wersji (w sumie wersja 5 jest równie dobra) ale pokażę jak podbić wersję do PHP 7.2.

Dodajmy pierw odpowiednie repozytoria do czystej instancji VPSa:

apt-get install python-software-properties software-properties-common 
LC_ALL=C.UTF-8 add-apt-repository ppa:ondrej/php 
apt-get update

Teraz usuńmy poprzednie (jeśli istnieją) instalacje:


1
apt-get remove php5-common -y

lub opcja purge, usuwanie z konfiguracjami:


1
apt-get purge php5-common -y

Teraz instalacja cora PHP7:

apt-get install php7.2 php7.2-fpm php7.2-xml -y

i czyścimy śmieci:


1
apt-get --purge autoremove -y

Wynik jaki uzyskaliśmy:

# php -v
PHP 7.2.3-1+ubuntu16.04.1+deb.sury.org+1 (cli) (built: Mar 6 2018 11:18:25) ( NTS )
Copyright (c) 1997-2018 The PHP Group
Zend Engine v3.2.0, Copyright (c) 1998-2018 Zend Technologies
 with Zend OPcache v7.2.3-1+ubuntu16.04.1+deb.sury.org+1, Copyright (c) 1999-2018, by Zend Technologies

2. Instalujemy GIT’a

Git jest dziś dostarczany do niemal każdej dystrybucji systemu operacyjnego. Jeśli z jakiegoś przypadku nie masz zainstalowanego git’a, oto komenda naprawiająca ten błąd.

apt-get install git

W wyniku oczywiście otrzymamy najnowszą wersję uznaną przez prowajdera:

# git --version
git version 2.7.4

3. Instalujemy Apache2

Kolejny krok to instalacja serwera, który będzie obsługiwał klienta webowego. Wybieram Apache ze względu na własne zasiedzenie przy nim. Nie ma też problemu z wykorzystaniem konkurencyjnych produktów.

apt-get install apache2 libapache2-mod-php

Dodajemy jeszcze moduł rewrite, aby pozbyć się niepotrzebnych nazw skryptów z url’a. Po tym musimy zrestartować serwer. Nie wystarczy sam reload, to jest za poważna zmiana ustawień.

a2enmod rewrite
service apache2 restart

Wynik:

Zainstalowany Apache2

 

4. Dodajemy stronę git.e-strix.com

Teraz dodamy konfigurację naszej strony. Jest to konieczne aby zmienić wyświetlany domyślny katalog dla apache.

Notatka: Ważne jest aby dodać do naszych hostów adres IP i nazwę domeny. Dla mnie to będzie git.e-strix.com. Osobiście korzystam z hostingu i definicji rekordów A.

cd /etc/apache2/sites-available

i dalej tworzymy plik konfiguracyjny naszej strony:

vim git.e-strix.com.conf

Notatka: Możesz nie mieć zainstalowanego edytora tekstowego. Dla mojej pracy używam Vim’a, bo go lubię i znam. Nie ma powodów żeby wybierać tylko jego. Jeśli wolisz Nano czy masz zainstalowany program MidnightCommander z wewnętrznym edytorem, śmiało wybierz najlepszą dla siebie opcje.

Zawarość pliku:

<VirtualHost *:80>
        ServerAdmin kontakt@e-strix.pl
        ServerName git.e-strix.com
        DocumentRoot /var/www/git.e-strix.com/public_html/

        <Directory "/var/www/git.e-strix.com/public_html/">
                DirectoryIndex index.php index.html

                Options FollowSymLinks
                AllowOverride All
        </Directory>

        ErrorLog /var/www/git.e-strix.com/error.log
        CustomLog /var/www/git.e-strix.com/access.log combined

</VirtualHost>

Tworzymy katalog docelowy, gdzie będą przechowywane pliki aplikacji GitList:

mkdir -p /var/www/git.e-strix.com/public_html

i każemy apache udostępnić naszą stronę w sieci:

a2ensite git.e-strix.com.conf
service apache2 reload

Notatka: Pamiętaj o dodaniu przekierowania DNS na IP serwera na którym stawiasz serwer.

Efekt:

5. Instalujemy GitList

Aplikacja GitList jest stworzona w PHP i jest prosta w obsłudze, dlatego postanowiłem o niej napisać. Jako programista nie mam zamiaru poświęcać więcej czasu na administrację serwer niż jest to konieczne. Dlatego wybieram narzędzia oparte o PHP aby nie bawić się w budowanie, publikowanie i namiętne analizowanie dzienników.

Zatem podążając wg instrukcji:

  • Pobieramy GitList z gitlist.org i wypakowujemy do naszego katalogu /var/www/gitlist.e-strix.com/public_html/
  • Zmieniamy nazwę pliku config.ini-example na config.ini
  • Podmieniamy ścieżkę repozytorium
  • Tworzymy catalog cache z uprawnieniami czytanie/pisanie wg. instrukcji

Notatka: Ja wybrałem wersję 0.3 –  z powodu błędu jaki uzyskałem w nowszej wersji. W przyszłości spróbuję aktualizować aplikację, natomiast na chwilę obecną będę obserwował. Błędy wynikają niestety z wersji PHP7, dla wersji 7.2 build z 6 marca dalej nie pomógł.

cd /var/www/git.e-strix.com/public_html
wget https://s3.amazonaws.com/gitlist/gitlist-0.3.tar.gz

Rozpakujemy pobrane archiwum i zmienimy nazwę katalogu na public_html, jako ten z którego korzysta serwer. W dalszej kolejności należy nadać właściciela dla wszystkich plików.

Notatka: Jeśli korzystasz z użytkownika root do wykonania wszystkich czynność (zakładam że tak, i instalujesz na świeżej instancji serwera), to zmuszony jesteś nadać odpowiednie prawa do wszystkich katalogów i plików, lub najprościej zmienić właściciela plików. Domyślnym użytkownikiem, który obsługuje serwer apache jest www-data, i grupa www-data.

tar zxvf gitlist-0.3.tar.gz
rm gitlist-0.3.tar.gz
cd ..
chown -R www-data:www-data public_html/

W porządku teraz wg instrukcji musimy stworzyć katalog cache i nadać mu pełne prawa (sic!) w naszej aplikacji, więc wjedźmy do katalogu public_html i zróbmy to o co nas proszą:

cd public_html/
chmod 777 cache

Notatka: Katalog oczywiście się utworzy z właścicielem i grupą „root”, przy tych uprawnieniach nie mamy się co martwić brakiem uprawnień, ponieważ uprawnienia 777 są najwyższe jakie mogą być.

Teraz dodajmy konfigurację czyli zgodnie z ww. instrukcją, edytujemy plik config.ini i określamy gdzie będzie znajdowało się nasze repozytorium.

vim config.ini

Domyślnie jest ustawiona wartość „/home/git/repositories/„, myślę że spokojnie możemy wykorzystać ten katalog. Dla mojej pracy nie ma szczególnych wymagań co do tej struktury, a zatem do dzieła przejdźmy do dodania użytkownika git.

[git]
client = '/usr/bin/git' ; Your git executable path
repositories = '/home/git/repositories/' ; Path to your repositories

Dodajemy użytkownika i uzupełnimy potrzebne dane:

adduser git

Teraz należy dodać nasz katalog repozytorium:

mkdir -p /home/git/repositories/

Teraz wejdźmy do środka i dodajmy nasze pierwsze repozytorium:

cd /home/git/repositories/

git init --bare project1.git
chown -R git:git project1.git/

Czas sprawdzić czy nasze repozytorium działa i czy możemy się do niego dostać. Najlepiej sprawdzić to poprzez wykorzystanie innej maszyny, zatem przechodzimy na komputer lokalny lub inny dostępny i spróbujemy pobrać nasz projekt:

git clone git@git.e-strix.com:repositories/project1.git

No masz, działa…

Teraz wejdźmy do środka i zróbmy komit inicjalizacyjny:

cd project1/
touch .gitignore
git add .gitignore
git commit -m "init commit"
git push

Notatka: Pamiętaj o nadaniu odpowiednich uprawnień lub przypinanie użytkownika do odpowiedniej grupy w systemie.

 

W rezultacie otrzymamy wynik: