Ставим nginx, php, mysql на debian

24 декабря 2012 г. pashich Просмотров: 4631 RSS Обсудить
Server

Ыыыыыы! Получилось! Заработало! В ночь с субботы на воскресенье часа в 3 у меня первый раз в жизни поднялся веб сервер grin Мало сказать что я рад... Я доволен! Очень! Радости нет предела. Но.... Надо все записать, чтобы не забыть

Берем сервер от inferno.name с установленной ОС debian. Обновляем список пакетов

apt-get update

Устанавливаем вот эту штуковину

apt-get install build-essential

Устанавливаем библиотеки, нужные для nginx с учетом того, что когда-нибудь мы будем кроме всего прочего экспериментировать с ssl сертификатами

apt-get install libpcre3-dev

apt-get install openssl

apt-get install libcurl4-openssl-dev

nginx будем качать руками, так как в стандартных репозиториях старая версия. Идем в темп, чтобы барахло валялось не хаотично, а централизованно

cd /tmp

Для того чтобы качнуть последнюю стабильную версию nginx идем на оф сайт, а именно сюда

Видим где написано Стабильная версия копируем ссылку на ее и качаем

wget http://nginx.org/download/nginx-1.2.6.tar.gz

Растариваем

tar -zxvf nginx-1.2.6.tar.gz

Переходим в папку

cd nginx-1.2.6

Конфигурируем

./configure \
--user=www-data \

--group=www-data \

--with-http_ssl_module \

--with-http_realip_module \

--with-http_addition_module \

--with-http_sub_module \

--with-http_dav_module \

--with-http_flv_module \

--with-http_gzip_static_module \

--with-mail \

--with-mail_ssl_module

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

make & makeinstall

Запускаем

/usr/local/nginx/sbin/nginx

Открываем браузер, вводим ip адрес нашего сервера. Если видим Welcome to nginx! - победа! Едем дальше.

Создаем файл

nano /etc/init.d/nginx

Такого содержания

#! /bin/sh

### BEGIN INIT INFO

# Provides: nginx

# Required-Start: $all

# Required-Stop: $all

# Default-Start: 2 3 4 5

# Default-Stop: 0 1 6

# Short-Description: starts the nginx web server

# Description: starts nginx using start-stop-daemon

### END INIT INFO

PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin

DAEMON=/usr/local/nginx/sbin/nginx

NAME=nginx

DESC=nginx

test -x $DAEMON || exit 0

# Include nginx defaults if available

if [ -f /etc/default/nginx ] ; then

. /etc/default/nginx

fi

set -e

case "$1" in

start)

echo -n "Starting $DESC: "

start-stop-daemon --start --quiet --pidfile /usr/local/nginx/logs/nginx.pid --exec $DAEMON -- $DAEMON_OPTS

echo "$NAME."

;;

stop)

echo -n "Stopping $DESC: "

start-stop-daemon --stop --quiet --pidfile /usr/local/nginx/logs/nginx.pid --exec $DAEMON

echo "$NAME."

;;

restart|force-reload)

echo -n "Restarting $DESC: "

start-stop-daemon --stop --quiet --pidfile /usr/local/nginx/logs/nginx.pid --exec $DAEMON

sleep 1

start-stop-daemon --start --quiet --pidfile /usr/local/nginx/logs/nginx.pid --exec $DAEMON -- $DAEMON_OPTS

echo "$NAME."

;;

reload)

echo -n "Reloading $DESC configuration: "

start-stop-daemon --stop --signal HUP --quiet --pidfile /usr/local/nginx/logs/nginx.pid --exec $DAEMON

echo "$NAME."

;;

*)

N=/etc/init.d/$NAME

echo "Usage: $N {start|stop|restart|force-reload}" >&2

exit 1

;;

esac

exit 0

Меняем права

chmod 755 /etc/init.d/nginx

Добавляем в автозагрузку

update-rc.d nginx defaults

Теперь можно стартануть, рестартануть или остановить веб сервер

/etc/init.d/nginx start

/etc/init.d/nginx restart

/etc/init.d/nginx stop

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

apt-get install php5-cgi php5-mysql php5-curl php5-gd php5-json php5-mcrypt php5-memcache

Открываем для редактирования файл

nano /etc/php5/cgi/php.ini

Добавляем в конец него строку

cgi.fix_pathinfo = 1

Добавляем php в автозагрузку, создаем файл

nano /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

# 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

Создаем еще один файл

nano /etc/default/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

Запускаем

/etc/init.d/php-fastcgi start

Добавляем в автозагрузку

update-rc.d php-fastcgi defaults

Делаем так, чтобы nginx общались с php, создаем папку для сайтов, например

mkdir /home/www

Редактируем файл

nano /usr/local/nginx/conf/nginx.conf

Указываем

user www-data www-data;

Там где server {} раскомментируем следующие строки

location / {

root /home/www;

index index.php index.html index.htm;

}

location ~ \.php$ {

root /home/www;

fastcgi_pass 127.0.0.1:9000;

fastcgi_index index.php;

fastcgi_param SCRIPT_FILENAME /home/www$fastcgi_script_name;

include fastcgi_params;

}

Рестартуем nginx

/etc/init.d/nginx restart

Создаем файл

nano /home/www/info.php

Такого содержания

phpinfo();

?>

Открываем браузер, набираем http://ip адрес сервера/info.php

Смотрим, радуемся. Еще одна победа! Едем дальше

Ставим mysql

apt-get install mysql-server mysql-client

Ставим библиотеку

apt-get install php5-dev

Дальше интересно. Кое что снова будем качать руками, конфигурировать и собирать, так как в репозиториях нету. Чтобы загаживать одно определенное место идем в темп

cd /tmp

Нам надо качнуть EACCELERATOR, идем на этот сайт. Но прямую ссылку скопировать не получится, я качнул файл себе на локальную машинку, закинул в dropbox, а ссылку из дропбокса уже скормил wget-у.

Качаем

wget httр://путь/eaccelerator-0.9.6.1.tar.bz2

Растариваем

tar xvfj eaccelerator-0.9.6.1.tar.bz2

Переходим в папку

cd eaccelerator-0.9.5.3

Конфигурируем

phpize
./configure

Ставим

make & makeinstall

Создаем файл

nano /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"

Сделаем ему папку

mkdir -p /var/cache/eaccelerator

Поменяем ей права

chmod 0777 /var/cache/eaccelerator

Рестартуем php

/etc/init.d/php-fastcgi restart

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

apt-get install memcached

Рестартуем php

/etc/init.d/php-fastcgi restart

Готово!!! Теперь можно изголяться grin Через пару дней опишу первый интересный способ grin)


Используете сервера Amazon для хранения информации? Задумываетесь об ее конфиденциальности? Беспокоит возможность просмотра вашей информацией третьими лицами? Программа для шифрования Amazon S3 - вот что сокроет ваши данные от посторонних и сохранит ваши нервы и душевное спокойствие!

Поделиться с друзьями   facebook.com vkontakte.ru odnoklassniki.ru mail.ru ya.ru livejournal.ru