Ubuntu 10.04.3 LTS Nginx php-fpm mysql — различия между версиями

Материал из Помощь клиентам хостинга
Перейти к: навигация, поиск
 
(не показаны 3 промежуточные версии этого же участника)
Строка 3: Строка 3:
  
 
устанавливаем bash-completion и попутно текстовый редактор Vim:
 
устанавливаем bash-completion и попутно текстовый редактор Vim:
<geshi lang="bash">
+
  apt-get install bash-completion vim -y
apt-get install bash-completion vim -y
+
 
</geshi>
 
  
 
В отличии от CentOS/RHEl, в debian/ubuntu недостаточно поставить пакет bash-completion для того чтобы получить желаемый функционал, нужно его ещё и в bash.bashrc раскомментировать. Открываем /etc/bash.bashrc  
 
В отличии от CentOS/RHEl, в debian/ubuntu недостаточно поставить пакет bash-completion для того чтобы получить желаемый функционал, нужно его ещё и в bash.bashrc раскомментировать. Открываем /etc/bash.bashrc  
<geshi lang="bash">
+
 
vim /etc/bash.bashrc  
+
  vim /etc/bash.bashrc  
</geshi>
+
 
  
 
и раскомментируем блок:
 
и раскомментируем блок:
<geshi lang="bash">
+
<pre>
 
# enable bash completion in interactive shells
 
# enable bash completion in interactive shells
 
if [ -f /etc/bash_completion ] && ! shopt -oq posix; then
 
if [ -f /etc/bash_completion ] && ! shopt -oq posix; then
 
     . /etc/bash_completion
 
     . /etc/bash_completion
 
fi
 
fi
</geshi>
+
</pre>
  
 
=== Устанавливаем nginx ===
 
=== Устанавливаем nginx ===
 
Переходим к установке nginx, тут всё просто:
 
Переходим к установке nginx, тут всё просто:
<geshi lang="bash">
+
 
apt-get update  
+
  apt-get update  
apt-get install nginx
+
  apt-get install nginx
</geshi>
+
 
  
 
Запускаем nginx  
 
Запускаем nginx  
<geshi lang="bash">
+
 
/etc/init.d/nginx start
+
  /etc/init.d/nginx start
</geshi>
+
 
  
 
Проверяем, слушает ли наш новый nginx порт 80:
 
Проверяем, слушает ли наш новый nginx порт 80:
<geshi lang="bash">
+
 
netstat -tnlp | grep nginx
+
  netstat -tnlp | grep nginx
tcp        0      0 0.0.0.0:80              0.0.0.0:*              LISTEN      1205/nginx
+
  tcp        0      0 0.0.0.0:80              0.0.0.0:*              LISTEN      1205/nginx
</geshi>
+
 
  
 
Всё нормально, можем открыть в браузере и порадоваться:
 
Всё нормально, можем открыть в браузере и порадоваться:
Строка 47: Строка 46:
 
Для сборки нам понадобятся пакеты:
 
Для сборки нам понадобятся пакеты:
  
<geshi lang="bash">
+
 
apt-get install libxml2-dev libssl-dev bzip2 libbz2-dev libcurl4-openssl-dev libjpeg62-dev libpng12-dev \
+
  apt-get install libxml2-dev libssl-dev bzip2 libbz2-dev libcurl4-openssl-dev libjpeg62-dev libpng12-dev \
libfreetype6-dev libt1-dev libc-client2007e-dev libmcrypt-dev libmysqlclient-dev libidn11-dev libltdl-dev \
+
  libfreetype6-dev libt1-dev libc-client2007e-dev libmcrypt-dev libmysqlclient-dev libidn11-dev libltdl-dev \
checkinstall automake autoconf libicu-dev
+
  checkinstall automake autoconf libicu-dev
</geshi>
+
 
  
  
 
Скачиваем тарбол с исходниками php:
 
Скачиваем тарбол с исходниками php:
<geshi lang="bash">
+
 
wget http://ru.php.net/get/php-5.3.8.tar.gz/from/this/mirror -O php-5.3.8.tar.gz
+
  wget http://ru.php.net/get/php-5.3.8.tar.gz/from/this/mirror -O php-5.3.8.tar.gz
</geshi>
+
 
  
 
Распаковываем его и переходим в папку с исходниками php
 
Распаковываем его и переходим в папку с исходниками php
<geshi lang="bash">
+
 
tar zxf php-5.3.8.tar.gz  
+
  tar zxf php-5.3.8.tar.gz  
cd php-5.3.8/
+
  cd php-5.3.8/
</geshi>
+
 
  
 
Начинаем сборку из исходников:
 
Начинаем сборку из исходников:
<geshi lang="bash">
+
<pre>
 
./configure --enable-fpm --enable-soap --with-mcrypt --enable-mbstring --with-openssl --with-mysql --with-mysql-sock \
 
./configure --enable-fpm --enable-soap --with-mcrypt --enable-mbstring --with-openssl --with-mysql --with-mysql-sock \
 
--with-gd --with-jpeg-dir=/usr/lib --enable-gd-native-ttf --with-sqlite=shared --with-pdo-mysql --with-libxml-dir=/usr/lib \
 
--with-gd --with-jpeg-dir=/usr/lib --enable-gd-native-ttf --with-sqlite=shared --with-pdo-mysql --with-libxml-dir=/usr/lib \
Строка 72: Строка 71:
 
--enable-ftp --with-iconv --with-gettext --enable-gd-native-ttf --with-t1lib --with-freetype-dir --with-kerberos \
 
--enable-ftp --with-iconv --with-gettext --enable-gd-native-ttf --with-t1lib --with-freetype-dir --with-kerberos \
 
--prefix=/usr/local/php --with-fpm-user=www-data --with-fpm-group=www-data
 
--prefix=/usr/local/php --with-fpm-user=www-data --with-fpm-group=www-data
</geshi>
+
</pre>
  
 
Компилируем php:
 
Компилируем php:
<geshi lang="bash">
+
  make
make
 
</geshi>
 
  
 
После того как компиляция успешно завершится с сообщением ''Build complete'' переходим к сборке и установке .deb пакета:
 
После того как компиляция успешно завершится с сообщением ''Build complete'' переходим к сборке и установке .deb пакета:
  
<geshi lang="bash">
+
  checkinstall -D
checkinstall -D
 
</geshi>
 
  
Листинг процесса привожу ниже:
+
В итоге php-fpm установлен и у нас есть готовый пакет /root/php-5.3.8/php-fpm_5.3.8-1_i386.deb для тех кто не хочет заморачиваться со сборкой или ресурсов VPS для сборки недостаточно, в конце статьи я дам ссылку на собраный пакет.
<geshi lang="bash">
 
  
Should I create a default set of package docs?  [y]:  
+
Создадим init-скрипт и добавим php-fpm в автозапуск:
  
Готовится документация к пакету...OK
+
<pre>
 
+
cp ./sapi/fpm/init.d.php-fpm /etc/init.d/php-fpm
Пожалуйста напишите описание пакета.
+
chmod +x /etc/init.d/php-fpm
Закончите ваше описание пустой строкой или EOF.
+
update-rc.d php-fpm defaults
>> php-fpm-5.3.8
+
cp ./sapi/fpm/php-fpm.conf /usr/local/php/etc/
>>  
+
sed -i "s/\;pm./pm./" /usr/local/php/etc/php-fpm.conf
 +
sed -i "s/\;pid/pid/" /usr/local/php/etc/php-fpm.conf
 +
cp ./php.ini-production /usr/local/php/lib/php.ini
 +
sed -i "s/short_open_tag/\;short_open_tag/" /usr/local/php/lib/php.ini
 +
/etc/init.d/php-fpm start
 +
</pre>
  
*****************************************
+
Теперь займемся настройкой nginx. Приведите файл /etc/nginx/sites-enabled/default к виду:
**** Debian package creation selected ***
+
<pre>
*****************************************
+
server {
 +
listen  80 default;
 +
server_name  localhost;
  
Этот пакет был создан с использованием данных значений:
+
access_log  /var/log/nginx/localhost.access.log;
  
0 -  Maintainer: [ root@ubuntu ]
+
location / {
1 -  Summary: [ php-fpm-5.3.8 ]
+
root   /var/www/;
2 -  Name:    [ php ]
+
index index.php index.html index.htm;
3 - Version: [ 5.3.8 ]
+
}
4 -  Release: [ 1 ]
 
5 -  License: [ GPL ]
 
6 -  Group:  [ checkinstall ]
 
7 -  Architecture: [ i386 ]
 
8 -  Source location: [ php-5.3.8 ]
 
9 -  Alternate source location: [  ]
 
10 - Requires: [  ]
 
11 - Provides: [ php ]
 
  
Введите номер для изменения параметра или нажмите ВВОД для продолжения: 2
+
location ~ \.php$ {
Введите новое имя:  
+
fastcgi_pass  127.0.0.1:9000;
>> php-fpm
+
fastcgi_index  index.php;
 +
fastcgi_param  SCRIPT_FILENAME  /var/www$fastcgi_script_name;
 +
include fastcgi_params;
 +
}
  
Этот пакет был создан с использованием данных значений:
+
location ~ /\.ht {
 +
deny  all;
 +
}
 +
}
  
