avatar OpenSUSE Настройка WEB сервера Nginx+PHP5+MySQL в OpenSUSE 11.3

Nginx является одним из наименее требовательных к ресурсам системы, WEB сервером, данное руководство посвящено его развертыванию в ОС OpenSuSE 11.3

Перед тем как все настраивать отключаем фаерволл
yast2
Security and Users -> Firewall
В разделе Service Start -отключаем автоматический запуск фаерволла
Привидим настройки к виду как указано на скрине:
Отключение фаерволла

В дальнейшем, после окончания всех настроек-его необходимо включить и создать исключения для работающих сервисов.

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


yast2 -i mysql mysql-client mysql-community-server nano mc


Добавим MySQL в автозагрузку системы:

chkconfig --add mysql 
/etc/init.d/mysql start


Проверяем работоспособность сервера баз данных:

netstat -tap | grep mysql


Должно выдать:

server1:~ # netstat -tap | grep mysql
tcp 0 0 *:mysql *:* LISTEN 2724/mysqld
web:~ #


Если по какой-то причине, не выдало этого сообщения, то в файле my.cnf необходимо найти и закомментировать skip-networking
nano /etc/mysql/my.cnf


Должно выглядеть так:
#skip-networking

В дальнейшем если планируется размещение сайтов на одном сервере, то в целях безопасности комментарии со строки skip-networking лучше убрать, чтобы сервер MySQL не был доступен по сети, тем более что скорость работы по внутреннему сокету немного выше чем TCP!

Перезапускаем сервер баз данных:

/etc/init.d/mysql restart


Запускаем инсталляцию:
mysql_secure_installation


Следуем инструкциям системы:

NOTE: RUNNING ALL PARTS OF THIS SCRIPT IS RECOMMENDED FOR ALL MySQL
SERVERS IN PRODUCTION USE! PLEASE READ EACH STEP CAREFULLY!

In order to log into MySQL to secure it, we'll need the current
password for the root user. If you've just installed MySQL, and
you haven't set the root password yet, the password will be blank,
so you should just press enter here.

Enter current password for root (enter for none): < — ENTER
OK, successfully used password, moving on…

Setting the root password ensures that nobody can log into the MySQL
root user without the proper authorisation.

Set root password? [Y/n] < — Y
New password: < — Пароль пользователя root к сереверу
Re-enter new password: < — подтверждение пароля
Password updated successfully!
Reloading privilege tables…
… Success!

By default, a MySQL installation has an anonymous user, allowing anyone
to log into MySQL without having to have a user account created for
them. This is intended only for testing, and to make the installation
go a bit smoother. You should remove them before moving into a
production environment.

Remove anonymous users? [Y/n] < — Y
… Success!

Normally, root should only be allowed to connect from 'localhost'. This
ensures that someone cannot guess at the root password from the network.

Disallow root login remotely? [Y/n] < — Y
… Success!

By default, MySQL comes with a database named 'test' that anyone can
access. This is also intended only for testing, and should be removed
before moving into a production environment.

Remove test database and access to it? [Y/n] < — Y
— Dropping test database…
… Success!
— Removing privileges on test database…
… Success!

Reloading the privilege tables will ensure that all changes made so far
will take effect immediately.

Reload privilege tables now? [Y/n] < — Y
… Success!

Cleaning up…

All done! If you've completed all of the above steps, your MySQL
installation should now be secure.

Thanks for using MySQL!
web:~ #

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


yast2

переходим в раздел Software > Software Repositories:



переходим в [Add]



выбираем Specify URL… нажимаем пробел, переходим в [Next]:



заполняем поле
openSUSE:Factory:Contrib
в меню Repository Name
В строку URL вставляем
http://download.opensuse.org/repositories/openSUSE:/Factory:/Contrib/openSUSE_11.3/

Переходим в [NEXT]



Пункт меню [OK]



Для продолжения установки необходимо импортировать GPG ключ репозитория выбрв нункт пеню [Import]



На этом все, выходим из YaST:



Далее мы можем установить Nginx

yast2 -i nginx-0.8


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

chkconfig --add nginx
/etc/init.d/nginx start


Теперь можно набрав в адресной строке браузера IP адрес сервера(а если у вас к IP привязан домен, то можно зайти через доменное имя), увидим приветственную страницу Nginx

