ArchLinux jako serwer hostingowy – nginx + MariaDB + FTP

archlinux

Witam, dziś znowu rozwiązanie hostingowe – może dużo tego – ale staram się opisywać i poruszać zagadnienia mimo wszystko ciekawe i potrzebne dla niektórch. Tak czy inaczej – ArchLinux i hosting ? Można.. tylko trzeba chcieć i mieć trochę cierpliwości – szczególnie jeśli do czynienia mamy z Archem pierwszy raz – sam proces konfiguracji wg. mnie jest może i dość czasochłonny (od zera) ale z moim poradnikiem będzie mam nadzieje ekspresowo.

Do napisania poradnika użyłem VPSa z OVH – gama serwerów SSD.

Kernel:

# uname -a
Linux vps189954.ovh.net 4.1.6-1-ARCH #1 SMP PREEMPT Mon Aug 17 08:52:28 CEST 2015 x86_64 GNU/Linux
  • serwer www: nginx 1.9.2 + GooglePageSpeed skompilowany w tym poradniku.
  • baza danych: MariaDB z repozytoriów twórców – na chwile pisania artykułu v. 10.0.21
  • PHP: PHP5-FPM wersja w chwili pisania 5.6.13  / + Ioncube + Opcache
  • Serwer FTP: vsftpd, z certyfikatem SSL (używaj Filezilla)
  • PHPMyAdmin: ostatni z repozytoriów ArchLinuxa

 

1. Kompilacja NGINX (custom – są tam dodatkowe paczki m. in GooglePageSpeed)

a) Potrzebne paczki

pacman -Sy git base-devel nano wget curl htop

b) Potrzebni użytkownicy uprawnienia

useradd build 
echo 'build ALL=(ALL) NOPASSWD: ALL' > /etc/sudoers
mkdir -p /home/build ; chown build:build /home/build
su build
cd $home

c) źródła NGINX
wersja 1.9.2: @na dzień 11.11.2015 – 1.9.6

git clone https://aur.archlinux.org/nginx-custom-dev.git

lub wersja 1.8.0:

git clone https://aur.archlinux.org/nginx-custom.git

kompilacja:

cd nginx-custom-dev

lub dla wersji 1.8.0

cd nginx-custom

d) budowa paczki

makepkg -sri

Po zbudowaniu paczki system zapyta czy zainstalować. Zgadzamy się na to.

2. Konfiguracja serwera nginx
a) przygotowanie

sudo su
mkdir -p /etc/ssl/private; chmod -R 710 /etc/ssl/private ; cd /etc/ssl/private
openssl dhparam -out dhparams.pem 2048
chmod 600 /etc/ssl/private/dhparams.pem ; cd /root
rm /etc/nginx/sites-available/* ; rm /etc/nginx/sites-enabled/* ; rm /etc/nginx/nginx.conf
mkdir -p /etc/nginx/conf.d

b) gotowe pliki konfiguracyjne

wget http://pliki.linuxiarz.pl/09-2015/arch/nginx.conf -O /etc/nginx/nginx.conf 
wget http://pliki.linuxiarz.pl/09-2015/arch/default.conf -O /etc/nginx/conf.d/default.conf
mkdir /var/ngx_pagespeed_cache  
chown -R http: /var/ngx_pagespeed_cache 

3. Instalacja serwera PHP (wersja 5.6.13 na dzień pisania poradnika)

pacman -Sy php-fpm  php-gd php-imap php-sqlite imagemagick # php-mysql
rm /etc/php/php-fpm.conf ; wget http://pliki.linuxiarz.pl/09-2015/arch/php-fpm.conf -O /etc/php/php-fpm.conf
rm /etc/php/php.ini ; wget http://pliki.linuxiarz.pl/09-2015/arch/php.ini -O /etc/php/php.ini
wget http://pliki.linuxiarz.pl/08-2015/php5/ioncube_loader_lin_5.6.so -O /etc/php/ioncube_loader_lin_5.6.so
systemctl start php-fpm

4. Instalacja Bazy danych MariaDB v. 10.0.21

pacman -Syu mariadb mariadb-clients phpmyadmin php-mcrypt perl-dbd-mysql
mysql_install_db --user=mysql --basedir=/usr --datadir=/var/lib/mysql
systemctl start mysqld
/usr/bin/mysql_secure_installation

5. a) Nowy użytkownik na potrzeby FTP – aby wgrać pliki witryn internetowych.

useradd -m -d /srv/http -s /bin/bash -c "User stron internetowych" -U www
chown -R www:www /srv/http
passwd www # ustaw haslo do ftp

b) Instalacja FTP:

pacman -Sy vsftpd unzip
cp /etc/vsftpd.conf /etc/vsftpd_bak.conf 
wget http://pliki.linuxiarz.pl/08-2015/ftp/vsftpd.conf -O /etc/vsftpd.conf; touch /etc/vsftpd.chroot_list
wget http://pliki.linuxiarz.pl/08-2015/ftp/private.zip
unzip private.zip; mv private/* /etc/ssl/private; rm private.zip; mkdir -p /var/run/vsftpd/empty
systemctl restart vsftpd

6. Narzędzia:

pacman -Sy phpmyadmin
echo '<?php phpinfo(); ?>' > /srv/http/info.php
ln -s /usr/share/webapps/phpMyAdmin /srv/http/pma

7. Uruchamianie przy starcie:

systemctl enable nginx
systemctl enable vsftpd
systemctl enable mysqld
systemctl enable php-fpm

i na końcu uruchomienie ponowne:

reboot

Po instalacji:
PHPMyAdmin – http://twoj-adres/pma/
PHPInfo – http://twoj-adres/info.php