Пыха всегда с тобой

Добро пожаловать на Пыху!

Логин:
Пароль:
 

Нет прописки? Зарегистрируйся!

Новости

Мы в твиттере!
Мы вконтакте!
Мы на яндексе!

Краснодарское время: 25 Май, 2012, 03:17:13

Страниц: [1] 2
Печать
Автор Тема: Установка mysql-server, nginx, php-fpm на vds с debian 6 с нуля  (Прочитано 1384 раз)
0 Пользователей и 1 Гость смотрят эту тему.
Ivan    ↓ 
30 Август, 2011, 09:35:30
НЕ ХУЕТА! ХУЕТА!

Группа: Адекваты

Карма: 27
Сообщений: 1366
Сила слова: 1.98

Мини-фак расчитанный на новичков
 
И так вы только что приобрели себе VDS, с доступным VDSManager'ом. Уже установленная операционная система не важна - список операционных систем в самом VDSManager'е обычно куда больше чем предлагают на сайте. Первым делом зайдём в VDSManager и установим ту систему, которую нам надо - в нашем случае Debian 6 (почему-то его не могут поставить сразу, криворукие админы всегда ставят 5, ну или у них там заранее заложенный скрипт под Debian 5...)

Длительность переустановки системы - около 10 секунд.
Затем логинимся по ssh, и начинаем вводить команды.
 
Для начала зададим переменные для простоты установки и настройки:
Text
NGINX_VERSION="1.0.5"
PHP_VERSION="5.3.8"
MYSQL_SERVER_PORT="15432"
PHP_FPM_PORT="15001"
PHP_FPM_USER="www-data"
PHP_FPM_GROUP="www-data"
PHP_FPM_ALLOWED="127.0.0.1"

Переходим в opt:
Text
cd /opt

Обновляем пакетарий:
Text
echo "deb-src http://mirror.yandex.ru/debian/ squeeze main contrib non-free" >> /etc/apt/sources.list
echo "deb-src http://mirror.yandex.ru/debian-security/ squeeze/updates main contrib non-free" >> /etc/apt/sources.list
echo "deb http://packages.dotdeb.org stable all" >> /etc/apt/sources.list
echo "deb-src http://packages.dotdeb.org stable all" >> /etc/apt/sources.list
wget http://www.dotdeb.org/dotdeb.gpg
cat dotdeb.gpg | apt-key add -
gpg --keyserver hkp://subkeys.pgp.net --recv-keys 07DC563D1F41B907
gpg --export | apt-key add -
apt-get update
rm dotdeb.gpg

Устанавливаем всякие пакеты, которые нам пригодятся:
Text
apt-get -y install htop zlibc zlib-bin zlib-gst zlib1g zlib1g-dev aptitude gcc libc6-dev zip ruby libpcre3 libpcre3-dev openssl libcrypt-openssl-rsa-perl libcurl4-openssl-dev curl build-essential ffmpeg libxml2 libxml2-dev libsqlite-dev libmysqlclient-dev libgd2-xpm libgd2-xpm-dev libmagick-dev libmcrypt-dev autoconf
Они в свою очередь вытянут еще огромную кучу пакетов на все случаи жизни =)
 
Переходим к установке mysql:
Text
apt-get -y install mysql-server mysql-client
Ждем графического окна и вбиваем туда пароль от свежего mysql-сервера, затем настраиваем сервер:
Text
printf "# The following options will be passed to all MySQL clients\n[client]\nport  = ${MYSQL_SERVER_PORT}\nsocket      = /var/run/mysqld/mysqld.sock\n\n# The MySQL server\n[mysqld]\nport        = ${MYSQL_SERVER_PORT}\nsocket  = /var/run/mysqld/mysqld.sock\nskip-locking\nskip-innodb\nkey_buffer_size = 16K\nmax_allowed_packet = 1M\ntable_open_cache = 4\nsort_buffer_size = 64K\nread_buffer_size = 256K\nread_rnd_buffer_size = 256K\nnet_buffer_length = 2K\nthread_stack = 128K\nserver-id = 1\n\n[mysqldump]\nquick\nmax_allowed_packet = 16M\n\n[mysql]\nno-auto-rehash\n\n[myisamchk]\nkey_buffer_size = 4M\nsort_buffer_size = 4M\n\n[mysqlhotcopy]\ninteractive-timeout\n" > /etc/my.cnf
Text
/etc/init.d/mysql restart
Эта настройка для слабых VDS, отличается от my-small.cnf лишь отключенным InnoDB (skip-innodb) и уменьшенным буфером myisamchk.
 
