суботу, вересня 10, 2005

PHP + Apache + MySQL + Linux

Цю доку я написав ще в травні 2005 року, давно хотів викласти, але не находив підходящого формату і навіть часу. Напевно, комусь пригодиться, може навіть мені. Покрокова настройка сервера PHP + Apache + MySQL + Linux!
УВАГА! В тексті присутні матюки (мені сподобався оригінал, я писав не задумуючись, по ходу настройки і вирішив нічого не міняти).



-------------------------------------------------




Спочатку треба поставити mysql i mysqladministrator (вони все одно бінарні якогось хрена). Потім Apache-1 (обов'язково з ісходніків, інакше модуль для ПХП для Апача не скомпілюється). Апач-2 не рекомендується (модуль ПХП для нього експериментальний). Крім того, я вичитав, що він не є продовженням Апача-1, він є повністю окремою віткою Апача (багато нового взнав, ніколи би не догадався).



Вичерпна інструкція по установці MySQL, можна сказати, покрокова ;-)

---------------------------------------------------------------------------
shell> groupadd mysql
shell> useradd -g mysql mysql
shell> cd /usr/local
shell> gunzip < /PATH/TO/MYSQL-VERSION-OS.tar.gz | tar xvf -
shell> ln -s FULL-PATH-TO-MYSQL-VERSION-OS mysql
shell> cd mysql
shell> scripts/mysql_install_db --user=mysql

---------------------------------------------------------------------------
[root@szl mysql]# scripts/mysql_install_db --user=mysql
Installing all prepared tables
Fill help tables

To start mysqld at boot time you have to copy support-files/mysql.server
to the right place for your system

PLEASE REMEMBER TO SET A PASSWORD FOR THE MySQL root USER !
To do so, start the server, then issue the following commands:
./bin/mysqladmin -u root password 'new-password'
./bin/mysqladmin -u root -h szl.if.ukrtel.net password 'new-password'
See the manual for more instructions.

NOTE: If you are upgrading from a MySQL <= 3.22.10 you should run
the ./bin/mysql_fix_privilege_tables. Otherwise you will not be
able to use the new GRANT command!

You can start the MySQL daemon with:
cd . ; ./bin/mysqld_safe &

You can test the MySQL daemon with the benchmarks in the 'sql-bench' directory:
cd sql-bench ; perl run-all-tests

Please report any problems with the ./bin/mysqlbug script!

The latest information about MySQL is available on the web at
http://www.mysql.com
Support MySQL by buying support/licenses at https://order.mysql.com
[root@szl mysql]#
---------------------------------------------------------------------------




shell> chown -R root .
shell> chown -R mysql data
shell> chgrp -R mysql .
shell> bin/mysqld_safe --user=mysql &
---------------------------------------------------------------------------

Запуск MySQL:
/usr/local/mysql/bin/mysqld --user=mysql &

Запуск консольного клієнта:
/usr/local/mysql/bin/mysql -u root -p

Конфігурування Apache:
./configure --enable-module=so


Запуск Апача:
/usr/local/apache/bin/apachectl start

Конфігураційний файл Апача:
/usr/local/apache/conf/httpd.conf

Домашній каталог Апача:
/usr/local/apache/htdocs


Конфігурування PHP:
./configure --with-mysql=/usr/local/mysql --with-apxs=/usr/local/apache/bin/apxs --with-mbstring --enable-mbstring

Дома під ASP_Linux v.10 все пройшло нормально, на роботі під ASP-Linux 9.0 захотіло:
checking libxml2 install dir... no
configure: error: libxml2 version 2.5.10 or greater required.

В такому випадку потрібно скачати і установити:
ftp://ftp.gnome.org/mirror/gnome.org/sources/libxml2/2.6/libxml2-2.6.19.tar.gz




Зробити ссилки (може і без цього може робити, але РедХат не знає шляху на /usr/local/bin. Не знаю, добре це чи погано, але кумарить)
/usr/local/bin
php
php-config
phpextdist
phpize
в каталог /usr/bin


Виправляєм /usr/local/apache/conf/httpd.conf
---------------------------------------------------------------------------
Внутри блока
AddType application/x-httpd-php .php
В строке DirectoryIndex пропишите index.php:
DirectoryIndex index.php index.html
---------------------------------------------------------------------------

також можна поміняти порт на 80 (по замовчуванню 8080)

І перезапускаєм Apache:
/usr/local/apache/bin/apachectl restart


ГОТОВО



---------------------------------------------------------------------------
РОБОЧІ ЗАМІТКИ


---------------------------------------------------------------------------
---------------------------------------------------------------------------


Так треба ставити PHP, щоб скомпілювалися модулі для mysql i Apache
./configure --with-mysql=/usr/local/mysql --with-apache=/usr/local/apache/include


