CentOS 7 64bit + nginx + mysql w 30 min.

Jest to przepis typu instant jak w 30 min postawić wirtualną maszynę lub VPS’a do celów prezentacyjnych. Poniższa konfiguracja nie uwzględnia konfiguracji silnika bazy danych, php-fpm, nginx, fail2ban oraz polityki SE/firewalla. Dodatkowo konfiguracja nginx jest zrobiona tak aby ruszyła na nim aplikacja pisana w Zend Framework 1.12. Jeżeli chcesz postawić sobie wewnętrzne środowisko developerskie to ten tutorial jest dla Ciebie. Jeżeli chcesz uruchomić na tym maszynę produkcyjną to przestań to robić już w tym momencie.

Instalacja MySQL

Aktualizujemy nasze repozytorium o najnowszą wersję MySQLa w edycji community i przeprowadzamy instalację.

sudo rpm -Uvh http://dev.mysql.com/get/mysql-community-release-el7-5.noarch.rpm
sudo yum -y install mysql-community-server

Dodajemy serwer MySQL do autostartu i go uruchamiamy:

sudo /usr/bin/systemctl enable mysqld
sudo /usr/bin/systemctl start mysqld

Rozpoczynamy wstępną konfiguracją serwera.

sudo /usr/bin/mysql_secure_installation

Po skonfigurowaniu serwera logujemy się do niego.

mysql -uroot -pMojeTrudneHaslo12345

Następnie zakładamy nowego użytkownika który będzie miał wszystkie uprawnienia oraz możliwość logowania się zdalnego. Root działa na chwilę obecną tylko z poziomu maszyny i sieci lokalnej.

GRANT ALL PRIVILEGES ON *.* TO 'user_all'@'%' IDENTIFIED BY 'MojeTrudneHaslo1234567890' WITH GRANT OPTION;

FLUSH PRIVILEGES;

Powinniśmy móc zalogować się do swojego serwera MySQL podając dane user_all i hasło MojeTrudneHaslo1234567890.

 

Instalacja PHP-FPM

Na instalowanej maszynie potrzebowałem PHP w wersji 5.5. W tym celu aktualizujemy repozytorium.

rpm -Uvh https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm
rpm -Uvh https://mirror.webtatic.com/yum/el7/webtatic-release.rpm

Przechodzimy do instalacji pakietów serwera PHP.

yum install php55w php55w-opcache php55w-odbc php55w-pecl-memcache php55w-soap php55w-xml php55w-mssql php55w-mysql php55w-gd php55w-common php55w-cli php55w-fpm php55w-mbstring php55w-devel php55w-mcrypt php55w-xml php55w-embedded-devel

Dodajemy PHP do auto startu i uruchamiamy je.

sudo /usr/bin/systemctl enable php-fpm
sudo /usr/bin/systemctl start php-fpm

 

Instalacja NGINX

W celu zainstalowania wersji 1.8 wydajemy komendę

yum install nginx18

Następnie dodajemy nginx do auto startu i uruchamiamy je.

sudo /usr/bin/systemctl enable nginx
sudo /usr/bin/systemctl start nginx

Przykładowa konfiguracja dla Zend Framework 1.12. Konfigurację wklejamy w plikach .conf w lokalizacji /etc/nginx/conf.d/

server {
    listen 80;
        server_name demo demo.example.pl;

    #access_log /usr/share/nginx/html/logs/access.log;
    #error_log /usr/share/nginx/html/logs/error.log;
    root /usr/share/nginx/html/Agility.B2B/public;

    location / {
        client_max_body_size 128M;
        client_body_buffer_size 128k;

        location /imagebrowser {
            break;
        }

        location /tmp {
            break;
        }
            
        location / {
                try_files $uri $uri/ /index.php$is_args$args;
            }

        index index.html index.htm index.php;
    }

    location ~ \.php$ {
        include /etc/nginx/fastcgi_params;
        fastcgi_pass  127.0.0.1:9000;
        fastcgi_index index.php;
        fastcgi_param SCRIPT_FILENAME /usr/share/nginx/html/Agility.B2B/public/$fastcgi_script_name;
    }
}

Jeżeli wersję testową postawiliśmy sobie na zewnętrznym serwerze to wypada zainstalować fail2ban i włączyć firewalla. W tym celu użyjemy poniższych komend.

yum install fail2ban
sudo /usr/bin/systemctl enable fail2ban
sudo /usr/bin/systemctl start fail2ban

sudo /usr/bin/systemctl enable firewalld
sudo /usr/bin/systemctl start firewalld

firewall-cmd --zone=public --add-port=80/tcp --permanent
firewall-cmd --zone=public --add-port=3306/tcp --permanent
firewall-cmd --reload

Kasztelan Paweł

Programista samouk, zakochany w ZF i Laravel, szerzący opinię że PHP + JS + HTML + CSS to są języki w których może zostać stworzona aplikacja równie dobra, a nawet lepsza od twardego klienta.