Удаляем ненужный нам apache2:
Text
/etc/init.d/apache2 stop
apt-get -y remove apache2
rm /etc/init.d/apache2
rm -r -f /etc/apache2
rm -r -f /usr/share/apache2
update-rc.d apache2 remove

И устанавливаем nginx (выполняйте команды по очереди):
Text
wget http://nginx.org/download/nginx-${NGINX_VERSION}.tar.gz
tar zxvf *
cd nginx*
./configure --with-http_ssl_module --with-http_gzip_static_module --with-http_realip_module
make
make install
cd ..
rm -r -f nginx*
Text
printf "#! /bin/sh\n \n### BEGIN INIT INFO\n# Provides: nginx\n# Required-Start: \$all\n# Required-Stop: \$all\n# Default-Start: 2 3 4 5\n# Default-Stop: 0 1 6\n# Short-Description: starts the nginx web server\n# Description: starts nginx using start-stop-daemon\n### END INIT INFO\n \nPATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin\nDAEMON=/usr/local/nginx/sbin/nginx\nNAME=nginx\nDESC=nginx\n \ntest -x \$DAEMON || exit 0\n \n# Include nginx defaults if available\nif [ -f /etc/default/nginx ] ; then\n. /etc/default/nginx\nfi\n \nset -e\n \ncase \"\$1\" in\nstart)\necho -n \"Starting server: \"\nstart-stop-daemon --start --quiet --pidfile /usr/local/nginx/logs/nginx.pid --exec \$DAEMON -- \$DAEMON_OPTS\necho \"ok.\"\n;;\nstop)\necho -n \"Stopping server: \"\nstart-stop-daemon --stop --quiet --pidfile /usr/local/nginx/logs/nginx.pid --exec \$DAEMON\necho \"ok.\"\n;;\nrestart|force-reload)\necho -n \"Restarting server: \"\nstart-stop-daemon --stop --quiet --pidfile /usr/local/nginx/logs/nginx.pid --exec \$DAEMON\nsleep 1\nstart-stop-daemon --start --quiet --pidfile /usr/local/nginx/logs/nginx.pid --exec \$DAEMON -- \$DAEMON_OPTS\necho \"ok.\"\n;;\nreload)\necho -n \"Reloading server configuration: \"\nstart-stop-daemon --stop --signal HUP --quiet --pidfile /usr/local/nginx/logs/nginx.pid --exec \$DAEMON\necho \"ok.\"\n;;\n*)\nN=/etc/init.d/\$NAME\necho \"Usage: \$N {start|stop|restart|force-reload}\" >&2\nexit 1\n;;\nesac\n \nexit 0" > /etc/init.d/nginx
Text
chmod 755 /etc/init.d/nginx
update-rc.d nginx defaults
mkdir /srv/www
Text
printf "# another virtual host using mix of IP-, name-, and port-based configuration\n#\n#server {\n#    listen       8000;\n#    listen       somename:8080;\n#    server_name  somename  alias  another.alias;\n\n#    location / {\n#        root   html;\n#        index  index.html index.htm;\n#    }\n#}\n\n\n# HTTPS server\n#\n#server {\n#    listen       443;\n#    server_name  localhost;\n\n#    ssl                  on;\n#    ssl_certificate      cert.pem;\n#    ssl_certificate_key  cert.key;\n\n#    ssl_session_timeout  5m;\n\n#    ssl_protocols  SSLv2 SSLv3 TLSv1;\n#    ssl_prefer_server_ciphers   on;\n\n#    location / {\n#        root   html;\n#        index  index.html index.htm;\n#    }\n#}" > /srv/www/sites.cfg
Text
mkdir /srv/www/default
echo "<h1>Nginx works</h1>" > /srv/www/default/index.html
echo "<?php phpinfo(); ?>" > /srv/www/default/phpinfo.php
Text
printf "user  ${PHP_FPM_USER};\nworker_processes  4;\n\nevents {\n    worker_connections  20000;\n}\n\nhttp {\n    include       mime.types;\n    default_type  application/octet-stream;\n    sendfile        on;\n    keepalive_timeout  0;\n\n    server {\n        listen       80;\n        server_name  localhost;\n\n        charset utf-8;\n\n        location / {\n            root   /srv/www/default;\n            index  index.html index.htm;\n        }\n\n        error_page   500 502 503 504  /50x.html;\n        location = /50x.html\n      {\n            root   html;\n        }\n\n        location ~ \\.php\$ {\n            root           /srv/www/default;\n            fastcgi_pass   127.0.0.1:${PHP_FPM_PORT};\n            fastcgi_index  index.php;\n            fastcgi_param  SCRIPT_FILENAME  /srv/www/default\$fastcgi_script_name;\n            include        fastcgi_params;\n        }\n  \n    }\n  \n    include /srv/www/sites.cfg;\n\n}\n" > /usr/local/nginx/conf/nginx.conf

