2006/12/15

SAMP (Solaris, Apache 2, MySQL 4, and PHP 5) Setup for Solaris 10

  • Apache 2.0.55
В дистрибутиве Solaris 10 (Entire или Developer) уже установлены Apache 1 и Apache 2, остается только сконфигурировать и запустить предпочтительный вариант. Сервисом Apache 2 в отличие от Apache 1 можно управлять из SMF, поэтому рассмотренный пример касается настройки именно Apache 2.

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

# cp /etc/apache2/httpd.conf-example /etc/apache2/httpd.conf

2. Поправить, что необходимо в файле конфигурации руками

# vi /etc/apache2/httpd.conf

3. Включить сервис Apache 2 с помощью SMF

# svcadm enable apache2
# svcs -p apache2
STATE STIME FMRI
online 11:19:59 svc:/network/http:apache2
11:19:59 2927 httpd
11:20:00 2928 httpd
11:20:00 2929 httpd
11:20:00 2930 httpd
11:20:00 2931 httpd
11:20:00 2932 httpd


  • MySQL 4.1.22

1. В дистрибутиве Solaris 10 (Entire или Developer) уже установлены все необходимые пакеты для развертывания MySQL-сервиса версии 4.0.24. Версия достаточно устарела, поэтому рекомендуется ее удалить.

pkgrm SUNWmysqlt SUNWmysqlr SUNWmysqlr

2. Для установки новой версии MySQL необходимо воспользоваться системой пакетов Blastwave для Solaris OS. О том, как начать пользоваться этой системой можно прочесть на соответствующем HowTo.

На данный момент самая последняя версия MySQL 4.1.22 сборка 2006.11.28. В процессе установки будут установлены пакеты, для устранения зависимостей (berkleydb, perl, openssl и т.д.). Также будут заданы вопросы касающиеся конфликтных ситуаций и использования прав суперпользователя (root) - инсталлятор натыкается на уже существующие папки и видит в этом возможный конфликт, а root необходим для создания новых пользователей и других системных операций. На самом деле ничего серьезного в эти сообщениях нет.

# /opt/csw/bin/pkg-get -i mysql4 mysql4client mysql4devel mysql4rt
# /opt/csw/bin/pkg-get -i mysql4test

3. Скопировать необходимый файл конфигурации

# cd /opt/csw/mysql4/share/mysql/
# cp my-small.cnf /opt/csw/mysql4/my.cnf

4. Поправить, что необходимо в файле конфигурации руками

# vi /opt/csw/mysql4/my.cnf

5. Инициализировать MySQL БД и поправить необходимые права доступа к директории /opt/csw/mysql4/var

# cd /opt/csw/mysql4/
# ./bin/mysql_install_db
Installing all prepared tables
Fill help tables
...
# chown -R mysql:mysql ./var

6. Включить MySQL-сервис с помощью SMF

# svcs -a | grep mysql
disabled 12:22:58 svc:/network/cswmysql4:default
# svcadm enable svc:/network/cswmysql4:default
# svcs -a | grep mysql
online 12:26:22 svc:/network/cswmysql4:default

7. Задать пароли для суперпользователя

# /opt/csw/mysql4/bin/mysqladmin -u root password 'your_password'
# /opt/csw/mysql4/bin/mysqladmin -u root -h your_hostname password 'your_password'


  • PHP 5.2.0

1. Установить системную переменную PATH

# export PATH=/opt/csw/bin:/usr/sfw/bin:/usr/sbin:/usr/bin:/usr/openwin/bin:/usr/dt/bin:/usr/ccs/bin

2. Для сборки PHP понадобятся утилиты из проекта GNU.

# pkg-get -i autoconf
...
# which autoconf && autoconf --version | head -2
/opt/csw/bin/autoconf
autoconf (GNU Autoconf) 2.59
Written by David J. MacKenzie and Akim Demaille.

# pkg-get -i automake
...
# which automake && automake --version | head -2
/opt/csw/bin/automake
automake (GNU automake) 1.9.6
Written by Tom Tromey .

# pkg-get -i gsed
...
# which gsed && gsed --version | head -2
/opt/csw/bin/gsed
GNU sed version 4.1.4
Copyright (C) 2003 Free Software Foundation, Inc.

# which gcc && gcc --version | head -2
/usr/sfw/bin/gcc
gcc (GCC) 3.4.3 (csl-sol210-3_4-branch+sol_rpath)
Copyright (C) 2004 Free Software Foundation, Inc.
# which gmake && gmake --version | head -2
/usr/sfw/bin/gmake
GNU Make 3.80
Copyright (C) 2002 Free Software Foundation, Inc.

# which flex && flex --version | head -2
/usr/sfw/bin/flex
flex version 2.5.4

# which bison && bison --version | head -2
/usr/sfw/bin/bison
bison (GNU Bison) 1.875
Written by Robert Corbett and Richard Stallman.

# which gm4 && gm4 --version | head -2
/opt/csw/bin/gm4
GNU M4 1.4.5
Written by Rene' Seindal.

