Arch Linux

LAMP telepítése Arch Linuxon

LAMP (Linux Apache Mysql Php) környezet telepítése aránylag egyszerű, a különféle komponenseket kell feltelepíteni, beállítani és elindítani.

1. Webszerver és php

Apache vagy Nginx: Sajnos apache mindenféleképpen kell, ha valami miatt .htaccess támogatást is kell nyújtanod. Ehhez javaslom a mod_itk használatát, amellyel VirtualHost-onként tudod megadni, hogy melyik linux user jogosultságaival fusson egy folyamat.

pacman -S apache mod_itk php-apache
pacman -S php-intl php-mcrypt php-gd php-pear

A webszerver beállítása mod_itk-hoz egy kicsit becsapós. Alapból az mpm_event van engedélyezve. Ezt kommentezd, illetve inkább az alábbiakat másold be:

#LoadModule mpm_event_module modules/mod_mpm_event.so                        
LoadModule unixd_module modules/mod_unixd.so                                 
LoadModule mpm_prefork_module modules/mod_mpm_prefork.so                     
LoadModule mpm_itk_module modules/mpm_itk.so

A php használatához erre van szükség:

LoadModule php5_module       modules/libphp5.so
AddHandler php5-script php
Include conf/extra/php5_module.conf

Pár konfiguráció van még hátra:

  1. Korrektól beállítani a betöltendő modulokat, amelyekre szükséged van
  2. dir_module bejegyzéshez felvenni az index.php-t
  3. VirtualHost beállítás
  4. httpd.conf alján az Include-ok kezelése (melyik kell, melyik nem kell)
  5. extra/httpd-mpm.conf-ban másolni az IfModule mpm_prefork_module, majd átnevezni: mpm_itk_module
  6. /etc/php/php.ini-ben a szükséges beállításokat megejteni.

Ezután már csak el kell indítani az apache-ot:

systemctl enable httpd
systemctl start httpd

2. Mysql telepítése

Az Oracle mysql alapból nem érhető el, viszont van mariaDb és Percona szerver. Én a MariaDb-t szoktam telepíteni.

pacman -S mariadb innotop xtrabackup

Az xtrabackup csak a mentések miatt szükséges.

Inicializálni kell az adatbázisokat:

mysql_install_db --user=mysql --basedir=/usr --datadir=/var/lib/mysql

Ezután indítsd el a szervert, és adj egy új jelszót a root-nak:

systemctl enable mysqld
systemctl start mysqld
/usr/bin/mysqladmin -u root password 'new-password'
/usr/bin/mysqladmin -u root -h szervered_fqdn_hosztneve password 'new-password'

3. Ftp szerver telepítése

Magam részéről a pure-ftpd-t kedvelem. Az aur4-ről való telepítéshez:

yaourt pure-ftpd-db

Telepítés közben editálni szoktam a PKGBUILD fájlt, kiveszem a postgresql-re vonatkozó dolgokat (depends, fordítási opció), de Neked ezt nem szükséges meglépni.

Legegyszerűbb a mysql alapú adattárolás tűnik. Ehhez az /etc/pure-ftpd/pure-ftpd.conf fájlban ez az egy opció legyen olyan, amelyik nincs kikommentezve:

MySQLConfigFile               /etc/pure-ftpd/pureftpd-mysql.conf

Tehát az LDAPConfigFile, PGSQLConfigFile, PureDB, ExtAuth,PAMAuthentication, UnixAuthentication paraméterekre nincs szükségünk, ezek legyenek kikommentezve. Ezután hozd létre az /etc/pure-ftpd/pureftpd-mysql.conf nevű fájlt, a tartalma pedig az alábbi legyen:

MYSQLServer     localhost
MYSQLPort       3306
MYSQLSocket     /run/mysqld/mysqld.sock
MYSQLUser       {mysql_user}
MYSQLPassword   {mysql_user_password}
MYSQLDatabase   {mysql_database}
# Valid values are : "cleartext", "crypt", "md5" and "password"
MYSQLCrypt      cleartext

MYSQLGetPW      SELECT passw as Password FROM ftpaccount WHERE ftpaccount="\L"
MYSQLGetUID     SELECT uid as Uid FROM ftpaccount WHERE ftpaccount="\L"
MYSQLGetGID     SELECT gid as Gid FROM ftpaccount WHERE ftpaccount="\L"
MYSQLGetDir     SELECT homedir as Dir FROM ftpaccount WHERE ftpaccount="\L"

A lekérdezéshez az adatbázis és a táblát is hozd létre. A tábla létrehozási sql-je:

CREATE TABLE `ftpaccount` (
  `id` int(10) unsigned NOT NULL AUTO_INCREMENT,
  `status` enum('ENABLED','DISABLED') NOT NULL DEFAULT 'ENABLED',
  `ftpaccount` varchar(50) NOT NULL COMMENT 'ftp account neve (belepesi nev)',
  `passw` varchar(64) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL,
  `uid` int(11) NOT NULL DEFAULT '-1',
  `gid` int(11) NOT NULL DEFAULT '-1',
  `homedir` varchar(255) NOT NULL COMMENT 'ftp account home konyvtar (abszolut eleresi ut)',
  `ulbandwith` smallint(5) unsigned NOT NULL DEFAULT '0',
  `dlbandwidth` smallint(5) unsigned NOT NULL DEFAULT '0',
  `ipaccess` varchar(15) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL DEFAULT '*',
  PRIMARY KEY (`id`),
  UNIQUE KEY `NewIndex1` (`ftpaccount`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8

Nézd át az alap konfigurációs tulajdonságokat, amelyiket úgy érzed, azt állítsd be. Én főleg ezeket szoktam érinteni:

ForcePassiveIP {server_ip_address}
ChrootEveryone yes
BrokenClientsCompatibility  no
DisplayDotFiles             yes
AnonymousOnly               no
NoAnonymous                 yes
DontResolve                 yes
MaxIdleTime                 5
AnonymousCanCreateDirs      no
PassivePortRange          30000 50000
ProhibitDotFilesWrite       no
ProhibitDotFilesRead        no
AnonymousCantUpload         yes
AltLog                     clf:/var/log/pureftpd.log

Ezután már csak el kell indítani az ftp szervert:

systemctl enable pure-ftpd
systemctl start pure-ftpd

Loading