БЛЯДЬ!!! ТАК ЯКОГОСЬ ХУЯ НЕ РОБИТЬ!!!
Каже шо нема там Апача...
Блядь модуль mod-php5.so не створюється. ВООБЩЕ!!!! Як я лиш не пробував!
Будем искать...


Зара буду пробувати таке:

---------------------------------------------------------------------------
В любом случае, понадобится параметр --with-apxs=/путь/к/apxs – это необходимо для сборки модуля Апача mod_php. Например, если Apache установлен в /usr/local, то параметр будет выглядеть следующим образом: --with-apxs=/usr/local/sbin/apxs.
---------------------------------------------------------------------------

Хуй там! Нема такого каталога! Навіть sbin нема. Блядь!
Але є bin!!!

Попробуєм так:
./configure --with-mysql=/usr/local/mysql --with-apxs=/usr/local/apache/bin/apxs


Ага... Видає такий матюк:
---------------------------------------------------------------------------
checking for Apache 1.x module support via DSO through APXS...

Sorry, I was not able to successfully run APXS. Possible reasons:

1. Perl is not installed;
2. Apache was not compiled with DSO support (--enable-module=so);
3. 'apxs' is not in your path. Try to use --with-apxs=/path/to/apxs
The output of /usr/local/apache/bin/apxs follows
apxs:Error: Sorry, no DSO support for Apache available
apxs:Error: under your platform. Make sure the Apache
apxs:Error: module mod_so is compiled into your server
apxs:Error: binary `/usr/local/apache/bin/httpd'.
configure: error: Aborting

---------------------------------------------------------------------------

Буду перекомпільовувати Апач
Конфігуруєм його так:
./configure --enable-module=so


Поки що получається!
Наразі перекомпільовую PHP...
./configure --with-mysql=/usr/local/mysql --with-apxs=/usr/local/apache/bin/apxs


Яке блаженство! Це треба було бачити:
---------------------------------------------------------------------------
[root@makars php-5.0.4]# make install
Installing PHP SAPI module: apache
[activating module `php5' in /usr/local/apache/conf/httpd.conf]
cp libs/libphp5.so /usr/local/apache/libexec/libphp5.so
chmod 755 /usr/local/apache/libexec/libphp5.so
cp /usr/local/apache/conf/httpd.conf /usr/local/apache/conf/httpd.conf.bak
cp /usr/local/apache/conf/httpd.conf.new /usr/local/apache/conf/httpd.conf
rm /usr/local/apache/conf/httpd.conf.new
Installing PHP CLI binary: /usr/local/bin/
Installing PHP CLI man page: /usr/local/man/man1/
Installing PEAR environment: /usr/local/lib/php/
[PEAR] Archive_Tar - already installed: 1.1
[PEAR] Console_Getopt - already installed: 1.2
[PEAR] PEAR: file does not exist
[PEAR] HTML_Template_IT- already installed: 1.1
[PEAR] Net_UserAgent_Detect- already installed: 2.0.1
[PEAR] XML_RPC - already installed: 1.2.2
Installing build environment: /usr/local/lib/php/build/
Installing header files: /usr/local/include/php/
Installing helper programs: /usr/local/bin/
program: phpize
program: php-config
program: phpextdist
[root@makars php-5.0.4]#
---------------------------------------------------------------------------

Автоматично настроюється модуль для Апача!!! ВВАВ!!!


Для начала треба переробити конфіг Апача:
---------------------------------------------------------------------------
Внутри блока
AddType application/x-httpd-php .php
В строке DirectoryIndex пропишите index.php:
DirectoryIndex index.php index.html
---------------------------------------------------------------------------
бо інакше php-файл просто видає на екран


Зара буду пробувати результат.


РОБИТЬ!!! БЛЯ БУДУ РОБИТЬ!!!


Робить Апач, робить PHP і крім того PHP співпрацює з MySQL!
І всьо саме нове із ісходніків, 3 квітня 2005 року


---------------------------------------------------------------------------
Завершення установки PHP:

Зробити ссилки (може і без цього може робити, але РедХат не знає шляху на /usr/local/bin. Не знаю, добре це чи погано, але кумарить)
/usr/local/bin
php
php-config
phpextdist
phpize
в каталог /usr/bin





---------------------------------------------------------------------------
Добавлено 20050509-02-01
---------------------------------------------------------------------------
Щоб добавити mbstring (мультибайтові строки), потрібно перезібрати PHP.
Пробую так:

./configure --with-mysql=/usr/local/mysql --with-apxs=/usr/local/apache/bin/apxs --with-mbstring --enable-mbstring

Немає коментарів: