Вы не вошли.
Страницы 1
{{tag>Debian Ngnix}}
===== VDS на Debian GNU/Linux 6.0.5 (squeeze).nginx + php-cgi + mysql + eaccelerator + memcache + phpMyAdmin=====
Перво-наперво обновляем список пакетов:
apt-get update
Ну и заодно и обновляем всю систему
apt-get upgrade
Ставим пакет для сборки пакетов deb пакетов
apt-get install build-essential
Ставим библиотеки, необходимые для установки nginx в той конфигурации, которую мы будем ставить (pcre обязательная всегда, ssl — опционально, если конфигурируем nginx с ней):
apt-get install libpcre3-dev
apt-get install openssl
apt-get install libcurl4-openssl-dev
Если работаете через SSH то openssl скорее всего уже будет в системе.
====NGNIX====
Заходим в темп:
cd /tmp
Качаем связку ключей с сайта ngnix
wget http://nginx.org/keys/nginx_signing.key
Добавим ключ в apt-get
apt-key add nginx_signing.key
Добавляем репозитории ngnix
echo "deb http://nginx.org/packages/debian/ squeeze nginx" >> /etc/apt/sources.list
echo "deb-src http://nginx.org/packages/debian/ squeeze nginx" >> /etc/apt/sources.list
После добавления обновим список пакетов
apt-get update
Ну и собственно ставим nginx
apt-get install nginx
Запускаем его
/etc/init.d/nginx start
Заходим в браузер, набираем наш ip/домен и видим: **Welcome to nginx!**\\
Теперь мы можем управлять нашим http-сервером с помощью следующих команд:
/etc/init.d/nginx start
/etc/init.d/nginx restart
/etc/init.d/nginx stop
====PHP-FASTCGI====
PHP будем ставить из коллекции пакетов
apt-get install php5-cgi php5-mysql php5-curl php5-gd php5-json php5-mcrypt php5-memcache
Далее заходим в '/etc/php5/cgi/php.ini', где раскоментируем строку:
cgi.fix_pathinfo = 1
Добавим php в автозагрузку. Для чего cоздаем скрипт '/etc/init.d/php-fastcgi' следующего содержания:
#! /bin/sh
### BEGIN INIT INFO
# Provides: php-fastcgi
# Required-Start: $all
# Required-Stop: $all
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# Short-Description: Start and stop php-cgi in external FASTCGI mode
# Description: Start and stop php-cgi in external FASTCGI mode
### END INIT INFO
# Author: Kurt Zankl <kz@xon.uni.cc>
# Do NOT "set -e"
PATH=/sbin:/usr/sbin:/bin:/usr/bin
DESC="php-cgi in external FASTCGI mode"
NAME=php-fastcgi
DAEMON=/usr/bin/php-cgi
PIDFILE=/var/run/$NAME.pid
SCRIPTNAME=/etc/init.d/$NAME
# Exit if the package is not installed
[ -x "$DAEMON" ] || exit 0
# Read configuration variable file if it is present
[ -r /etc/default/$NAME ] && . /etc/default/$NAME
# Load the VERBOSE setting and other rcS variables
. /lib/init/vars.sh
# Define LSB log_* functions.
# Depend on lsb-base (>= 3.0-6) to ensure that this file is present.
. /lib/lsb/init-functions
# If the daemon is not enabled, give the user a warning and then exit,
# unless we are stopping the daemon
if [ "$START" != "yes" -a "$1" != "stop" ]; then
log_warning_msg "To enable $NAME, edit /etc/default/$NAME and set START=yes"
exit 0
fi
# Process configuration
export PHP_FCGI_CHILDREN PHP_FCGI_MAX_REQUESTS
DAEMON_ARGS="-q -b $FCGI_HOST:$FCGI_PORT"
do_start()
{
# Return
# 0 if daemon has been started
# 1 if daemon was already running
# 2 if daemon could not be started
start-stop-daemon --start --quiet --pidfile $PIDFILE --exec $DAEMON --test > /dev/null || return 1
start-stop-daemon --start --quiet --pidfile $PIDFILE --exec $DAEMON --background --make-pidfile --chuid $EXEC_AS_USER --startas $DAEMON -- $DAEMON_ARGS || return 2
}
do_stop()
{
# Return
# 0 if daemon has been stopped
# 1 if daemon was already stopped
# 2 if daemon could not be stopped
# other if a failure occurred
start-stop-daemon --stop --quiet --retry=TERM/30/KILL/5 --pidfile $PIDFILE > /dev/null # --name $DAEMON
RETVAL="$?"
[ "$RETVAL" = 2 ] && return 2
# Wait for children to finish too if this is a daemon that forks
# and if the daemon is only ever run from this initscript.
# If the above conditions are not satisfied then add some other code
# that waits for the process to drop all resources that could be
# needed by services started subsequently. A last resort is to
# sleep for some time.
start-stop-daemon --stop --quiet --oknodo --retry=0/30/KILL/5 --exec $DAEMON
[ "$?" = 2 ] && return 2
# Many daemons don't delete their pidfiles when they exit.
rm -f $PIDFILE
return "$RETVAL"
}
case "$1" in
start)
[ "$VERBOSE" != no ] && log_daemon_msg "Starting $DESC" "$NAME"
do_start
case "$?" in
0|1) [ "$VERBOSE" != no ] && log_end_msg 0 ;;
2) [ "$VERBOSE" != no ] && log_end_msg 1 ;;
esac
;;
stop)
[ "$VERBOSE" != no ] && log_daemon_msg "Stopping $DESC" "$NAME"
do_stop
case "$?" in
0|1) [ "$VERBOSE" != no ] && log_end_msg 0 ;;
2) [ "$VERBOSE" != no ] && log_end_msg 1 ;;
esac
;;
restart|force-reload)
log_daemon_msg "Restarting $DESC" "$NAME"
do_stop
case "$?" in
0|1)
do_start
case "$?" in
0) log_end_msg 0 ;;
1) log_end_msg 1 ;; # Old process is still running
*) log_end_msg 1 ;; # Failed to start
esac
;;
*)
# Failed to stop
log_end_msg 1
;;
esac
;;
*)
echo "Usage: $SCRIPTNAME {start|stop|restart|force-reload}" >&2
exit 3
;;
esac
Делаем его исполняемым:
chmod 755 /etc/init.d/php-fastcgi
Создаем ещё один файл '/etc/default/php-fastcgi', чтобы мы могли контролировать php-fastcgi (слушать порты, получать количество дочерних процессов и другие запросы), такого содержания:
#
# Settings for php-cgi in external FASTCGI Mode
#
# Should php-fastcgi run automatically on startup? (default: no)
START=yes
# Which user runs PHP? (default: www-data)
EXEC_AS_USER=www-data
# Host and TCP port for FASTCGI-Listener (default: localhost:9000)
FCGI_HOST=localhost
FCGI_PORT=9000
# Environment variables, which are processed by PHP
PHP_FCGI_CHILDREN=5
PHP_FCGI_MAX_REQUESTS=1000
Запускаем php-fastcgi:
/etc/init.d/php-fastcgi start
Добавляем его в автозагрузку:
update-rc.d php-fastcgi defaults
====Дружим NGINX и PHP====
Создадим папку для сайтов, например, '/var/www'. \\
А в ней папку для своего сайта.
mkdir /var/www
mkdir /var/www/corp
Редактируем '/etc/nginx/nginx.conf'. Указываем под кем будем запускать nginx:
user www-data www-data;
Для нашего сайта переименуйте /etc/nginx/conf.d/default.conf в corp.conf \\
Файл /etc/nginx/conf.d/corp.conf приведем следующему виду:
server {
listen 80;
server_name localhost;
location / {
root /var/www/corp;
index index.html index.php;
}
location ~* \.(gif|jpg|png)$ {
expires 30d;
}
location ~ \.php$ {
root /var/www/corp;
fastcgi_pass localhost:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
}
====MYSQL====
Ставим:
apt-get install mysql-server mysql-client
В процессе будет предложено установить пароль рута, который можно всегда поменять так:
mysqladmin -u root password tralala
====EACCELERATOR====
Печально, но eAccelerator вообще отсутствует в установочных пакетах Debian. Будем ставить руками. Предварительно нам потребуется установить библиотеку php-developer:
apt-get install php5-dev
Теперь скачиваем и устанавливаем eAccelerator. \\
Я устанавливаю актуальную версию на момент написания статьи. \\
Просмотреть какие версии есть можно по ссылке https://github.com/eaccelerator/eaccelerator/downloads
cd /tmp
wget https://github.com/downloads/eaccelerator/eaccelerator/eaccelerator-0.9.6.1.tar.bz2
tar -xvf ./eaccelerator-0.9.6.1
cd eaccelerator-0.9.6.1
phpize
./configure
make
make install
Создаем конфигурационный файл '/etc/php5/conf.d/eaccelerator.ini' следующего содержания:
extension="eaccelerator.so"
eaccelerator.shm_size="64"
eaccelerator.cache_dir="/var/cache/eaccelerator"
eaccelerator.enable="1"
eaccelerator.optimizer="1"
eaccelerator.check_mtime="1"
eaccelerator.debug="0"
eaccelerator.filter=""
eaccelerator.shm_max="0"
eaccelerator.shm_ttl="3600"
eaccelerator.shm_prune_period="1800"
eaccelerator.shm_only="0"
eaccelerator.compress="1"
eaccelerator.compress_level="9"
Создаем папку для хранения файлов eAccelerator'а:
mkdir -p /var/cache/eaccelerator
chmod 0777 /var/cache/eaccelerator
Перезапускаем php:
/etc/init.d/php-fastcgi restart
У меня на виртуальной машине пришлось параметр eaccelerator.shm_size выставить в 16, ;-)
====MEMCACHE====
Устанавливаем:
apt-get install memcached
Перезапускаем php ещё разок:
/etc/init.d/php-fastcgi restart
====phpMyAdmin====
Ставим phpmyadmin через **aptitude**
aptitude install phpmyadmin
Перезапускаем php ещё разок:
aptitude install phpmyadmin
В появившемся окне "Configuring phpmyadmin" не выбираем ни одного web сервера и просто жмем Enter. \\
Дописываем в файл /etc/nginx/conf.d/corp.conf
location ^~ /phpmyadmin {
alias /usr/share/phpmyadmin;
index index.php;
location ~ /phpmyadmin(/.*\.php) {
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME /usr/share/phpmyadmin/$1;
fastcgi_pass localhost:9000;
fastcgi_index index.php;
}
}
Перезапустите ngnix
/etc/init.d/nginx restart
По адресу вашIP/phpmyadmin должно всё заработать
====Резюме====
Не претендую на точность изложения материала. Статья может содержать ошибки. ;-) \\
Получившийся сервер по производительности в разы превосходит аналогичные конфигурации с применением http сервера Apache. \\
Рекомендую использовать в локальных сетях для тестирования web приложений. \\
В данной статье не освещены вопросы взаимодействия с сайтом по FTP. Но это тема отдельной статьи. \\
Список источников информации для статьи.
- http://habrahabr.ru/post/67557/ основа для статьи
- http://nginx.org сайт по моему мнению лучшего на сегодняшний день http сервера
~~DISCUSSION~~
Редактировался mosadif (15.04.2013, 18:03:01)
Жалко что движок не поддерживает форматирование ДокуВики.
Редактор и форматирование слабовато.
Плавно перепилю статью. что бы было всё красиво. Времени жалко. Слишком долго.
Навряд ли буду ещё что либо сюда писать. Предлагаю сменить формат.
Кого заинтересовало Вам сюда.
Редактировался mosadif (15.04.2013, 18:05:18)
Страницы 1
[ Сгенерировано за 0.014 сек, 8 запросов выполнено - Использовано памяти: 1.95 MiB (Пик: 2.03 MiB) ]