2019. július 17., szerda

Gyorskeresés

Debian apache, php, mysql

Írta: |

[ ÚJ BEJEGYZÉS ]

A webszervereknek elég nagy százaléka fut ebben az összeállításban és van pár ezer leírás is már, hogyan kell beállítani őket, így nagyon nem mennék bele a részletekbe. Csak gyorsan a lényeget nézzük meg.

Tegyük fel az apache2-t:

apt-get install apache2

A ports.conf fájlban lehet beállítani, hogy milyen portokat használjon. Mi két portot használtunk egyet belső hálózatra használunk.

Listen 80
Listen 81

Az apache2.conf-ban vannak a beállítások. Sajnos pontos információm nincsenek, de ha jól rémlik, akkor alapértelmezetten is megfelelő beállításokkal fut.
A mods-available mappákban a különböző modulok találhatóak. Ezekből az aktuálisan használhatóak a mods-enable mappába át vannak linkelve.
A sites-available mappákban a virtuális host-ok találhatóak. Ezekből az aktuálisan használhatóak a sites-enable mappába át vannak linkelve. Egy ilyen fájl tartalma kb ilyesmi, de ettől lehet sokkal bővebben(vagy kevésbé) paraméterezve is:

<VirtualHost *>
ServerAdmin webmaster@ceg.hu
DocumentRoot /var/www/

<Directory />
Options FollowSymLinks
AllowOverride None
</Directory>

<Directory /var/www/>
Options Indexes FollowSymLinks MultiViews
AllowOverride All
Order allow,deny
allow from all
# This directive allows us to have apache2's default start page
# in /apache2-default/, but still have / go to the right place
# RedirectMatch ^/$ /apache2-default/
RedirectMatch ^/$ /www/
</Directory>

ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/
<Directory "/usr/lib/cgi-bin">
AllowOverride None
Options ExecCGI -MultiViews +SymLinksIfOwnerMatch
Order allow,deny
Allow from all
</Directory>

ErrorLog /var/log/apache2/error.log
# Possible values include: debug, info, notice, warn, error, crit,
# alert, emerg.
LogLevel warn
CustomLog /var/log/apache2/access.log combined
ServerSignature On
# Könyvtár listázás tiltása:
IndexIgnore *
</VirtualHost>

Mi most a /var/www mappát adtuk meg, mint kezdő könyvtárat. A gyökér / jogosultságait vettük egy kicsit vissza, hogy ne legyen garázdálkodás olyan könnyen a weboldalunkon keresztül. Majd a /var/www/ mappára adtunk engedélyeket. Beállítottuk még, hogy a cgi scriptek is futhassanak, majd még a logok elérési útját állítottuk be.

A conf.d mappában különböző feltelepített webes alkalmazásunk fog majd fájlokat pakolni a beállításaikról.

