Мои заметки по IT

Информация о пользователе

Привет, Гость! Войдите или зарегистрируйтесь.


Вы здесь » Мои заметки по IT » ubuntu » apache 2 + nginx + php 5 + MySQL + memcached + eaccelerator + sphinx


apache 2 + nginx + php 5 + MySQL + memcached + eaccelerator + sphinx

Сообщений 1 страница 12 из 12

1

начальные действия необходимые нам для дальнейшей работы:

Код:
sudo apt-get  update
sudo apt-get upgrade

Webmin — это программный комплекс, позволяющий администрировать операционную систему через веб-интерфейс, в большинстве случаев, позволяя обойтись без использования командной строки и запоминания системных команд и их параметров. Используя любой браузер, администратор сервера может создавать новые учётные записи пользователей, почтовые ящики, изменять настройки служб и сервисов, например : веб-сервера Apache, DNS. Однако, в некоторых случаях необходимо знание операционной системы и редактирование конфигурационных файлов вручную. Кроме того, не все возможности операционной системы и не все программы можно конфигурировать через интерфейс Webmin, например nginx пока не входит в базовый набор. Далее я думаю вы прочитаете здесь.

Скажу только одно – для администрирования очень удобная вещь … поэтому приступим к установке … Для начала необходимо поставить нужные модули для работы вебмина:

Код:
sudo aptitude install perl libnet-ssleay-perl openssl libauthen-pam-perl libpam-runtime libio-pty-perl libmd5-perl

Так же системе еще понадобится следующие пакеты:

Код:
sudo apt-get install libapt-pkg-perl apt-show-versions libwrap0 libwrap0-dev

Если libmd5-perl не захочет ставиться – то делаем немного по другому:

Код:
sudo wget http://ftp.us.debian.org/debian/pool/main/libm/libmd5-perl/libmd5-perl_2.03-1_all.deb
sudo dpkg -i libmd5-perl_2.03-1_all.deb
sudo apt-get install -f

Пакет libmd5-perl можно достать по этому URL:

Код:
 http://archive.ubuntu.com/ubuntu/pool/universe/libm/libmd5-perl/libmd5-perl_2.03-1_all.deb

Теперь приступим непосредственно к установке …

Скачиваем deb пакет последней версии WebMin:

Код:
cd && wget http://downloads.sourceforge.net/project/webadmin/webmin/1.620/webmin_1.620_all.deb

Устанавливаем пакет в систему:

Код:
sudo dpkg -i webmin_1.620_all.deb

После успешной установки вы можете проследовать по адресу https://localhost:10000 и наслаждаться!

Рекомендуется так же посетить настройки и ограничить доступ к webmin-у определенным IP адресам.

http://maxidrom.net/archives/433

0

2

Доставим g++ он пригодится в дальнейшем:

Код:
aptitude install g++

0

3

С подготовительной частью закончили, ставим веб сервер.

Установка apache2 + phph5 + mysql + phpmyadmin одной строкой:

Код:
aptitude install mysql-server mysql-client libmysqlclient15-dev apache2 apache2-doc apache2-mpm-prefork apache2-utils libexpat1 ssl-cert libapache2-mod-php5 libapache2-mod-ruby php5 php5-common php5-curl php5-dev php5-gd php5-idn php-pear php5-imagick php5-imap php5-mcrypt php5-memcache php5-mhash php5-ming php5-mysql php5-pspell php5-recode php5-snmp php5-sqlite php5-tidy php5-xmlrpc php5-xsl phpmyadmin

создал пользователя

Код:
sudo useradd example -b /home/ -m -U -s /bin/false

Т.к. у нас Nginx работает от пользователя www-data, то он не сможет получить доступ к содержимому домашней директории пользователя example, но при создании была создана одноименная группа, в нее нам необходимо добавить пользователя www-data.

Код:
usermod -a -G example www-data

Таким образом, в будущем при создании нового виртуального хоста нам необходимо добавить пользователя www-data в группу с именем нового пользователя.

перекинул apache на 81 порт