Теперь таким же образом собираем и настраиваем php-fpm, с необходимыми нам модулями:
Text
wget http://www.php.net/get/php-${PHP_VERSION}.tar.gz/from/ru.php.net/mirror
tar zxvf *
cd php*
./configure --enable-fpm --with-mcrypt --with-zlib --enable-mbstring --with-curl --disable-debug --disable-rpath --enable-inline-optimization --enable-sockets --enable-sysvsem --enable-sysvshm --enable-pcntl --enable-mbregex --with-mhash --enable-zip --with-pcre-regex --with-gd --with-mysqli
make
make install
cd ..
rm -r -f php*
Text
printf "[global]\n\nrlimit_files = 20000\nrlimit_core = 0\n\n[www]\n\nlisten = 127.0.0.1:${PHP_FPM_PORT}\nlisten.allowed_clients = ${PHP_FPM_ALLOWED}\nuser = ${PHP_FPM_USER}\ngroup = ${PHP_FPM_GROUP}\npm = dynamic\npm.max_children = 50\npm.min_spare_servers = 5\npm.max_spare_servers = 35\nrlimit_files = 20000\nrlimit_core = 0\n" > /usr/local/etc/php-fpm.conf
Text
printf "#! /bin/sh\n\n### BEGIN INIT INFO\n# Provides:          php-fpm\n# Required-Start:    \$all\n# Required-Stop:     \$all\n# Default-Start:     2 3 4 5\n# Default-Stop:      0 1 6\n# Short-Description: starts the php-fpm server\n# Description:       starts php-fpm using start-stop-daemon\n### END INIT INFO\n \nPATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin\nDAEMON=/usr/local/sbin/php-fpm\nNAME=php-fpm\nDESC=php-fpm\n\ntest -x \$DAEMON || exit 0\n\ncase \"\$1\" in\n  start)\n        echo -n \"Starting \$DESC: \"\n        start-stop-daemon --start --quiet --pidfile /var/run/\$NAME.pid --exec \$DAEMON -- \$DAEMON_OPTS\n        echo \"\$NAME.\"\n        ;;\n  stop)\n        echo -n \"Stopping \$DESC: \"\n        start-stop-daemon --stop --quiet --pidfile /var/run/\$NAME.pid --exec \$DAEMON\n        echo \"\$NAME.\"\n        ;;\n  restart|force-reload)\n        echo -n \"Restarting \$DESC: \"\n        start-stop-daemon --stop --quiet --pidfile /var/run/\$NAME.pid --exec \$DAEMON\n        sleep 1\n        start-stop-daemon --start --quiet --pidfile /var/run/\$NAME.pid --exec \$DAEMON -- \$DAEMON_OPTS\n        echo \"\$NAME.\"\n        ;;\n  reload)\n      echo -n \"Reloading \$DESC configuration: \"\n      start-stop-daemon --stop --signal HUP --quiet --pidfile /var/run/\$NAME.pid --exec \$DAEMON\n      echo \"\$NAME.\"\n      ;;\n  *)\n        N=/etc/init.d/\$NAME\n        echo \"Usage: \$N {start|stop|restart|force-reload}\" >&2\n        exit 1\n        ;;\nesac\n \nexit 0" > /etc/init.d/php-fpm
Text
chmod 755 /etc/init.d/php-fpm
update-rc.d php-fpm defaults
printf "date.timezone = 'Europe/Moscow'\nmysqli.default_port = ${MYSQL_SERVER_PORT}\nmagic_quotes_gpc = Off\nmagic_quotes_runtime = Off\nmagic_quotes_sybase = Off"  > /usr/local/lib/php.ini