# which perl && perl -v | head -2
/opt/csw/bin/perl

This is perl, v5.8.8 built for i86pc-solaris-thread-multi

# which gunzip && gunzip -V | head -2
/usr/bin/gunzip
gunzip 1.3.3-patch.1
(2002-03-08)

# which gtar && gtar --version | head -2
/usr/sfw/bin/gtar
tar (GNU tar) 1.14
Copyright (C) 2004 Free Software Foundation, Inc.

3. Собрать и установиьт библиотеку libxml

# mkdir /var/spool/src
# chmod 777 /var/spool/src
# cd 777 /var/spool/src
# wget ftp://fr.rpmfind.net/pub/libxml/libxml2-2.6.27.tar.gz
...
# gunzip -cd libxml2-2.6.27.tar.gz | gtar xvpf -
# cd libxml2-2.6.27
# ./configure
...
# gmake
...
# gmake install
...

4. Собрать из полученных исходников PHP 5.2.0

# cd /var/spool/src
# wget http://lt.php.net/get/php-5.2.0.tar.gz/from/this/mirror
# gunzip -cd php-5.2.0.tar.gz | gtar xvpf -
# cd php-5.2.0
# ./configure --with-apxs2=/usr/apache2/bin/apxs --enable-dbase \
--with-libxml-dir=/usr/local --with-config-file-path=/etc/apache2 \
--with-mysql=shared,/opt/csw/mysql4 \
--with-mysqli=shared,/opt/csw/mysql4/bin/mysql_config \
--with-xpm-dir=/usr --with-gd --with-tiff-dir=/usr --with-bz2=/usr/lib \
--with-jpeg-dir=/usr --with-png-dir=/usr --with-zlib --enable-mbstring \
--enable-calendar--enable-bcmath --enable-ftp --enable-exif
# gmake
...
# gmake install
...

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

cp php.ini-dist /etc/apache2/php.ini

6. Внести необходимые изменения в конфигурационный файл PHP. Установить переменную extension_dir = /usr/local/lib/php/extensions/no-debug-non-zts-20060613 и добавить mysql-расширение (extension=mysql.so)

# ls -l /usr/local/lib/php/extensions/no-debug-non-zts-20060613
total 1072
-rwxr-xr-x 1 root root 422864 Dec 15 14:13 mysqli.so
-rwxr-xr-x 1 root root 102748 Dec 15 14:13 mysql.so
# vi /etc/apache2/php.ini
...
extension_dir = /usr/local/lib/php/extensions/no-debug-non-zts-20060613
extension=mysql.so
...

7. Внести необходимые изменения в конфигурационный файл Apache. Строка "LoadModule php5_module libexec/libphp5.so" уже должна присутствовать.

# vi /etc/apache2/httpd.conf
...
AddType application/x-httpd-php .php
AddType application/x-httpd-php-source .phps
...

8. Перезапустить Apache

svcadm restart svc:/network/http:apache2

9. Проверить работоспособность открыв http://localhost/pi.php

# cd /var/apache2/htdocs
# cat > pi.php

^C

Ссылки:

  1. AMPS (Apache MySQL PHP SSL) for Solaris 10
  2. Deployment Guide for an Open Source Stack on the Solaris 10 OS
  3. SAMP (Solaris, Apache 2, MySQL 5, and PHP 5) Setup for Solaris 10 OS and Solaris Express

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

Для Linux/FreeBSD/Solaris:
kill -9 `ps -U username -o pid | grep [0-9] | xargs`

2006/12/11

Установка Sun Ray Server Software 3.1 на Solaris 10 (x86)

1. Распаковать полученный архив с Sun Ray Server Software.

unzip srss_3.1.zip
cd srss_3.1.zip

2. Запустить скрипт установки. Ответить на все возникаемые в ходе вопросы на основе требований к будущей системе. Java находится в каталоге /usr/j2se (по-умолчанию).

./utinstall

3. Перегрузить систему после успешной установки всех пакетов

sync;sync;init 6

4. Сконфигурировать Sun Ray сервис. В приведенном ниже примере используются настройки, идущие по-умолчанию. DHCP сервис не запущен потому, как в сети уже есть действующий DHCP-сервис. Чтобы Saun Ray-терминалы знали, где искать Sun Ray Server, на уже работающем DHCP-сервере необходимо добавить еще одну опцию для выдачи клиентам - X Window System Display Manager Option (49).

cd /opt/SUNWut/sbin
./utadm -A 192.168.1.0
### Configuring /etc/nsswitch.conf
### Configuring Service information for Sun Ray
### Disabling Routing
Selected values for subnetwork "192.168.1.0"
net mask: 255.255.255.0
no IP addresses offered
auth server list: 192.168.1.1
firmware server: 192.168.1.1
Accept as is? ([Y]/N):
### Configuring firmware version for Sun Ray
### Successfully enabled tftp for firmware downloads
All the units served by "sun" on the 192.168.1.0
network interface, running firmware other than version
"3.1_32,REV=2005.08.24.08.55" will be upgraded at their next power-on.

