frame

Sveiki apsilankę!

Jei forume lankaisi pirmą kartą, kviečiame registruotis ir prisijungti prie diskusijų.

Prisijungti Registruotis

Apache2 + mod_fcgid + PHP5 + MySQL diegimas CentOS 6 aplinkoje

IV_RomanLIV_RomanL Interneto vizija
edited spalio 15 Į Web serveriai
Pamokoje aprašytas būdas, kuriuo pasinaudoję galėsite įdiegti standartines web serverio, duomenų bazės bei PHP aplikacijas. Skirtingai nuo anksčiau aprašytos pamokos šiuo atveju įdiegsime modulį mod_fcgid kuris suteikia galimybę vykdyti script'us vartotojo teisėmis. Tai reiškia jog jums nebereiks nustatinėti aplanko teisių.

Pamoka parengta naudojant CentOS 6 64-bit operacinę sistemą.

0. Atnaujinkite operacinę sistemą:
yum update -y
Įsidiekite nano tekstinį redaktorių:
yum install nano -y

1. Diegiame Apache2 / mod_fcgid / PHP5 paketus.

Tam tereikia įvykdyti šiuos žingsnius.

Aktyvuojame EPEL repozitoriją:
rpm -import https://fedoraproject.org/static/0608B895.txt
rpm -Uvh http://dl.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm
Įdiegiame yum-priorities paketą:
yum install yum-priorities -y
Redaguojame repozitorijos failą:
nano /etc/yum.repos.d/epel.repo
Ties grafa [epel] pridėkite eilutę priority=10 , pavyzdys:
[epel]
name=Extra Packages for Enterprise Linux 6 - $basearch
#baseurl=http://download.fedoraproject.org/pub/epel/6/$basearch
mirrorlist=https://mirrors.fedoraproject.org/metalink?repo=epel-6&arch=$basearch
failovermethod=priority
enabled=1
priority=10
gpgcheck=1
[..]
Įdiegiame apache2, mod_fcgid, php paketus:
yum install httpd mod_fcgid php-cli -y

2. Konfigūruojame PHP bei mod_fcgid.

Atidarome php.ini failą:
nano /etc/php.ini
Raskite eilutę cgi.fix_pathinfo=1: ir pašalinkite komentarą ";" eilutės pradžioje.

Atverkite failą fcgid.conf :
nano /etc/httpd/conf.d/fcgid.conf
Apačioje pridėkite įrašą:
PHP_Fix_Pathinfo_Enable 1
Viską išsaugokite ir perkraukite apache tarnybą:
/etc/init.d/httpd reload

3. Kuriame virtualius serverius (vhosts). Tai padės atskirti svetaines bei individualizuoti jų nustatymus.

Kursime 2 virtualius serverius www.roman1.lt (/var/www/t1/public_html) bei www.roman2.lt (/var/www/t2/public_html). www.roman1.lt domenui bus priskirtas t1 vartototas bei t1 grupė, www.roman2.lt bus priskirtas t2 vartotojas bei t2 grupė.

Kuriame vartotojus ir grupes:
groupadd t1
groupadd t2
useradd -s /bin/false -d /var/www/t1 -m -g t1 t1
useradd -s /bin/false -d /var/www/t2 -m -g t2 t2
chmod 755 /var/www/t1
chmod 755 /var/www/t2
Sukuriame aplankus ir priskiriame jam vartotojus bei grupes:
mkdir -p /var/www/t1/public_html
chown t1:t1 /var/www/t1/public_html
mkdir -p /var/www/t2/public_html
chown t2:t2 /var/www/t2/public_html
PHP procesus leisime naudodamiesi suEXEC, suEXEC aplankas bus /var/www .
mkdir -p /var/www/php-fcgi-scripts/t1
mkdir -p /var/www/php-fcgi-scripts/t2
Sukuriame php-fcgi starterius kiekvienam virtualiam serveriui:
nano /var/www/php-fcgi-scripts/t1/php-fcgi-starter
Įterpiame kodą:
#!/bin/sh
PHPRC=/etc/
export PHPRC
export PHP_FCGI_MAX_REQUESTS=5000
export PHP_FCGI_CHILDREN=8
exec /usr/bin/php-cgi
nano /var/www/php-fcgi-scripts/t2/php-fcgi-starter
Įterpiame kodą:
#!/bin/sh
PHPRC=/etc/
export PHPRC
export PHP_FCGI_MAX_REQUESTS=5000
export PHP_FCGI_CHILDREN=8
exec /usr/bin/php-cgi
čia:

PHPRC -- aplankas kuriame bus php.ini failas;
PHP_FCGI_MAX_REQUESTS -- maksimalus procesų skaičius. Jį viršijus bus sukurtas dar vienas fcgid procesas.
PHP_FCGI_CHILDREN -- papildomai paleidžiamų PHP procesų skaičius.

PHP_FCGI starteriai turi turėti vykdymo teises:
chmod 755 /var/www/php-fcgi-scripts/t1/php-fcgi-starter
chmod 755 /var/www/php-fcgi-scripts/t2/php-fcgi-starter
chown -R t1:t1 /var/www/php-fcgi-scripts/t1
chown -R t2:t2 /var/www/php-fcgi-scripts/t2
Beliko sukurti virtualius serverius apache konfigūraciniame faile:
nano /etc/httpd/conf/httpd.conf
Apačioje pridėkite šias eilutes (atitinkamai pagal save koreguokite pajuodintas sritis):
NameVirtualHost *:80
# roman1.lt serveriukas
<VirtualHost *:80>
ServerName www.roman1.lt
ServerAlias roman1.lt
ServerAdmin webmaster@roman1.lt
DocumentRoot /var/www/t1/public_html/
<IfModule mod_fcgid.c>
SuexecUserGroup t1 t1
<Directory /var/www/t1/public_html/>
Options +ExecCGI
AllowOverride All
AddHandler fcgid-script .php
FCGIWrapper /var/www/php-fcgi-scripts/t1/php-fcgi-starter .php
Order allow,deny
Allow from all
</Directory>
</IfModule>
ServerSignature Off
</VirtualHost>