0 -  Maintainer: [ root@ubuntu ]
+
</pre>
1 -  Summary: [ php-fpm-5.3.8 ]
 
2 -  Name:    [ php-fpm ]
 
3 -  Version: [ 5.3.8 ]
 
4 -  Release: [ 1 ]
 
5 -  License: [ GPL ]
 
6 -  Group:  [ checkinstall ]
 
7 -  Architecture: [ i386 ]
 
8 -  Source location: [ php-5.3.8 ]
 
9 -  Alternate source location: [  ]
 
10 - Requires: [  ]
 
11 - Provides: [ php ]
 
  
Введите номер для изменения параметра или нажмите ВВОД для продолжения:  
+
Для проверки создаем простейший phpinfo:
 +
<pre>
 +
echo "<? phpinfo(); ?>" > /var/www/index.php
 +
</pre>
  
Installing with make...Installing with install...
+
перезапускаем nginx
  
========================= Результаты установки ===========================
+
   /etc/init.d/nginx restart
Installing PHP SAPI module:      fpm
 
Installing PHP CLI binary:        /usr/local/php/bin/
 
Installing PHP CLI man page:      /usr/local/php/man/man1/
 
Installing shared extensions:    /usr/local/php/lib/php/extensions/no-debug-non-zts-20090626/
 
Installing PHP FPM binary:        /usr/local/php/sbin/
 
Installing PHP FPM config:        /usr/local/php/etc/
 
Installing PHP FPM man page:      /usr/local/php/man/man8/
 
Installing build environment:    /usr/local/php/lib/php/build/
 
Installing header files:          /usr/local/php/include/php/
 
Installing helper programs:      /usr/local/php/bin/
 
   program: phpize
 
  program: php-config
 
Installing man pages:            /usr/local/php/man/man1/
 
  page: phpize.1
 
  page: php-config.1
 
Installing PEAR environment:      /usr/local/php/lib/php/
 
[PEAR] Archive_Tar    - installed: 1.3.7
 
[PEAR] Console_Getopt - installed: 1.3.0
 
[PEAR] Structures_Graph- installed: 1.0.4
 
[PEAR] XML_Util      - installed: 1.2.1
 
[PEAR] PEAR          - installed: 1.9.4
 
Wrote PEAR system config file at: /usr/local/php/etc/pear.conf
 
You may want to add: /usr/local/php/lib/php to your php.ini include_path
 
/root/php-5.3.8/build/shtool install -c ext/phar/phar.phar /usr/local/php/bin
 
ln -s -f /usr/local/php/bin/phar.phar /usr/local/php/bin/phar
 
Installing PDO headers:          /usr/local/php/include/php/ext/pdo/
 
  
======================== Установка успешно завершена ======================
 
  
Файлы копируются во временный каталог...OK
+
Готово!
 
+
[[Изображение:Phpinfo-nginx-php-fpm.png]]
Stripping ELF binaries and libraries...OK
 
 
 
Сжимаются страницы руководства...OK
 
 
 
Построение списка файлов...OK
 
 
 
Собирается Debian-пакет...OK
 
 
 
Устанавливается Debian-пакет...OK
 
 
 
Удаляются временные файлы...OK
 
 
 
Записывается пакет с резервной копией...OK
 
 
 
Удаляется временный каталог...OK
 
 
 
 
 
**********************************************************************
 
 
 
Done. The new package has been installed and saved to
 
 
 
/root/php-5.3.8/php-fpm_5.3.8-1_i386.deb
 
 
 
You can remove it from your system anytime using:
 
 
 
      dpkg -r php-fpm
 
 
 
**********************************************************************
 
</geshi>
 
 
 
 
 
В итоге php-fpm установлен и у нас есть готовый пакет /root/php-5.3.8/php-fpm_5.3.8-1_i386.deb для тех кто не хочет заморачиваться со сборкой или ресурсов VPS для сборки недостаточно, в конце статьи я дам ссылку на собраный пакет.
 
 
 
Создадим init-скрипт и добавим php-fpm в автозапуск:
 
 
 
<geshi lang="bash">
 
cp ./sapi/fpm/init.d.php-fpm /etc/init.d/php-fpm
 
chmod +x /etc/init.d/php-fpm
 
update-rc.d php-fpm defaults
 
cp ./sapi/fpm/php-fpm.conf /usr/local/php/etc/
 
sed -i "s/\;pm./pm./" /usr/local/php/etc/php-fpm.conf
 
sed -i "s/\;pid/pid/" /usr/local/php/etc/php-fpm.conf
 
/etc/init.d/php-fpm start
 
</geshi>
 

Текущая версия на 00:35, 7 декабря 2015

Включаем bash-completion