Код:
sudo nano  /etc/apache2/ports.conf
Код:
     NameVirtualHost *:81
     Listen 127.0.0.1:81  #делаем его доступным только с localhost тк не предусмотрено обращение к нему из вне напрямую
     #Listen 127.0.0.1:443 # тоже самое только для порта 443 если включена поддержка ssl

Во многих мануалах предлагается после переноса порта, зарубить к нему доступ через iptables-это НЕ правильно и является, по сути, костыльным решением. Для чего его блокировать, если можно совсем не выставлять, мы сделаем так, чтобы Apache начал принимать и обрабатывать запросы только от localhost и одновременно стал недоступным снаружи, вот по этому мы и добавляем в Listen 127.0.0.1:81

далее я настроил виртуальный хост на apache
отключил сайт по умолчанию

Код:
a2dissite default

Создаем  вирт хост на апаче

Код:
sudo nano /etc/apache2/sites-available/example.org
Код:
<VirtualHost *:81>
     ServerAdmin admin@example.org
     ServerName example.org
     ServerAlias www.example.org
     DocumentRoot /srv/www/example.org/public_html/
     ErrorLog /srv/www/example.org/logs/error.log
     CustomLog /srv/www/example.org/logs/access.log combined
<Directory />
#Order Deny,Allow
#Deny from all
Options -ExecCGI -Indexes -Includes +FollowSymLinks
AllowOverride All
  <Limit GET POST>
  Order allow,deny
  Allow from all
  </Limit>
  <LimitExcept GET POST>
  Order deny,allow
  Deny from all
  </LimitExcept>
</Directory>

AssignUserId www-data example

php_admin_value open_basedir "/home/example/:."
php_admin_value upload_tmp_dir "/home/example/tmp"
php_admin_value session.save_path "/home/example/tmp"
</VirtualHost>

создаем директории для сайта

Код:
mkdir -p /srv/www/example.org/public_html
mkdir /srv/www/example.org/logs
mkdir /srv/www/example.org/tmp

активируем сайт

Код:
a2ensite example.org

перезагружаем apache

Код:
sudo /etc/init.d/apache2 restart

не забываем что при изменении или добавлении вирт хоста необходимо выполнять

Код:
/etc/init.d/apache2 reload

теперь мы може в корень нашего сайта положить файл к примеру index.php с содержимым <?php echo"Halo world"; ?> и естественно должны увидеть нашу страничку - конечно если мы попытаемся зайти с другого хоста мы ничего не увидим тк выше запретили доступ извне  - простите на этом этапе апач выдаст баг тк увидит непонятный блок в конфиге - модуль для него мы достаим позднее - не печальтесь. 

Блок настроек смотрел тут  http://library.linode.com/web-servers/a … 0.04-lucid

0

4

вот мануал боле менее нормальный http://howitmake.ru/blog/ubuntu/42.html -

0

5

это тож что-то такое http://adw0rd.com/2009/3/27/nginx-and-a … YS7yKIqysM

0

6

Установка Nginx, поверх более старой версии

Устанавливаем необходимые для компиляции пакеты и версию nginx из репозиториев:

Код:
aptitude install libpcre3-dev libcurl4-openssl-dev gcc nginx

Останавливаем демон:

Код:
/etc/init.d/nginx stop

Качаем исходники:

Код:
wget sysoev.ru/nginx/nginx-1.0.4.tar.gz

Распаковываем:

Код:
tar -zxvf nginx-1.0.4.tar.gz

Переходим в директорию с распакованными исходниками:

Код:
cd nginx-1.0.4

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

Код:
./configure --sbin-path=/usr/sbin/nginx --conf-path=/etc/nginx/nginx.conf --pid-path=/var/run/nginx.pid \
--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
make install

Запускаем полученное:

Код:
/etc/init.d/nginx start

по умолчанию встанет на 80 порт - который мы ранее освободили от apach а перекинув его на 81

0

7

ереходим по адресу httр://ip_server и видим окно приветствия nginx набираем имя произвольной директории например httр://ip_server/nopage и видим страницу с ошибкой 404, в низу которой указана версия WEB сервера, которая ее сгенерировала, если там указана та версия, исходники которой вы выкачивали, значит все в норме.

