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.