### Configuring Sun Ray Logging Functions
### Turning on Sun Ray LAN connection

NOTE: utrestart must be run before LAN connections will be allowed

DHCP is not currently running, should I start it? ([Y]/N): n

#### DHCP daemon not started. You will need to manually start one
using "/etc/init.d/dhcp start".

5. Перезапустить сервис с новыми настройками

# ./utrestart -c
A cold restart has been initiated... messages will be logged to /var/opt/SUNWut/log/messages.

Ссылки:
  1. Sun Ray Server Software
  2. docs.sun.com: Sun Ray Software 4 Collection
  3. Sun Ray Software
  4. RFC 2132 - DHCP Options and BOOTP Vendor Extensions

Solaris 10: "доведение до ума"

Если в процессе установки Вы выбрали Name Service: None, значит после установки необходимо будет вручную создать файл /etc/resolv.conf со списком используемых DNS-серверов, иначе разрешение dns-имен в ip-адреса будет недоступно. А в файле nsswitch.conf поправить строку:
hosts: files dns

Подключение монитора, не поддерживающего список разрешений и частот, задаваемых X-сервером, может стать причиной НЕзапуска X-сервера в Solaris 10. Я сам долго удивлялся, пока не попробовал другой монитор. Вот что можно найти в /var/log/X.org.log в случае возникновения подобной ошибки:

(EE) Screen(s) found, but none have a usable configuration.

Fatal server error:
no screens found

Please refer to your Operating System Vendor support pages
at http://sunsolve.sun.com/ for support on this crash.
Please also check the log file at "/var/log/Xorg.0.log" for additional information.

XIO: fatal IO error 146 (Connection refused) on X server ":0.0"
after 0 requests (0 known processed) with 0 events remaining.


2006/12/07

lpsched - Stopping because process dumped core

Только я разобрался с вводом русского/литовского языков (стал использовать en_US.UTF-8) в Solaris 10, как появилась проблема с печатью.

Картина следующая: имеется сетевой принтер Samsung 2550, отлично работающий с Windows-машинами. С помощью Printer Manager добавляю сетевой принтер (в списке даже есть указанная модель), указываю его "принтером по умолчанию", даю доступ к нему для всех (all). Всё хорошо до тех пор, пока не отправишь что-нибудь на печать.

После того как что-то появляется в очереди на печать, сервис печати (lpsched) начинает останавливаться и перезапускаться. И так происходит, пока не очистишь очередь.

То, что сервис перезапускается видно по значку звёздочки (*)

obs1:/var/spool/lp/logs# svcs -a|grep print
online 12:31:10 svc:/application/print/rfc1179:default
online 9:16:08 svc:/application/print/cleanup:default
online* 12:35:06 svc:/application/print/server:default
obs1:/var/adm# lpstat -a
UX:lpstat: ERROR: Can't send message to the LP print service.
TO FIX: The LP print service apparently has been
stopped. Get help from your system
administrator.
obs1:/# svcs -p svc:/application/print/server:default
STATE STIME FMRI
online* 15:47:14 svc:/application/print/server:default
15:47:14 13665 lpsched
obs1:/# svcs -p svc:/application/print/server:default
STATE STIME FMRI
online* 15:47:20 svc:/application/print/server:default

А вот что в логе:

# tail -20 /var/svc/log/application-print-server:default.log
Print services started.
[ Nov 18 11:47:19 Method "start" exited with status 0 ]
[ Nov 18 11:47:19 Stopping because process dumped core. ]
[ Nov 18 11:47:19 Executing stop method ("/lib/svc/method/print-svc stop") ]
Print services stopped.
[ Nov 18 11:47:19 Method "stop" exited with status 0 ]
[ Nov 18 11:47:22 Executing start method ("/lib/svc/method/print-svc start") ]
Print services started.
[ Nov 18 11:47:22 Method "start" exited with status 0 ]
[ Nov 18 11:47:23 Stopping because process dumped core. ]
[ Nov 18 11:47:23 Executing stop method ("/lib/svc/method/print-svc stop") ]
Print services stopped.
[ Nov 18 11:47:23 Method "stop" exited with status 0 ]
[ Nov 18 11:47:25 Executing start method ("/lib/svc/method/print-svc start") ]
Print services started.
[ Nov 18 11:47:26 Method "start" exited with status 0 ]
[ Nov 18 11:47:26 Stopping because process dumped core. ]
[ Nov 18 11:47:26 Executing stop method ("/lib/svc/method/print-svc stop") ]
Print services stopped.
[ Nov 18 11:47:26 Method "stop" exited with status 0 ]

Как видно из лога, сервис останавливается по причине Stopping because process dumped core, но, порывшись день, я ничего вразумительного не наловил, кроме двух ссылок, где встречается та же самая ошибка:

http://forum.sun.com/jive/thread.jspa?messageID=385983
http://forum.sun.com/jive/thread.jspa?threadID=75385

Проблема решается установкой параметра protocol=bsd, вместо tcp.
С protocol=tcp всё падает без слов.