Переходим к настройке конфигурационного файла

Код:
ыгвщ nano /etc/nginx/nginx.conf
Код:
user www-data;
worker_processes  2; # Обычно устанавливается по количеству ядер в процессоре

error_log  /var/log/nginx/error.log;
pid        /var/run/nginx.pid;

events {
    worker_connections  1024;
    # multi_accept on;
}
http {
    include       /etc/nginx/mime.types;
    default_type  application/octet-stream;
    server_names_hash_bucket_size 64;
    access_log  /var/log/nginx/nginx.access.log;

    proxy_buffers 8 16k;
    proxy_buffer_size 32k;

    sendfile        on;
    #tcp_nopush     on;

    #keepalive_timeout  0;
    keepalive_timeout  65;
    tcp_nodelay        on;


    gzip                on; #Использование сжатия статики (Пример: CSS)
    gzip_proxied        any;
    gzip_min_length     1100;
    gzip_http_version   1.0;
    gzip_buffers        4 8k;
    gzip_comp_level     4; #Степень сжатия (больше ставить смысла нет, нагрузка на ЦПУ растет, а файлы меньше не практически становятся)
    gzip_types          text/plain text/css application/x-javascript text/xml application/xml application/xml+rss text/javascript;


    include /etc/nginx/conf.d/*.conf;
    include /etc/nginx/sites-enabled/*;
}

0

8

Установка Apache-mpm-itk
Немного теории:
Мы будем устанавливать Web сервер Apache, нам необходимо установить сборку Apache2-mpm-itk, ее отличие от обычной, заключается в возможности Apache, запускать виртуальные хосты сервера с правами разных пользователей, это позволяет, при грамотной расстановке прав доступа на директории, избежать перехода из корневой директории одного сайта в другую. Если кратко, то на обычной сборке apache все хосты работают от пользователя www-data, а эта, позволяет запускать от разных пользователей, не имеющих доступа в корневые директории соседей по серверу.

Код:
sudo apt-get install apache2-mpm-itk libapache2-mod-rpaf
Код:
sudo nano /etc/apache2/mods-enabled/rpaf.conf

и привести его к виду (10.10.10.107 – это ip сервера):

Код:
<IfModule mod_rpaf.c>
RPAFenable On
RPAFsethostname On
RPAFproxy_ips 127.0.0.1 10.10.10.107
</IfModule>

Перезагружаем apache:

Сделаем настройки, чтобы апач, меньше выдавал о себе информации

Код:
nano /etc/apache2/conf.d/security

Находим там строку:
ServerTokens OS
Меняем ее на:
ServerTokens Prod

Далее строку:
ServerSignature On
Меняем на:
ServerSignature Off

Сохраняем изменения - перезапускаем  Apache

Код:
/etc/init.d/apache2 start

0

9

Создаем виртуальный хост Nginx

Код:
sudo nano /etc/nginx/sites-available/example.org

И вставляем в него то, что указано ниже, в вашем случае пути необходимо указывать свои:

Код:
server {
listen 80;
server_name example.org www.example.org;
access_log /srv/www/example.org/logs/nginx_access.log;
error_log /srv/www/example.org/logs/nginx_error.log;
location ~* \.(jpg|jpeg|gif|png|css|zip|tgz|gz|rar|bz2|doc|xls|exe|pdf|ppt|tar|wav|bmp|rtf|swf|ico|flv|txt|docx|xlsx)$ {
root /home/example/www/example.org/piblic_html;
index index.html index.php;
access_log off;
expires 30d;
}
location ~ /\.ht {
deny all;
}

location / {
proxy_pass http://127.0.0.1:81/;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-for $remote_addr;
proxy_set_header Host $host;
proxy_connect_timeout 60;
proxy_send_timeout 90;
proxy_read_timeout 90;
proxy_redirect off;
proxy_set_header Connection close;
proxy_pass_header Content-Type;
proxy_pass_header Content-Disposition;
proxy_pass_header Content-Length;
}
}

Сохраняем изменения и выходим.
Теперь нам необходимо создать символическую ссылку, для того чтобы наш виртуальный хост заработал:

Код:
sudo ln -s /etc/nginx/sites-available/example.org /etc/nginx/sites-enabled/

удаляем /etc/nginx/sites-available/default - дабы не отображалась страница по умолчанию

И перезапустим Nginx:

Код:
sudo /etc/init.d/nginx restart

0

10

есть еще заметки - какие подправить директивы в конфигах - но в разных манах - разные значения так что - нужно разбираться и делать так как нужно Вам.

доп модули апача
к примеру
a2enmod ssl
a2enmod rewrite   
a2enmod suexec
a2enmod include

P.S.: для работы большинства современных сайтов требуется модуль mod_rewrite. По умолчанию он не подключен. Подключить его можно командой:

Код:
a2enmod rewrite

кратко
http://www.softtime.ru/forum/read.php?i … theme=8359

по ссылке сфинкс мемокешед - я пока не ставлю.

http://rubuntu.ru/blog/server/435/nastr … buntu.html

0

11

отдельно о создании пользователя  цитируя выше указанную статью

Создаем пользователя нашего тестового сайта example.org

Код:
sudo useradd example -b /home/ -m -U -s /bin/false

В домашней директории создадим каталоги для файлов сервера, логов и временных файлов.

Код:
sudo mkdir -p -m 754 /home/example/www
sudo mkdir -p -m 777 /home/example/tmp
sudo mkdir -p -m 754 /home/example/logs

Предоставим пользователю example права на эти директории:

Код:
sudo chown -R example: /home/example/www/
sudo chown -R example: /home/example/tmp/
sudo chown -R example: /home/example/logs/

Т.к. у нас Nginx работает от пользователя www-data, то он не сможет получить доступ к содержимому домашней директории пользователя example, но при создании была создана одноименная группа, в нее нам необходимо добавить пользователя www-data.
usermod -a -G example www-data

Таким образом, в будущем при создании нового виртуального хоста нам необходимо добавить пользователя www-data в группу с именем нового пользователя.

Основным симптомом что вы этого не сделали-отсутствие изображений на странице, которую вы запрашиваете с вашего сервера т.к. Nginx читает только графические файлы, то из-за отсутствия прав доступа к ним, он сделать этого не сможет, и страница генерируется без изображений-решение, добавить пользователя www-data (от имени которого работает Nginx) в одноименною группу пользоваться, от имени которого работает виртуальный хост Apache!

Лирическое отступление.
Если не добавить пользователя www-data в группу example, то после того, как любая CMS будет залита на сервер, сайт будет отображаться без графики (т.е. графические файлы выдаваться не будут, потому что не достаточно прав доступа). Для устранения этой проблемы необходимо добавить пользователя www-data в группу пользователя, от имени которого работает виртуальный хост и перезапустить nginx. Попробуйте на досуге, понимание этого приходит после первого коряво выглядящего дизайна ;) в дальнейшем вопросов не возникает.

На самом деле я делал немного не так - я создал пользователя example как указано выше
после просто исполдьзуя su example (предварительно задав ему пароль  sudo passwd example)  создал все недостающие подпапки в папке example по сле добавил пользователя www-data в группу example - затем

Код:
sudo chmod -R 750 /home/example/www/

Данная команда дает полный доступ (rwx) для владельца директории sites (7), доступ на чтение и запуск (r-x) одногруппникам владельца (5) и запрещает доступ всем остальным (0 в конце).

Ключ -R говорит о том, что выполнить операцию смены прав доступа нужно рекурсивно, т. е. для всех файлов и подкаталогов внутри директории sites и для нее самой.

я так сделал дабы не делать папок из под root - не мог разобраться с правами никак
http://www.sdelaysite.com/besplatnoe-po … -ubuntu-2;

0

12

http://habrahabr.ru/post/95677/

0


Вы здесь » Мои заметки по IT » ubuntu » apache 2 + nginx + php 5 + MySQL + memcached + eaccelerator + sphinx