[web] Unix Хостинг для Pts (manual)
Добрый день уважаемые форумчане!
Бегал тут по форуму и видел достаточно большое количество постов, на тему как связать UNIX хостинг или Linux (без разницы) с базой данных MSSQL.
Пишу полный мануал - поднятия полноценного хостинг сервера под ОС FreeBSD, зыыы надейсь комунибудь пригодиться.
Что получим в окончательном варианте:
1. Полностью рабочий WEB сервер Apache с поддержкой многодоменности, и способный работать при больших нагрузках. (У меня держит до 1500 обращений и это не придел. п.с главное чтобы канал не подвёл.)
2. И главное разберёмся с настройкой коннектов к СУБД MSSQL с использованием Freetds
3. Сервер СУБД MYSQL
Кому нужно будет спецом по запросу потом напишу гайд по FTP DNS и прочей дряни))
ПО используемое в гайде:
1. Apache 2.2
3. PHP 5
4. FreeTDS
Почему я выбрал FreeBSD:
1. Ничего лишнего в отличии от винды и Linux, всё затачивается под себя.
2. Практичность
3. Гибкость системы
4. Никакого графического интерфейса!!! (На сервере они нам не вперлись т.к это резко снизит производительность.)
5. Обширное количество новых версий портов.
6. Удобная ось для крупного сервера.
7. Обширное количество фаерволов работающих на уровне ядра (сам юзаю IPFW)
Ну что решились поднимать? Тогда готовтесь потратить кучу времени и не одну кружку кофе))
В принципе с базовыми знаниями управления UNIX - Linux систем всё собирается за 2-3 часа.
Если у вас нет таких знаний и всёже хотите попробовать, то курим дружненько хендбук) тут: http://www.freebsd.org/doc/ru_RU.KOI8-R/bo...book/index.html - там всё понятно и красиво описано.
Качаем дистриб с FreeBSD версии 6х или 7х без разницы(Я выбрал 6.4, т.к в 7 версии забили практически на самый рульный фаервол вмире ipfw).
Скачать FreeBSD можно тут: http://www.freebsd.org/ru/where.html
Как установить чертёнка (FreeBSD) читаем тут: Установка FreeBSD(Официальная документация) или тут Установка FreeBSD(Пошаговая установка со скринами)
Я буду всё собирать из портов, т.к если использовать пакеты, мы можем столкнуться с кучей ошибок. (Пусть долго, зато надёжно)
После установки нам нужно обновить систему портов (сборник исходных кодов.)
Логинимся под root'м или юзером с правами на su
Редактируем /etc/make.conf
в конец файла добавляем следующее (Чтобы собирать приложения без ИКСОВ):
Устанавливаем CVSUP:
После установки CVSUP идём:
В каталоге /usr/share/examples/cvsup находится несколько примеров supfile.
total 36
-r--r--r-- 1 root wheel 1185 Nov 26 10:20 README
-r--r--r-- 1 root wheel 5334 Nov 26 10:20 cvs-supfile
-r--r--r-- 1 root wheel 2643 Nov 26 10:20 doc-supfile
-r--r--r-- 1 root wheel 2297 Nov 26 10:20 gnats-supfile
-r--r--r-- 1 root wheel 3821 Nov 26 10:20 ports-supfile
-r--r--r-- 1 root wheel 367 Nov 26 10:20 refuse
-r--r--r-- 1 root wheel 1955 Nov 26 10:20 refuse.README
-r--r--r-- 1 root wheel 3896 Nov 26 10:20 stable-supfile
-r--r--r-- 1 root wheel 3053 Nov 26 10:20 standard-supfile
-r--r--r-- 1 root wheel 2368 Nov 26 10:20 www-supfile
Копируем stable-supfile и называем supfile
ee supfile
Ищем в файле:
Меняем на:
Ищем и коментируем #:
Ищем и раскоментируем:
src-sys
Закрываем сохраняемся.
Запускаем процесс обновления сорсов и идём смотреть телик, курить и пить кофе:
После обновления сорсов системы обновляем порты чтобы получить всё самое новое и горяченькое xDD:
На этом самые нудные процессы закончены.
Сборка ядра
Идём:
globe# ls -l
total 64
-rw-r--r-- 1 root wheel 13 Jun 20 2005 .cvsignore
-rw-r--r-- 1 root wheel 372 Oct 28 2005 DEFAULTS
-rw-r--r-- 1 root wheel 10853 Jul 28 2008 GENERIC
-rw-r--r-- 1 root wheel 1741 Jan 14 2005 GENERIC.hints
-rw-r--r-- 1 root wheel 120 Feb 27 2003 Makefile
-rw-r--r-- 1 root wheel 35416 Dec 5 20:44 NOTES
-rw-r--r-- 1 root wheel 1811 Sep 13 2008 PAE
-rw-r--r-- 1 root wheel 322 Sep 18 2005 SMP
-rw-r--r-- 1 root wheel 3431 Apr 24 2008 XBOX
Копируем в WEBSRV и редактируем
ee WEBSRV
Ищем:
cpu I586_CPU
cpu I686_CPU
ident GENERIC
Приводим к такому виду:
#cpu I486_CPU
#cpu I586_CPU
cpu I686_CPU
ident WEBSRV
Ищем:
options PREEMPTION # Enable kernel thread preemption
options INET # InterNETworking
options INET6 # IPv6 communications protocols
options FFS # Berkeley Fast Filesystem
options SOFTUPDATES # Enable FFS soft updates support
options UFS_ACL # Support for access control lists
options UFS_DIRHASH # Improve performance on big directories
options MD_ROOT # MD is a potential root device
options NFSCLIENT # Network Filesystem Client
options NFSSERVER # Network Filesystem Server
options NFSLOCKD # Network Lock Manager
options NFS_ROOT # NFS usable as /, requires NFSCLIENT
options MSDOSFS # MSDOS Filesystem
options CD9660 # ISO 9660 Filesystem
options PROCFS # Process filesystem (requires PSEUDOFS)
options PSEUDOFS # Pseudo-filesystem framework
options GEOM_GPT # GUID Partition Tables.
options COMPAT_43 # Compatible with BSD 4.3 [KEEP THIS!]
options COMPAT_FREEBSD4 # Compatible with FreeBSD4
options COMPAT_FREEBSD5 # Compatible with FreeBSD5
options SCSI_DELAY=5000 # Delay (in ms) before probing SCSI
options KTRACE # ktrace(1) support
options SYSVSHM # SYSV-style shared memory
options SYSVMSG # SYSV-style message queues
options SYSVSEM # SYSV-style semaphores
options _KPOSIX_PRIORITY_SCHEDULING # POSIX P1003_1B real-time extensions
options KBD_INSTALL_CDEV # install a CDEV entry in /dev
options ADAPTIVE_GIANT # Giant mutex is adaptive.
Приводим к такому виду:
options PREEMPTION # Enable kernel thread preemption
options INET # InterNETworking
#options INET6 # IPv6 communications protocols
options FFS # Berkeley Fast Filesystem
options SOFTUPDATES # Enable FFS soft updates support
options UFS_ACL # Support for access control lists
options UFS_DIRHASH # Improve performance on big directories
#options MD_ROOT # MD is a potential root device
#options NFSCLIENT # Network Filesystem Client
#options NFSSERVER # Network Filesystem Server
#options NFSLOCKD # Network Lock Manager
#options NFS_ROOT # NFS usable as /, requires NFSCLIENT
options MSDOSFS # MSDOS Filesystem
options CD9660 # ISO 9660 Filesystem
options PROCFS # Process filesystem (requires PSEUDOFS)
options PSEUDOFS # Pseudo-filesystem framework
options GEOM_GPT # GUID Partition Tables.
options COMPAT_43 # Compatible with BSD 4.3 [KEEP THIS!]
options COMPAT_FREEBSD4 # Compatible with FreeBSD4
options COMPAT_FREEBSD5 # Compatible with FreeBSD5
options SCSI_DELAY=5000 # Delay (in ms) before probing SCSI
options KTRACE # ktrace(1) support
options SMP
options SUIDDIR
options SYSVSHM # SYSV-style shared memory
options SYSVMSG # SYSV-style message queues
options SYSVSEM # SYSV-style semaphores
options SHMMAXPGS=65536
options SEMMNI=40
options SEMMNS=240
options SEMUME=40
options SEMMNU=120
options MAXDSIZ=(1024UL*1024*1024)
options MAXSSIZ=(128UL*1024*1024)
options DFLDSIZ=(1024UL*1024*1024)
options _KPOSIX_PRIORITY_SCHEDULING # POSIX P1003_1B real-time extensions
options KBD_INSTALL_CDEV # install a CDEV entry in /dev
options ADAPTIVE_GIANT # Giant mutex is adaptive.
Закрываем и сохраняем
Начинаем компилировать ядро системы:(Водим каждую комманду по очереди.)
make buildkernel KERNCONF=WEBSRV
make installkernel KERNCONF=WEBSRV
shutdown -r now
Пока собирается наше ядро идём снова пить хофе и смотреть телик.
После перезагрузки редактируюем файл для установки квоты.
Изменяем файл /etc/fstab так, чтобы раздел /usr монтировался с suiddir. Дополнительно отключаем запись времени последнего доступа к файлам; это дает некоторый выигрыш в производительности:
Ищем:
Меняем на:
Перезагружаемся
Проверяем:
/dev/ad0s1f on /usr (ufs, local, noatime, suiddir, soft-updates)
Сборка и настройка ПО:
Установка mc:
Установка bash
make install clean
ln -s /usr/local/bin/bash /bin/bash
Ставим для пользователя root оболочку bash по умолчанию
Перезагружаемся
Установка сервера MySQL
export WITH_CHARSET=cp1251
export WITH_XCHARSET=all
export BUILD_OPTIMIZED=yes
make install clean
После установки сервера указываем в /etc/rc.conf
Записываем файл конфигурации MySQL /var/db/mysql/my.cnf
port = 3306
socket = /tmp/mysql.sock
default-character-set=cp1251
[mysqld]
bind-address = 127.0.0.1
port = 3306
socket = /tmp/mysql.sock
skip-character-set-client-handshake
default-character-set=cp1251
skip-locking
key_buffer = 32M
max_allowed_packet = 16M
table_cache = 256
sort_buffer_size = 1M
read_buffer_size = 1M
read_rnd_buffer_size = 4M
myisam_sort_buffer_size = 64M
thread_cache_size = 8
query_cache_size = 16M
thread_concurrency = 8
max_connections = 128
max_user_connections = 126
log-slow-queries
log
binlog_ignore_db = mysql
expire_logs_days = 5
max_binlog_size = 400M
# Если нет необходимости в работе по сети, включаем опцию skip-networking
#skip-networking
log-bin = mysql-bin
server-id = 1
[mysqldump]
quick
max_allowed_packet = 16M
[mysql]
no-auto-rehash
[isamchk]
key_buffer = 128M
sort_buffer_size = 128M
read_buffer = 2M
write_buffer = 2M
[myisamchk]
key_buffer = 128M
sort_buffer_size = 128M
read_buffer = 2M
write_buffer = 2M
[mysqlhotcopy]
interactive-timeout
Запускаем сервер
Проверяем работоспособность:
780 con- I 0:00.01 /bin/sh /usr/local/bin/mysqld_safe
--defaults-extra-file=/var/db/mysql/my.cnf --user=mysql --datadir=/var/db/mysql --pid-file=/v
862 con- S 107:52.92 /usr/local/libexec/mysqld --defaults-extra-file=/var/db/mysql/my.cnf
--basedir=/usr/local --datadir=/var/db/mysql --pid-file=/va
7861 p0 S+ 0:00.00 grep mysql
Задаем пароль для MySQL root:
mysql> GRANT ALL ON *.* TO 'root'@'localhost' IDENTIFIED BY 'ВАШ ПАРОЛЬ';
mysql> GRANT ALL ON *.* TO 'root'@'127.0.0.1' IDENTIFIED BY 'ВАШ ПАРОЛЬ';
Устанавливаем Apache22:
make install clean
В появившемся окне снимаем крестик с IPV6, всё остальное оставляем без изменений.
Добавляем в /etc/rc.conf
Запускаем индейца Apache
Установка php5
make install clean
В появившемся окне выставляем всё в соответствии с приведённым ниже:
+--------------------------------------------------------------------+
¦ Options for php5 5.2.9
¦ +----------------------------------------------------------------+
¦ ¦ [X] CLI Build CLI version
¦ ¦ [X] CGI Build CGI version
¦ ¦ [X] APACHE Build Apache module
¦ ¦ [ ] DEBUG Enable debug
¦ ¦ [X] SUHOSIN Enable Suhosin protection system
¦ ¦ [X] MULTIBYTE Enable zend multibyte support
¦ ¦ [ ] IPV6 Enable ipv6 support
¦ ¦ [ ] MAILHEAD Enable mail header patch
¦ ¦ [X] REDIRECT Enable force-cgi-redirect support (CGI only)
¦ ¦ [X] DISCARD Enable discard-path support (CGI only)
¦ ¦ [ ] FASTCGI Enable fastcgi support (CGI only)
¦ ¦ [X] PATHINFO Enable path-info-check support (CGI only)
¦ ¦
¦ ¦
¦ ¦
+-+----------------------------------------------------------------+-+
¦ [ OK ] Cancel
+--------------------------------------------------------------------+
Установка php5-extensions
make install clean
В появившемся окне добавляем модули: DBA, DBASE, FILEINFO, FTP, GD, GETTEXT, MBSTRING, MCRYPT, MHASH, MSSQL(Собственно этот модуль и отвечает за коннект к MSSQL вместе с ним соберётся пакет FREETDS, выбирать обязательно.), MYSQL, MYSQLI(Этот модуль нужен большенству новых скриптов и CMS систем в том числе и DLE), SNMP(Модуль для работы с протоколом SNMP полезный протокол мониторинга за серверами.) SOCKETS, всё остальное оставляем по умолчанию.
Пока ставятся модули к PHP-5 копируем исходный файл конфигурации и подгоняем под себя.
После того как закончилась установка модулей копируем и редактируем freetds.conf.dist
cp freetds.conf.dist freetds.conf
mcedit freetds.conf
В конец файла добавляем:
[MyServer2k]
host = xxx.xxx.xxx.xxx # IP сервера MSSQL 2x
port = 1433 # Порт на котором висит сервис MSSQL
client charset = CP1251 # Кодировка
tds version = 8.0
Сохраняем закрываем.
На этом настройка PHP завершена, теперь он готов к коннекту с MSSQL.
Настройка Apache 2
mcedit ee httpd.conf
Ищем:
DirectoryIndex index.html
</IfModule>
Меняем на:
DirectoryIndex index.php index.php3 index.phps index.html
</IfModule>
Ищем:
TypesConfig etc/apache22/mime.types
#AddType application/x-gzip .tgz
#AddEncoding x-compress .Z
#AddEncoding x-gzip .gz .tgz
AddType application/x-compress .Z
AddType application/x-gzip .gz .tgz
#AddHandler cgi-script .cgi
#AddHandler type-map var
#AddType text/html .shtml
#AddOutputFilter INCLUDES .shtml
</IfModule>
Заменяем на:
AddType application/x-httpd-php .php
AddType application/x-httpd-php-source .phps
TypesConfig etc/apache22/mime.types
#AddType application/x-gzip .tgz
#AddEncoding x-compress .Z
#AddEncoding x-gzip .gz .tgz
AddType application/x-compress .Z
AddType application/x-gzip .gz .tgz
#AddHandler cgi-script .cgi
#AddHandler type-map var
#AddType text/html .shtml
#AddOutputFilter INCLUDES .shtml
</IfModule>
Закрываем сохраняем:
Создаём файл виртуального хоста:
touch myhost.conf
ee myhost.conf
Добавляем в него:
<VirtualHost *:80>
AddDefaultCharset windows-1251
DocumentRoot "/usr/local/www/data"
ServerName myhost.ru
ServerAlias www.myhost.ru
ServerAdmin [email protected]
<Directory "/usr/local/www/data">
Options Indexes FollowSymLinks
AllowOverride All
Order allow,deny
Allow from all
</Directory>
</VirtualHost>
Закрываем, сохраняемся.
Создаём папку корневой каталог для сайта "data"
chown www:www /usr/local/www/data
Создаём файл для проверки с phpinfo
ee /usr/local/www/data/index.php
Вставляем в него следующий код для проверки:
phpinfo();
?>
Перезагружаем Apache
Всё открываем браузер и ломимся на_http://myhost.ru
Собственно на этом всё) Пользуйтесь, пишите ваши вопросы, будет свободное время отвечу.
Сделать видимым всё что скрыто, не проблема, занать бы как))
hellEVIL_TEAM: А нафига Mysql тогда ставить?
Можно ещё и Постгресс замутить)) А форумы и прочее ты тоже будешь ставить на MSSQL уд. хост?
Я лично MySQL и PGSQL юзаю для хранения пользователей хостинга, e-mail сервера, ftp и vpn. + Баз для сайтов, и хранение квот.
Сделать видимым всё что скрыто, не проблема, занать бы как))
Вопрос есть, а не проще сделать на perl`e XML-RPC сервер, и повесить его хоть на яву хоть на птс(sybase, odbc), а вызывать с веб-морды хоть через php, хоть через javascript?
izen: Вопрос есть, а не проще сделать на perl`e XML-RPC сервер, и повесить его хоть на яву хоть на птс(sybase, odbc), а вызывать с веб-морды хоть через php, хоть через javascript?
А смысл в том какой? Теже яйца только в профиль. Для чего извращаться если можно подключить библиотеку напрямую?
Сделать видимым всё что скрыто, не проблема, занать бы как))


