Инсталация на httpd, mysql, php и phpMyAdmin под CentOS

В този пост ще Ви запознаем с инсталацията на уеб сървър apache, mysql, php и phpMyAdmin от yum пакет мениджъра(с него можем да инсталираме, премахваме и ъпдейтваме пакети на RPM базирани системи) като за phpMyAdmin ще използваме допълнително хранилище на yum мениджъра, също така и с добавянето на виртуални хостове.

1. Инсталация на уеб сървър:

*# yum install httpd *

2. Инсталация на mysql сървър:

*# yum install mysql-server mysql-devel *

След като сме инсталирали httpd и mysql сървър е нужно да ги добавим(разбира се ако желаем) в chkconfig, за да може те да се стартират след рестарт на сървъра:

*# chkconfig httpd on

# chkconfig mysqld on*

Сега е нужно да стартираме със следната команда mysql сървъра:

*# service mysqld start 

Starting MySQL: [ OK ]*

След като сме стартирали сървиса е нужно да подадем и неговата root парола, за целта използваме командата mysqlsecureinstallation:

*# mysql_secure_installation 



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): - Подаваме ЕNTER(след инсталацията няма парола) 

OK, successfully used password, moving on... 



Setting the root password ensures that nobody can log into the MySQL root user without the proper authorisation. 



Set root password? [Y/n] y New password: - Подаваме новата парола 

Re-enter new password: - Подаваме новата парола отново 

Password updated successfully! 

Reloading privilege tables.. 

... Success! 



By default, a MySQL installation has an anonymous user, allowing anyone to log into MySQL without having to have a user account created for them. This is intended only for testing, and to make the installation go a bit smoother. You should remove them before moving into a production environment. 



Remove anonymous users? [Y/n] y - Премахваме anonymous потребители 

... Success! 



Normally, root should only be allowed to connect from 'localhost'. This ensures that someone cannot guess at the root password from the network. 



Disallow root login remotely? [Y/n] y - Непозволяваме да се достъпи mysql-a с потребител root отдалечено 

... Success! 



By default, MySQL comes with a database named 'test' that anyone can access. This is also intended only for testing, and should be removed before moving into a production environment. 



Remove test database and access to it? [Y/n] y - Премахваме база данни test ако желаем 

- Dropping test database... 

... Success! 

- Removing privileges on test database... 

... Success! 



Reloading the privilege tables will ensure that all changes made so far will take effect immediately. 



Reload privilege tables now? [Y/n] y 

... Success! 



Cleaning up... All done! If you've completed all of the above steps, your MySQL installation should now be secure. 



Thanks for using MySQL! 



# service mysqld restart 

Stopping MySQL: [ OK ] 

Starting MySQL: [ OK ]*

Ако желаете да правите допълнителни промени и настройки на MySQL-а, по подразбиране конфигурационния файл се намира тук: /etc/my.cnf

*След всяка промяна е нужно да рестартирате сървиса.

3. Инсталация на php и някои модули:

*# yum install php php-cli php-common php-gd php-mbstring php-mysql php-devel *

След като премине инсталацията е нужно да рестартираме уеб сървъра, за да приеме php модула, със следната команда:

*# service httpd restart 

Stopping httpd: [ OK ] 

Starting httpd: [ OK ] 

# *

4. Добавяне на виртуални хостове:

Пример: Ако Вие разполагате с 3 домейн имена(domain.com, domain2.net, domain3.info), които желаете да отговарят на 3 различни сайта и да се хостват в 3 различни директории на три различни linux потребителя:
/home/user1/publichtml/
/home/user2/public
html/
/home/user3/public_html/
е нужно за всяко домейн име да добавите виртуален хост в httpd.conf(конфигурационния файл на уеб сървър). Като след създаването на потребител user1, user2 и user3(в случая) е нужно да подадем следните права на директории /home/user1 , /home/user2 и /home/user3 : chmod 0711. Подаваме тези права за да може потребител apache(с който работи уеб сървъра) да разполага с execute достъп до директорията. Нужно е да отворим конфигурациония файл на уеб сървъра с текстов редактор:

*# nano -t /etc/httpd/conf/httpd.conf *

След което добавяме виртуалните хостове в края на конфигурациония файл(в примера 91.215.218.205 е IP на Вашия сървър):

NameVirtualHost 91.215.218.205:80*

# domain.com VirtualHost *

<VirtualHost 91.215.218.205:80>* 

  ServerAdmin webmaster@domain.com 

  DocumentRoot */home/user1/public_html* 

  ServerName domain.com 

  ServerAlias www.domain.com 

  ErrorLog logs/domain.com-error_log 

  CustomLog logs/domain.com-access_log common *

</VirtualHost>*



# domain2.net VirtualHost *

<VirtualHost 91.215.218.205:80>* 

  ServerAdmin webmaster@domain2.net 

  DocumentRoot */home/user2/public_html* 

  ServerName domain2.net 

  ServerAlias www.domain2.net 

  ErrorLog logs/domain2.net-error_log 

  CustomLog logs/domain2.net-access_log common *