Alapértelmezetten a /var/www/ mappában rakhatjuk a weboldalainkat. Ha újra indítjuk az /etc/init.d/apache2 restart paranccsal, akkor a böngészőben már látnunk is kell az "it works!" feliratot. (ha valaki nem látott volna ilyet akkor: [link], ha mégse, akkor kezdhetünk hibát keresni.

Telepítsük fel a php-t is, a weboldalunk ne csak statikus tartalmat jelenítsen meg.
apt-get install php5 php5-cgi php5-ldap php5-pgsql php5-cli libapache2-mod-php5

Az /etc/conf.d/ mappában a modulok találhatóak, amiket használnak a php alkalmazások. A mi esetünkben 3 mappa van még ezen kívül. A cgi, cli, apach2 mappa. Mindegyikben van egy php.ini nevű fájl és egy conf.d mappa, ami rá van linkelve az /etc/conf.d mappára. Minket most az apache2 fog érdekelni, mert a weboldalunk beállításait ott tudjuk módosítani, de a másik két fájl is értelemszerűen hasonló funkciót tölt be. Rengeteg beállítás van a php.ini-ben, csak párat emeltem ki belőlük, amikre talán sűrűbben lehet szükség vagy fontosak lehetnek. Fájl feltöltési méretek, memórialimit, hibaüzenetek megjelenítése és beállításai, sessionok feldolgozási ideje stb.

[PHP]
; Enable the PHP scripting language engine under Apache.
engine = On
; Enable compatibility mode with Zend Engine 1 (PHP 4.x)
zend.ze1_compatibility_mode = Off

; rövid "<?" tag használatának engedélyezése "<?php" mellett
short_open_tag = On

allow_call_time_pass_reference = On

max_execution_time = 30 ; Maximum execution time of each script, in seconds
max_input_time = 60 ; Maximum amount of time each script may spend parsing request data
;max_input_nesting_level = 64 ; Maximum input variable nesting level
memory_limit = 128M ; Maximum amount of memory a script may consume (128MB)

; error_reporting is a bit-field. Or each number up to get desired error
; reporting level
; E_ALL - All errors and warnings (doesn't include E_STRICT)
; E_ERROR - fatal run-time errors
; E_RECOVERABLE_ERROR - almost fatal run-time errors
; E_WARNING - run-time warnings (non-fatal errors)
; E_PARSE - compile-time parse errors
; E_NOTICE - run-time notices (these are warnings which often result
; from a bug in your code, but it's possible that it was
; intentional (e.g., using an uninitialized variable and
; relying on the fact it's automatically initialized to an
; empty string)
; E_STRICT - run-time notices, enable to have PHP suggest changes
; to your code which will ensure the best interoperability
; and forward compatibility of your code
; E_CORE_ERROR - fatal errors that occur during PHP's initial startup
; E_CORE_WARNING - warnings (non-fatal errors) that occur during PHP's
; initial startup
; E_COMPILE_ERROR - fatal compile-time errors
; E_COMPILE_WARNING - compile-time warnings (non-fatal errors)
; E_USER_ERROR - user-generated error message
; E_USER_WARNING - user-generated warning message
; E_USER_NOTICE - user-generated notice message
;
; Examples:
; - Show all errors, except for notices and coding standards warnings
;error_reporting = E_ALL & ~E_NOTICE
; - Show all errors, except for notices
;error_reporting = E_ALL & ~E_NOTICE | E_STRICT
; - Show only errors
;error_reporting = E_COMPILE_ERROR|E_RECOVERABLE_ERROR|E_ERROR|E_CORE_ERROR
; - Show all errors except for notices and coding standards warnings
error_reporting = E_ALL & ~E_NOTICE

; possible values for display_errors:
;
; Off - Do not display any errors
; stderr - Display errors to STDERR (affects only CGI/CLI binaries!)
;
;display_errors = "stderr"
;
; stdout (On) - Display errors to STDOUT
;
display_errors = On

register_globals = Off
register_long_arrays = On
register_argc_argv = On
auto_globals_jit = On

; Maximum size of POST data that PHP will accept.
post_max_size = 40M
; Magic quotes for incoming GET/POST/Cookie data.
magic_quotes_gpc = On
; Whether to allow HTTP file uploads.
file_uploads = On
; Maximum allowed size for uploaded files.
upload_max_filesize = 40M
; Maximum number of files that can be uploaded via a single request
max_file_uploads = 50
; Whether to allow the treatment of URLs (like http:// or ftp://) as files.
allow_url_fopen = On
; Default timeout for socket based streams (seconds)
default_socket_timeout = 60

session.save_handler = files
session.use_cookies = 1
session.auto_start = 0
session.cookie_lifetime = 0
session.gc_maxlifetime = 1440
session.cache_limiter = nocache
session.cache_expire = 180

url_rewriter.tags = "a=href,area=href,frame=src,input=src,form=,fieldset="

Ha készen vagyunk indítsuk újra az apache2-t, mert a php-t nem lehet újra indítani. Egy egyszerű tesztelési megoldás, ha csinálunk egy fájlt a weboldalunk mappájába amibe beírjuk a következőket:

<?php
phpinfo();
?>

Ha a böngészőben megnyitjuk és látjuk a beállításokat, akkor sikerült életre kelteni a php-t. Viszont nem érdemes ezt a fájlt fent hagyni a webmappában, mert itt minden beállítás látszik, amit a nem kedves emberek kihasználhatnak :)

Telepítsük fel a mysql-t:

apt-get install mysql-server

A telepítés során majd bekér egy jelszót. Ha még nem jegyeztem volna meg, akkor itt megteszem, hogy mi külön jelszót használunk a root-hoz a szerveren, az ldap-samba root-hoz és külön jelszót a php-mysql vonalon is. Persze lehetne minden egyes alkalmazásnak külön jelszó, de mi megelégszünk azzal, hogy három felé vágjuk. Persze ezeket a jelszavakat, nem használja az ember minden nap, csak akkor, ha már valamit muszáj állítgatni. De ilyen eset ritkán van, egy jól működő rendszer esetében :)

Az /etc/mysql/debian.cnf fájlban lévő jelszavakat ne bántsuk(meg az egész fájlt ne bolygassuk), mert utána nehéz lesz rendet rakni!

A beállítások az /etc/mysql/my.cnf fájlban találhatóak. Pár lényegesebb beállítást nézzünk meg, hogy jól vannak-e beállítva pl: portot, memória limitet, adatbázis méretbeli korlátozásokat, stb.
port = 3306
user = mysql
datadir = /var/lib/mysql
skip-external-locking
bind-address = 127.0.0.1
key_buffer = 16M
max_allowed_packet = 16M
thread_stack = 128K
thread_cache_size = 8
query_cache_limit = 1M
query_cache_size = 16M
log = /var/log/mysql/mysql.log
log_slow_queries = /var/log/mysql/mysql-slow.log
log_bin = /var/log/mysql/mysql-bin.log
expire_logs_days = 10
max_binlog_size = 100M
max_allowed_packet = 16M
key_buffer = 16M

A /var/lib/mysql/ mappában tárolódik az adatbázis. Adjunk rá jogokat:
chown mysql:mysql /var/lib/mysql/*

Adjunk jogot a /var/run/mysqld/ mappára is:
chown mysql:mysql /var/run/mysqld/*

Indítsuk újra a mysql-t:

/etc/init.d/mysql restart

Innentől elviekben működnie kell.

Ha a telepítés során szúrtunk el valamit és nincsenek adataink az adatbázisban, akkor a következő lépéseket bátran megpróbálhatjuk:

Állítsuk le a mysql-t:
/etc/init.d/mysql stop

Töröljük az adatbázist a /var/lib/mysql/ mappa tartalmát.

Hozzuk létre az adatbázist:
mysql_install_db

Indítsuk el a mysql-t:
/etc/init.d/mysql start

Ellenőrizzük, hogy van-e /var/run/mysqldmysqld.sock fájl. Ha van jó, ez futás időben jön létre, a mysql egy socket-e.Innentől mennie kellene.

Ha jelszavakkal vannak problémáink, mondjuk egy adatbázis költöztetés során, akkor a következő parancsokkal bűvészkedhetünk:

Ha szükséges adjunk új jelszót a root-nak:
/usr/bin/mysqladmin -u root password 'new-password'

Adhatunk más felhasználónak új jelszót. Pl a debian-sys-maint-nek (meg kell egyeznie a debian.cnf fájlban lévő jelszóval).
/usr/bin/mysqladmin -u root -h felhasználóinév password 'new-password'

Megváltoztathatjuk a konzolból is a root jelszót ( vagy más jelszavakat is) a következő módon:

Először jelentkezzünk be a mysql konzolba:

mysql -u root -p jelszavad

Változtassuk meg a root felhasználónak a jelszavát:

SET PASSWORD FOR 'root'@'localhost' = PASSWORD('newpwd');

http://intermatrix.hu/web - érdemes végignézni a linkeket az oldalon a témában.
apache
mysql
debian lamp
debian squeeze lamp
apache-php-mysql telepítés
apache ubuntu
php ubuntu
mysql ubuntu
hottoforge lamp

Copyright © 2000-2019 PROHARDVER Informatikai Kft.