bash-completion включает расширенное автодополнение команды по нажатию клавиши [Tab]

устанавливаем bash-completion и попутно текстовый редактор Vim:

 apt-get install bash-completion vim -y


В отличии от CentOS/RHEl, в debian/ubuntu недостаточно поставить пакет bash-completion для того чтобы получить желаемый функционал, нужно его ещё и в bash.bashrc раскомментировать. Открываем /etc/bash.bashrc

 vim /etc/bash.bashrc 


и раскомментируем блок:

# enable bash completion in interactive shells
if [ -f /etc/bash_completion ] && ! shopt -oq posix; then
    . /etc/bash_completion
fi

Устанавливаем nginx

Переходим к установке nginx, тут всё просто:

 apt-get update 
 apt-get install nginx


Запускаем nginx

 /etc/init.d/nginx start


Проверяем, слушает ли наш новый nginx порт 80:

 netstat -tnlp | grep nginx
 tcp        0      0 0.0.0.0:80              0.0.0.0:*               LISTEN      1205/nginx


Всё нормально, можем открыть в браузере и порадоваться:

Welcome to nginx.png

Установка php-fpm

Переходим к установки php-fpm. Ставить будем свежайшую версию, соберем собственный deb-пакет из официальных исходников.

Для сборки нам понадобятся пакеты:


 apt-get install libxml2-dev libssl-dev bzip2 libbz2-dev libcurl4-openssl-dev libjpeg62-dev libpng12-dev \
 libfreetype6-dev libt1-dev libc-client2007e-dev libmcrypt-dev libmysqlclient-dev libidn11-dev libltdl-dev \
 checkinstall automake autoconf libicu-dev


Скачиваем тарбол с исходниками php:

 wget http://ru.php.net/get/php-5.3.8.tar.gz/from/this/mirror -O php-5.3.8.tar.gz


Распаковываем его и переходим в папку с исходниками php

 tar zxf php-5.3.8.tar.gz 
 cd php-5.3.8/


Начинаем сборку из исходников:

./configure --enable-fpm --enable-soap --with-mcrypt --enable-mbstring --with-openssl --with-mysql --with-mysql-sock \
--with-gd --with-jpeg-dir=/usr/lib --enable-gd-native-ttf --with-sqlite=shared --with-pdo-mysql --with-libxml-dir=/usr/lib \
--with-mysqli --with-curl --enable-zip --with-bz2 --with-imap --with-imap-ssl --enable-sockets --with-zlib --enable-exif \
--enable-ftp --with-iconv --with-gettext --enable-gd-native-ttf --with-t1lib --with-freetype-dir --with-kerberos \
--prefix=/usr/local/php --with-fpm-user=www-data --with-fpm-group=www-data

Компилируем php:

 make

После того как компиляция успешно завершится с сообщением Build complete переходим к сборке и установке .deb пакета:

 checkinstall -D

В итоге php-fpm установлен и у нас есть готовый пакет /root/php-5.3.8/php-fpm_5.3.8-1_i386.deb для тех кто не хочет заморачиваться со сборкой или ресурсов VPS для сборки недостаточно, в конце статьи я дам ссылку на собраный пакет.

Создадим init-скрипт и добавим php-fpm в автозапуск:

cp ./sapi/fpm/init.d.php-fpm /etc/init.d/php-fpm
chmod +x /etc/init.d/php-fpm
update-rc.d php-fpm defaults 
cp ./sapi/fpm/php-fpm.conf /usr/local/php/etc/
sed -i "s/\;pm./pm./" /usr/local/php/etc/php-fpm.conf
sed -i "s/\;pid/pid/" /usr/local/php/etc/php-fpm.conf
cp ./php.ini-production /usr/local/php/lib/php.ini
sed -i "s/short_open_tag/\;short_open_tag/" /usr/local/php/lib/php.ini 
/etc/init.d/php-fpm start

Теперь займемся настройкой nginx. Приведите файл /etc/nginx/sites-enabled/default к виду:

server {
	listen   80 default;
	server_name  localhost;

	access_log  /var/log/nginx/localhost.access.log;

	location / {
		root   /var/www/;
		index  index.php index.html index.htm;
	}

	location ~ \.php$ {
		fastcgi_pass   127.0.0.1:9000;
		fastcgi_index  index.php;
		fastcgi_param  SCRIPT_FILENAME  /var/www$fastcgi_script_name;
		include	fastcgi_params;
	}

	location ~ /\.ht {
		deny  all;
	}
}

Для проверки создаем простейший phpinfo:

echo "<? phpinfo(); ?>" > /var/www/index.php

перезапускаем nginx

 /etc/init.d/nginx restart


Готово! Phpinfo-nginx-php-fpm.png