</VirtualHost>



*# domain3.info VirtualHost *

<VirtualHost 91.215.218.205:80>* 

  ServerAdmin webmaster@domain3.info 

  DocumentRoot */home/user3/public_html* 

  ServerName domain3.info 

  ServerAlias www.domain2.info 

  ErrorLog logs/domain3.info-error_log 

  CustomLog logs/domain3.info-access_log common *

</VirtualHost>

След като добавим виртуалните хостове, правим някои промени по уеб сървъра(все още не се затоворили конфигурационния файл httpd.conf). С ctrl+W търсите в httpd.conf файла следния стринг "moduserdir.c" където кометираме следния ред:
UserDir disable
и откоментираме следния:
UserDir public
html
Ето и резултата:

*<IfModule mod_userdir.c> 

  # 

  # UserDir is disabled by default since it can confirm the presence 

  # of a username on the system (depending on home directory 

  # permissions). 

  # [#UserDir](https://www.icn.bg/bg/blog/?tag=UserDir){: .tag-link} disable 

  # 

  # To enable requests to /~user/ to serve the user's public_html 

  # directory, remove the "UserDir disable" line above, and uncomment 

  # the following line instead: 

  # 

  UserDir public_html 

</IfModule>*

С тази промяна ние включихме UserDir с коете можем да правим заявки към http://91.215.218.205/~user1/ като сме посочили че директорията в която ще се отворя е publichtml/. След което по-долу в конфигурацията контролираме достъпа до /home/*/publichtml/ както преценим за нужно. Пример:

*<Directory /home/*/public_html> 

  AllowOverride All 

  Options All 

</Directory>*

С "AllowOverride All" ние декларираме всички директиви, които можете да ползвате в .htaccess файл(Access File Name). С "Options All" ние подаваме какви функции са достъпни в определената директория(в случая всички без MultiViews). За повече информация относно AllowOverride и Options можете да откриете тук:

AllowOverride (натисни тук)

Options (натисни тук)

След което излизаме от текстовия редактор ctrl+x.

5. Инсталация на phpMyAdmin:

За да инсталираме phpmyadmin с yum пакет мениджъра е нужно да използваме хрнилище в което е наличен phpmyadmin. За тази цел ние ще използваме rpmforge хранилище :

*# wget http://dag.wieers.com/rpm/packages/rpmforge-release/rpmforge-release-0.3.6-1.el5.rf.x86_64.rpm 

# rpm -vhi rpmforge-release-0.3.6-1.el5.rf.x86_64.rpm 

warning: rpmforge-release-0.3.6-1.el5.rf.x86_64.rpm: Header V3 DSA signature: NOKEY, key ID 6b8d79e6 

Preparing... ########################################### [100%] 

1:rpmforge-release ########################################### [100%] 

# yum install phpmyadmin*

Инсталирахме phpmyadmin, сега е нужно да направим промени по конфигурационния файл на phpmyadmin(който се намира тук: /usr/share/phpmyadmin/config.inc.php) и по конфигурационния файл на phpmyadmin за уеб сървъра(който се намира тук: /etc/httpd/conf.d/phpmyadmin.conf). Отваряме с текстов редактор /usr/share/phpmyadmin/config.inc.php след което забелязваме че за authtype се използва cookie, след като се ползват cookies е нужно да подадем blowfishsecret. За целта подаваме произволни изрази до 46 символа, които се използват само за кодиране на паролата(няма да Ви бъдат поискани по-късно за аутентикация):

*# nano -t /usr/share/phpmyadmin/config.inc.php 

[.....] 

$cfg['blowfish_secret'] = 'Here is my blowfish_secret'; /* YOU MUST FILL IN THIS FOR COOKIE AUTH! */ 

[.....]*

Запаметяваме промените след което отваря другия конфигурационнен файл за да разрешим достъпа от всички до phpmyadmin(ако желаете можете да подадете достъп само до Вашето IP):

*# nano -t /etc/httpd/conf.d/phpmyadmin.conf*



*# 

# Web application to manage MySQL 

# 

<Directory "/usr/share/phpmyadmin"> 

Order Deny,Allow Allow from all 

</Directory> 

Alias /phpmyadmin /usr/share/phpmyadmin 

Alias /phpMyAdmin /usr/share/phpmyadmin 

Alias /mysqladmin /usr/share/phpmyadmin *

Запаметяваме промените и за да сработят новите настройки е нужно да рестартираме отново уеб сървър със следната команда:

*# service httpd restart 



Stopping httpd: [ OK ] 

Starting httpd: [ OK ] 

# *

За да можете да отворите коректно виртуалния хост през browser е нужно да флушнете подадените правила по дефаулт в iptables, след което да ги запазите. Това можете да направите по следния начин:

*# iptables -F

# service iptables save

iptables: Saving firewall rules to /etc/sysconfig/iptables: [  OK  ]

#*

Етикети: #install #apache #httpd #how-to #php #centos #phpmyadmin #mysql