И наконец запускаем сервера:
Text
/etc/init.d/php-fpm start
/etc/init.d/nginx start
Спустя 3 минуты 44 секунды добавил
Установка ImageMagick:
Text
IMAGICK_VERSION="6.7.1-9"
wget ftp://ftp.imagemagick.org/pub/ImageMagick/ImageMagick-${IMAGICK_VERSION}.zip
unzip ImageMagick-${IMAGICK_VERSION}.zip
cd Image*
./configure
make
make install
cd ..
rm -r -f ImageMagick*
pecl install imagick
echo "extension=php_imagick.so" >> /usr/local/lib/php.ini
« Последнее редактирование: 30 Август, 2011, 09:35:30 от Ivan » Записан

Ivan    ↓ 
24 Август, 2011, 02:40:19 , спустя
НЕ ХУЕТА! ХУЕТА!

Группа: Адекваты

Карма: 27
Сообщений: 1366
Сила слова: 1.98

___
« Последнее редактирование: 24 Август, 2011, 02:40:19 от Ivan » Записан

Sinkler    ↓ 
23 Август, 2011, 01:04:50 , спустя
НЕ ХУЕТА! ХУЕТА!

Похуй, пляшем!
Группа: Джедаи

Карма: 73
Сообщений: 6806
Сила слова: 1.07

дайте ему адеквата, пусть отредактирует)))
Спустя 1 минуту 18 секунд добавил
а че, у ферствдса уже нет фрибсд?
Записан

adw0rd    ↓ 
23 Август, 2011, 01:13:25 , спустя 8 минут 35 секунд
НЕ ХУЕТА! ХУЕТА!

эдво
Группа: в ухо

Карма: не нужна
Сообщений: 17629
Сила слова: 1.67

Да, челу как минимум адеквата надо!
Записан

Python, Django, Git, Emacs, Nginx, MySQL, SphinxSearch, FreeBSD/Linux
Мой блог * Кинсбург * Либург * Я на GitHub
Ivan    ↓ 
30 Август, 2011, 09:43:34 , спустя 6 дней 20 часов 30 минут 9 секунд
НЕ ХУЕТА! ХУЕТА!

Группа: Адекваты

Карма: 27
Сообщений: 1366
Сила слова: 1.98

Альтернативный вариант конфигурации php, для поддержки MySQL (та конфигурация держит только mysqli), PDO_MySQL, LibJPEG, LibPNG, FreeType:
Text
./configure --enable-fpm --with-mcrypt --with-zlib --enable-mbstring --with-curl --disable-debug --disable-rpath --enable-inline-optimization --enable-sockets --enable-sysvsem --enable-sysvshm --enable-pcntl --enable-mbregex --with-mhash --enable-zip --with-pcre-regex --with-gd --with-mysqli --with-mysql --with-jpeg-dir=/usr/lib --with-png-dir=/usr/lib --with-freetype-dir=/usr/lib --enable-gd-native-ttf --with-pdo-mysql --with-mysql-sock
Записан

adw0rd    ↓ 
30 Август, 2011, 10:50:43 , спустя 1 час 7 минут 9 секунд
НЕ ХУЕТА! ХУЕТА!

эдво
Группа: в ухо

Карма: не нужна
Сообщений: 17629
Сила слова: 1.67

И да, по традиции ссылку от меня http://adw0rd.ru/tag/php-fpm/
Записан

Python, Django, Git, Emacs, Nginx, MySQL, SphinxSearch, FreeBSD/Linux
Мой блог * Кинсбург * Либург * Я на GitHub
Ivan    ↓ 
04 Декабрь, 2011, 04:27:02 , спустя 96 дней 5 часов 36 минут 19 секунд
НЕ ХУЕТА! ХУЕТА!

Группа: Адекваты

Карма: 27
Сообщений: 1366
Сила слова: 1.98

http://dev.mysql.com/doc/refman/5.6/en/innodb-default-se.html
InnoDB теперь дефолтный сторейдж енджин, поэтому конфиг приведенный выше не сработает и даже врядли даст откатится до 5.1, поэтому учимся конфигурировать InnoDB и забиваем окончательно на MYISAM в своих проектах
« Последнее редактирование: 04 Декабрь, 2011, 04:27:02 от Ivan » Записан

Ivan    ↓ 
04 Декабрь, 2011, 05:13:49 , спустя 46 минут 47 секунд
НЕ ХУЕТА! ХУЕТА!

