====== LAMP serwer ======
czyli jak zainstalować i skonfigurować na Linux: Apache, MySQL i PHP.
Zobacz także: [[Zmiana wersji PHP]].
Od wersji Debian 10 MySQL'a nie ma w standardowym repozytorium. Dodanie repozytorium:
apt-get install gnupg wget lsb-release
wget http://repo.mysql.com/mysql-apt-config_0.8.36-1_all.deb
dpkg -i mysql-apt-config_0.8.36-1_all.deb
Sprawdź jakie jest najnowsze repozytorium na stronie https://dev.mysql.com/downloads/repo/apt/.
Debian
apt-get update
apt-get install apache2
apt-get install mysql-server mysql-client
apt-get install php php-mysql
CentOS
yum update
yum install httpd
yum install mariadb-server mariadb
yum install php php-mysql
yum install mod_ssl openssl # Instalujemy mod_ssl
Wrzucamy pliki strony do ''/home/page/httpdocs/'', gdzie ''page'' to nazwa [[linux:użytkownicy|użytkownika]] (zamień wszędzie na swoją stosowną nazwę).
useradd --create-home --shell /bin/bash page
cd /home/page
sudo -u page mkdir httpdocs install logs backup
Teraz tworzymy konfigurację serwera Apache w ''/etc/apache2/sites-available'', np. ''/etc/apache2/sites-available/page.conf'' (patrz [[lamp#przykladowa-konfiguracja-apache|Przykładowa konfiguracja Apache]]).
W CentOS wystarczy utworzyć konfigurację w ''/etc/httpd/conf.d/page.conf'' - zostanie ona automatycznie zainkludowana.
a2ensite page
W ''sites-enabled'' powinno się pojawić dowiązanie do konfiguracji. Włączmy niezbędne mody Apache:
a2enmod headers
a2enmod ssl
a2enmod rewrite
W CentOS musimy ręcznie włączyć uruchamianie serwisów przy starcie systemu:
systemctl enable mariadb
systemctl enable httpd
Na koniec restartujemy serwis, żeby nowe ustawienia zaczęły obowiązywać:
service apache2 restart
service apache2 status
Jeżeli uruchamiamy stronę na HTTPS, musimy jeszcze wrzucić certyfikaty do katalogu ''/etc/apache2/ssl''. Zmieniamy właściciela plików strony:
chown -R www-data:www-data /home/page/httpdocs/ # W CentOS użytkownik ten nazywa się apache
W [[MySQL]] tworzymy bazę danych dla naszej strony, przykładowo (''page'' to nazwa naszej bazy):
mysql -u root -p
CREATE DATABASE IF NOT EXISTS page CHARACTER SET 'utf8' COLLATE utf8_polish_ci;
GRANT ALL PRIVILEGES ON page.* TO 'page'@'localhost' IDENTIFIED BY 'xxx';
FLUSH PRIVILEGES;
SELECT host, user, password FROM mysql.user ORDER BY user, host; # sprawdzenie
use page;
exit;
W sekcji ''[mysqld]'' dopisujemy do ''/etc/mysql/mysql.conf.d/mysqld.cnf'':
default-storage-engine=InnoDB
===== Przykładowa konfiguracja Apache =====
DocumentRoot /home/page/httpdocs
ServerName yourdomain.pl
ServerAdmin youremail@yourdomain.pl
Header always set Strict-Transport-Security "max-age=63072000; includeSubdomains;"
SSLEngine On
SSLCertificateFile /etc/apache2/ssl/certs/server.crt
SSLCertificateKeyFile /etc/apache2/ssl/private/server.key
SSLCertificateChainFile /etc/apache2/ssl/certs/chain.crt
ErrorLog /home/page/logs/ssl_error.log
CustomLog /home/page/logs/ssl_access.log combined
AddType application/x-httpd-php .php .php3 .php4 .inc
DirectoryIndex index.php index.php3 index.html
Options -Indexes +FollowSymLinks +Includes -ExecCGI
AllowOverride All
Require all granted
#Require all denied
#Require ip xxx
DocumentRoot /home/page/httpdocs
ServerName yourdomain.pl
ServerAdmin youremail@yourdomain.pl
Redirect permanent / https://yourdomain.pl
ErrorLog /home/page/logs/error.log
CustomLog /home/page/logs/access.log combined
AddType application/x-httpd-php .php .php3 .php4 .inc
DirectoryIndex index.php index.php3 index.html
Options -Indexes +FollowSymLinks +Includes -ExecCGI
AllowOverride All
Require all granted
#Require all granted
#Require not ip 212
#Require all denied
#Require ip xxx