# roman2.lt serveriukas
<VirtualHost *:80>
ServerName www.roman2.lt
ServerAlias roman2.lt
ServerAdmin webmaster@roman2.lt
DocumentRoot /var/www/t2/public_html/
<IfModule mod_fcgid.c>
SuexecUserGroup t2 t2
<Directory /var/www/t2/public_html/>
Options +ExecCGI
AllowOverride All
AddHandler fcgid-script .php
FCGIWrapper /var/www/php-fcgi-scripts/t2/php-fcgi-starter .php
Order allow,deny
Allow from all
</Directory>
</IfModule>
ServerSignature Off
</VirtualHost>
Perkrauname apache serverį:
/etc/init.d/httpd reload
Testavimo tikslais galite kiekviename virtualiame serveryje sukurti PHPinfo failą:
nano /var/www/t1/public_html/nfo.php
nano /var/www/t2/public_html/nfo.php
Įrašykite kodą:

[PHP]<?php
phpinfo();
?>[/PHP]Belieka patikrinti: http://www.roman1.lt/nfo.php bei http://www.roman2.lt/nfo.php .


4. Papildomai kiekvienam virtualiam serveriui galite suteikti individualų php.ini failą.

Nukopijuojame bazinį php.ini failą:
cp /etc/php.ini /var/www/t1/
Suteikiame vartotojo teises:
chown t1:t1 /var/www/t1/php.ini
Redaguojame PGP_FCGI starterį:
nano /var/www/php-fcgi-scripts/t1/php-fcgi-starter
#!/bin/sh
PHPRC=[B]/var/www/t2/[/B]
export PHPRC
export PHP_FCGI_MAX_REQUESTS=5000
export PHP_FCGI_CHILDREN=8
exec /usr/bin/php-cgi
Atlikę pakeitus perkraukite apache serverį:
/etc/init.d/httpd reload
Taip pat, galite PHP_FCGI starteryje nurodyti konkrečią php.ini reikšmę kurią pageidaujate keisti. Pavyzdys:
#!/bin/sh
PHPRC=/etc/
export PHPRC
export PHP_FCGI_MAX_REQUESTS=5000
export PHP_FCGI_CHILDREN=8
exec /usr/bin/php-cgi [B]-d magic_quotes_gpc=off[/B]

5. Įdiegiame MySQL serverį:
yum install mysql mysql-server -y
Nurodome serveriui, jog paleistų šią tarnybą jei dedikuotas serveris būtų perkrautas. Vykdome šias komandas SSH konsolėje:
chkconfig --levels 235 mysqld on
service mysqld restart
Atliekame MySQL serverio konfiguraciją (suteikiame root vartotojui slaptažodį). Vykdome komandą SSH konsolėje:
mysql_secure_installation
Jums pateiks klausimą:
NOTE: RUNNING ALL PARTS OF THIS SCRIPT IS RECOMMENDED FOR ALL MySQL
      SERVERS IN PRODUCTION USE!  PLEASE READ EACH STEP CAREFULLY!
  
  
  In order to log into MySQL to secure it, we'll need the current
  password for the root user.  If you've just installed MySQL, and
  you haven't set the root password yet, the password will be blank,
  so you should just press enter here.
  
  Enter current password for root (enter for none):
Šioje vietoje spauskite mygtuką ENTER .

Ties laukais:
Set root password? [Y/n] spauskite y raidelę ir [B]ENTER[/B]
  New password: nurodykite slaptažodį
  Re-enter new password: pakartokite slaptažodį
Remove anonymous users? [Y/n] spauskite y raidelę ir [B]ENTER[/B]
Disallow root login remotely? [Y/n] spauskite y raidelę ir [B]ENTER[/B]
Remove test database and access to it? [Y/n] spauskite y raidelę ir [B]ENTER[/B]
Reload privilege tables now? [Y/n] spauskite y raidelę ir [B]ENTER[/B]

6. Įdiegiame papildomus PHP modulius:
yum install php-mysql php-gd php-imap php-ldap php-odbc php-pear php-xml php-xmlrpc -y
Perkrauname apache serverį:
service httpd restart
Pažymėtos temos:

Komentarai

  • TrickasTrickas Naujokas (-ė)
    edited 2012 spalio 12
    Įsirašiau, bet ties 5 punktu gaunu tokį error: MySQL server through socket '/var/lib/mysql/mysql.sock' (2) ir neina prisijunkti prie phpmyadmin (mysql)
  • IV_RomanLIV_RomanL Interneto vizija
    edited 2012 spalio 12
    Tokia klaida pateikiama kuomet MySQL tarnyba nėra paleista (dažniausiai). Įvykdykite komandą:
    service mysqld start
    
  • TrickasTrickas Naujokas (-ė)
    edited 2012 spalio 12
    Ačiū, susitvarkiau.
Norėdami palikti komentarą, turite prisijungti arba registruokis.