Группа: Адекваты

Карма: 27
Сообщений: 1366
Сила слова: 1.98

Text
default-storage-engine=MyISAM
skip-innodb

вставляем в секцию mysqld если нужно отключить innodb
Записан

Абырвалг    ↓ 
04 Декабрь, 2011, 09:20:33 , спустя 4 часа 6 минут 44 секунды
НЕ ХУЕТА! ХУЕТА!

PHP Infected, симфоеб, маконенавистник
Группа: Джедаи

Карма: 80
Сообщений: 6096
Сила слова: 1.31

тек-с, а как поставить рядышком 2 версии пыхи: 5.2 и 5.3?
и как сделать, что б разные сайты работали под разными пользователями?
Записан

PHP does the job since 1995
Пожалуйста, не надо делать двойные клики по ссылкам. Это создает избыточную нагрузку на сервер
Ivan    ↓ 
04 Декабрь, 2011, 11:18:19 , спустя 1 час 57 минут 46 секунд
НЕ ХУЕТА! ХУЕТА!

Группа: Адекваты

Карма: 27
Сообщений: 1366
Сила слова: 1.98


тек-с, а как поставить рядышком 2 версии пыхи: 5.2 и 5.3?
если ты про фпм, то вероятно стоит одну версию повешать на один порт, другую на другой
Записан

Абырвалг    ↓ 
04 Декабрь, 2011, 11:20:09 , спустя 1 минуту 50 секунд
НЕ ХУЕТА! ХУЕТА!

PHP Infected, симфоеб, маконенавистник
Группа: Джедаи

Карма: 80
Сообщений: 6096
Сила слова: 1.31

ну допустим, а с пользователями как?)
Записан

PHP does the job since 1995
Пожалуйста, не надо делать двойные клики по ссылкам. Это создает избыточную нагрузку на сервер
Ivan    ↓ 
04 Декабрь, 2011, 11:28:56 , спустя 8 минут 47 секунд
НЕ ХУЕТА! ХУЕТА!

Группа: Адекваты

Карма: 27
Сообщений: 1366
Сила слова: 1.98

--with-config-file-path=PATH
   Sets the path in which to look for php.ini.
 
Еще после конфигура смотри Makefile, там должны быть установочные пути
 
это я все к первому вопросу
Спустя 3 минуты 10 секунд добавил

ну допустим, а с пользователями как?)

Вопрос нафига это тебе надо?
Ну самый простой вариант, приходящий в голову - у одного фпм один юзер, у другого другой.
Спустя 1 минуту 16 секунд добавил
Или несколько nginx'ов запустить, тоже вариант, но слегка несерьезный
Записан

Абырвалг    ↓ 
04 Декабрь, 2011, 11:38:33 , спустя 9 минут 37 секунд
НЕ ХУЕТА! ХУЕТА!

PHP Infected, симфоеб, маконенавистник
Группа: Джедаи

Карма: 80
Сообщений: 6096
Сила слова: 1.31

Оо, та не, это вообще пиздец лютый
 

для секьюрности. У меня несколько сайтов на сервере
Записан

PHP does the job since 1995
Пожалуйста, не надо делать двойные клики по ссылкам. Это создает избыточную нагрузку на сервер
Ivan    ↓ 
05 Декабрь, 2011, 12:07:23 , спустя 28 минут 50 секунд
НЕ ХУЕТА! ХУЕТА!

Группа: Адекваты

Карма: 27
Сообщений: 1366
Сила слова: 1.98


Оо, та не, это вообще пиздец лютый
 
для секьюрности. У меня несколько сайтов на сервере

Спроси адворда может он знает?
Записан

Абырвалг    ↓ 
05 Декабрь, 2011, 12:09:27 , спустя 2 минуты 4 секунды
НЕ ХУЕТА! ХУЕТА!

PHP Infected, симфоеб, маконенавистник
Группа: Джедаи

Карма: 80
Сообщений: 6096
Сила слова: 1.31

/cc @adword
 
эх, жаль в текущей пыхе нельзя призывать людей в топик
Записан

PHP does the job since 1995
Пожалуйста, не надо делать двойные клики по ссылкам. Это создает избыточную нагрузку на сервер
Страниц: [1] 2
Печать
 

Перейти в:  

Этот топик скрыли: adw0rd, artoodetoo, mario