Теперь мы можем установить PHP работать, работа PHP у нас будет осуществляться через fast-cgi. Необходимо установить вместе с пакетом php5-fastcgi демон spawn-fcgi:

yast2 -i php5-fastcgi spawn-fcgi


Для нормальной поддержки MySQL со стороны PHP необходимо до установить небольшой список дополнительных пакетов:

yast2 -i php5-mysql php5-bcmath php5-bz2 php5-calendar php5-ctype php5-curl php5-dom php5-ftp php5-gd php5-gettext php5-gmp php5-iconv php5-imap php5-ldap php5-mbstring php5-mcrypt php5-odbc php5-openssl php5-pcntl php5-pgsql php5-posix php5-shmop php5-snmp php5-soap php5-sockets php5-sqlite php5-sysvsem php5-tokenizer php5-wddx php5-xmlrpc php5-xsl php5-zlib php5-exif php5-pear php5-sysvmsg php5-sysvshm


теперь необходимо отредактировать конфигурационный файл /etc/php5/fastcgi/php.ini
nano /etc/php5/fastcgi/php.ini
найти строку cgi.fix_pathinfo=1 и снять в начале комментарий.

Пакет lighttpd-fastcgi является исполняемым, находится в /usr/bin/spawn-fcgi, неоюходимо его запустить:
/usr/bin/spawn-fcgi -a 127.0.0.1 -p 9000 -u nginx -g nginx -f /usr/bin/php-cgi -P /var/run/fastcgi-php.pid


Для желающих узнать больше о пакете spawn-fcgi, запускаем следующую команду:
spawn-fcgi –help


Чтобы в ручную не приходилось запускать spawn-fcgi после каждой перезагрузки системы, добавим в файл etc/init.d/boot.local следующее:
nano /etc/init.d/boot.local


/usr/bin/spawn-fcgi -a 127.0.0.1 -p 9000 -u nginx -g nginx -f /usr/bin/php-cgi -P /var/run/fastcgi-php.pid

Можно вписать это в самый конец конфигурационного файла.

Настройка nginx:

nano /etc/nginx/nginx.conf


значение worker_processes, обычно выставляют, равное количеству ядер процессора.

Навастриваем виртуальный хост, особенно боращщаем внимание на строки содержащие строку fastcgi

[...]
    server {
        listen       80;
        server_name  _;

        #charset koi8-r;

        #access_log  /var/log/nginx/host.access.log  main;

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

        #error_page  404              /404.html;

        # redirect server error pages to the static page /50x.html
        #
        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   /srv/www/htdocs;
        }

        # proxy the PHP scripts to Apache listening on 127.0.0.1:80
        #
        #location ~ \.php$ {
        #    proxy_pass   http://127.0.0.1;
        #}

        # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
        #
        location ~ \.php$ {
            root           /srv/www/htdocs;
            fastcgi_pass   127.0.0.1:9000;
            fastcgi_index  index.php;
            fastcgi_param  SCRIPT_FILENAME  /srv/www/htdocs$fastcgi_script_name;
            include        fastcgi_params;
        }

        # deny access to .htaccess files, if Apache's document root
        # concurs with nginx's one
        #
        location ~ /\.ht {
            deny  all;
        }
    }
[...]


Теперь нам необходимо создать тестовый, PHP, скрипт.
По умолчанию, корневая директория нашего web сервера находится
/srv/www/htdocs/

nano /srv/www/htdocs/test.php

И вставим в него
<?php
phpinfo();
?>

Теперь перезапускаем наш сервер:
/etc/init.d/nginx restart

если все сделали правильно, то пробуем зайти на сервер, набрав в адресной строке браузера на основном ПК ip-адрес нашего сервера/test.php

Увидим информацию о PHP в нашей системе.

Вот и все.

2 комментария

avatar
А если необходимо настроить nginx более тонко?
avatar
Откровенно говоря, тут можно настраивать до бесконечности-я старался выложить именно инструкцию, по развертыванию всего этого, а вот как допилить под конкретно под ваши задачи, вопрос довольно интересный, тем более я их не знаю ;)
У серверов бывают разные задачи…
Есть что добавить? Регистрируйся и оставляй комментарии!