Хостинг своими руками.

14.01.2010 от admin 34

Сегодня я расскажу вам о том как сделать свой собственный хостинг(например для пары сайтов внутри компании или локальной сети… или еще чего-то подобного) по оброзу и подобию платных хостеров на Ubuntu Server 9.10(или любой другой ubuntu) с использованием панели управления ISPConfig 3(На сколько я понял ISPConfig 2 на 9.10 не работает)

За основу и большая часть букв взята с сайта howtoforge.
Установка SSH сервера.

Так как мой сервачек не имеит ни монитора ни клавы, то все настройки я буду делать по SSH, что и вам советую. Если вы не ставили еще OpenSSH сервер во время установки системы или позже, то установим его сейчас:

aptitude install ssh openssh-server

После установки можно сразу же использовать, для подключения можно использовать клиент Putty(под windows). Что бы русский нормально отображался с левой стороны есть вкладка Translation в ней нужно выбрать кодировку UTF-8.(более подробно о том как использовать Putty будет отдельная статья)

Настройка сети

Для нашего сервера нужен постоянный IP адрес, поэтому будет редактировать /etc/network/interfaces (в этом примере установки я буду использовать IP адрес 192.168.1.2):

nano /etc/network/interfaces

# This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5).

# The loopback network interface
auto lo
iface lo inet loopback

# The primary network interface
auto eth0
iface eth0 inet static
address 192.168.1.2
netmask 255.255.255.0
network 192.168.1.0
broadcast 192.168.1.255
gateway 192.168.1.1

Затем перезагрузите вашу сеть:

/etc/init.d/networking restart

Затем отредактируйте /etc/hosts:

nano /etc/hosts

127.0.0.1 localhost.localdomain localhost
192.168.1.2 server1.example.com server1

# The following lines are desirable for IPv6 capable hosts
::1 localhost ip6-localhost ip6-loopback
fe00::0 ip6-localnet
ff00::0 ip6-mcastprefix
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters
ff02::3 ip6-allhosts

Теперь выполним команду:

echo server1.example.com > /etc/hostname

И перезагрузимся:

reboot

Проверим наши манипуляции с host:

hostname
hostname –f

Сейчас оба должны показать server1.example.com.

Изменение оболочки по умолчанию

/bin/sh это симлинк для /bin/dash, а нам нужно /bin/bash. Поэтому мы сделаем это:

dpkg-reconfigure dash

Install dash as /bin/sh? No

Если вы не сделаете этого, установка ISPConfig3 не удастся.

Отключение AppArmor

AppArmor представляет собой модуль безопасности, который должен обеспечить расширенную безопасность.У нас как бы Linux … лично я не вижу в нем смысла, поэтому я отключаю его, к тому же это необходимо, для установки ISPConfig3.

Выполним следующие команды:

/etc/init.d/apparmor stop
update-rc.d -f apparmor remove
aptitude remove apparmor apparmor-utils

Синхронизация системного времени

Это хорошая идея, чтобы синхронизировать системные часы с NTP сервером через интернет. Просто запустите:

aptitude install ntp ntpdate

и системное время всегда будет синхронизировано.

.

Установка Postfix, Courier, Saslauthd, MySQL, rkhunter, binutils

Вам нужно установить Postfix, Courier, Saslauthd, MySQL, rkhunter, и binutils с помощью одной команды:

aptitude install postfix postfix-mysql postfix-doc mysql-client mysql-server courier-authdaemon courier-authlib-mysql courier-pop courier-pop-ssl courier-imap courier-imap-ssl libsasl2-2 libsasl2-modules libsasl2-modules-sql sasl2-bin libpam-mysql openssl getmail4 rkhunter binutils

Вам нужно будет ответить на следующи вопросы(эти вопросы могут быть на русском):

New password for the MySQL «root» user: <— Ваш пароль root для MySQL
Repeat password for the MySQL «root» user: <— Повторить пароль root для MySQL
Create directories for web-based administration? <— No
General type of mail configuration: <— Internet Site
System mail name: <— server1.example.com
SSL certificate required <— Ok

Затем мы установим maildrop следующим образом:

update-alternatives —remove-all maildir.5
update-alternatives —remove-all maildirquota.7

aptitude install maildrop

Мы хотим, чтобы MySQL прослушивался на всех интерфейсах, а не только с локального хоста, поэтому отредактируем файл /etc/mysql/my.cnf и закомментируем строку bind-address = 127.0.0.1:

nano /etc/mysql/my.cnf

[…] # Instead of skip-networking the default is now to listen only on
# localhost which is more compatible and is not less secure.
#bind-address = 127.0.0.1
[…]

Затем мы перезапускаем MySQL:

/etc/init.d/mysql restart

Теперь проверяем влючена ли сеть. Запускаем:

netstat -tap | grep mysql

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

root@server1:~# netstat -tap | grep mysql
tcp 0 0 *:mysql *:* LISTEN 6267/mysqld
root@server1:~#

Во время установки SSL сертификаты SSL-IMAP и POP3-SSL создается с именем хоста localhost. Чтобы изменить на правильное имя хоста (server1.example.com в данной статье -примере), удаляем сертификаты:

cd /etc/courier
rm -f /etc/courier/imapd.pem
rm -f /etc/courier/pop3d.pem

И изменить два файла; заменить CN=localhost на CN=server1.example.com (вы можете также изменить другие значения, в случае необходимости):

nano /etc/courier/imapd.cnf

[…] CN=server1.example.com
[…]

nano /etc/courier/pop3d.cnf

[…] CN=server1.example.com
[…]

Теперь пересоздаём сертификаты:

mkimapdcert
mkpop3dcert

И рестартуем Courier-IMAP-SSL и Courier-POP3-SSL:

/etc/init.d/courier-imap-ssl restart
/etc/init.d/courier-pop-ssl restart

Установка Amavisdnew, SpamAssassin, и Clamav

Чтобы установить amavisd-new, SpamAssassin, и ClamAV, мы выполним следующую команду:

aptitude install amavisd-new spamassassin clamav clamav-daemon zoo unzip bzip2 arj nomarch lzop cabextract apt-listchanges libnet-ldap-perl libauthen-sasl-perl clamav-docs daemon libio-string-perl libio-socket-ssl-perl libnet-ident-perl zip libnet-dns-perl

Установка Apache2, PHP5, phpMyAdmin, FCGI, suExec, Pear, и mcrypt

Apache2, PHP5, phpMyAdmin, FCGI, suExec, Pear, и mcrypt установим следующим образом:

aptitude install apache2 apache2.2-common apache2-doc apache2-mpm-prefork apache2-utils libexpat1 ssl-cert libapache2-mod-php5 php5 php5-common php5-gd php5-mysql php5-imap phpmyadmin php5-cli php5-cgi libapache2-mod-fcgid apache2-suexec php-pear php-auth php5-mcrypt mcrypt php5-imagick imagemagick libapache2-mod-suphp

Вы увидите следующий вопрос:

Web server to reconfigure automatically: <— apache2
Configure database for phpmyadmin with dbconfig-common? <— No

Затем запустите следующую команду чтобы активировать apache modules suexec, rewrite, ssl, actions, и include:

a2enmod suexec rewrite ssl actions include

Затем перезапустите Apache:

/etc/init.d/apache2 restart

Установка PureFTPd и Quota

PureFTPd и quota можно установить с помощью следующей команды:

aptitude install pure-ftpd-common pure-ftpd-mysql quota quotatool

Отредактируйте файл /etc/default/pure-ftpd-common:

nano /etc/default/pure-ftpd-common

И убедитесь, что в начале установлен режим standalone и установите VIRTUALCHROOT=true:

[…] STANDALONE_OR_INETD=standalone
[…] VIRTUALCHROOT=true
[…]

Затем перезапустим PureFTPd:

/etc/init.d/pure-ftpd-mysql restart

Отредактируйте /etc/fstab. Выглядит это примерно так (я добавил, usrjquota=aquota.user,grpjquota=aquota.group,jqfmt=vfsv0 на раздел с точкой монтирования /):

nano /etc/fstab

# /etc/fstab: static file system information.
#
# Use ‘blkid -o value -s UUID’ to print the universally unique identifier
# for a device; this may be used with UUID= as a more robust way to name
# devices that works even if disks are added and removed. See fstab(5).
#
# <file system> <mount point> <type> <options> <dump> <pass>
proc /proc proc defaults 0 0
/dev/mapper/server1-root / ext4 errors=remount-ro,usrjquota=aquota.user,grpjquota=aquota.group,jqfmt=vfsv0 0 1
# /boot was on /dev/sda5 during installation
UUID=9ea34148-31b7-4d5c-baee-c2e2022562ea /boot ext2 defaults 0 2
/dev/mapper/server1-swap_1 none swap sw 0 0
/dev/scd0 /media/cdrom0 udf,iso9660 user,noauto,exec,utf8 0 0
/dev/fd0 /media/floppy0 auto rw,user,noauto,exec,utf8 0 0

Чтобы активировать квоту, запустите эти команды:

touch /aquota.user /aquota.group
chmod 600 /aquota.*
mount -o remount /

quotacheck -avugm
quotaon -avug

Установка MyDNS

Прежде чем мы установим MyDNS, мы должны установить несколько предпосылок:

aptitude install g++ libc6 gcc gawk make texinfo libmysqlclient15-dev

MyDNS не доступен в Ubuntu 9.10 в репозиториях, поэтому мы должны установить его сами следующим образом:

cd /tmp
wget http://heanet.dl.sourceforge.net/sourceforge/mydns-ng/mydns-1.2.8.27.tar.gz
tar xvfz mydns-1.2.8.27.tar.gz
cd mydns-1.2.8
./configure
make
make install

Затем мы создадим start/stop скрипт для MyDNS:

nano /etc/init.d/mydns

#! /bin/sh
#
# mydns Start the MyDNS server
#
# Author: Philipp Kern <phil@philkern.de>.
# Based upon skeleton 1.9.4 by Miquel van Smoorenburg
# <miquels@cistron.nl> and Ian Murdock <imurdock@gnu.ai.mit.edu>.
#

set -e

PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
DAEMON=/usr/local/sbin/mydns
NAME=mydns
DESC=»DNS server»

SCRIPTNAME=/etc/init.d/$NAME

# Gracefully exit if the package has been removed.
test -x $DAEMON || exit 0

case «$1» in
start)
echo -n «Starting $DESC: $NAME»
start-stop-daemon —start —quiet
—exec $DAEMON — -b
echo «.»
;;
stop)
echo -n «Stopping $DESC: $NAME»
start-stop-daemon —stop —oknodo —quiet
—exec $DAEMON
echo «.»
;;
reload|force-reload)
echo -n «Reloading $DESC configuration…»
start-stop-daemon —stop —signal HUP —quiet
—exec $DAEMON
echo «done.»
;;
restart)
echo -n «Restarting $DESC: $NAME»
start-stop-daemon —stop —quiet —oknodo
—exec $DAEMON
sleep 1
start-stop-daemon —start —quiet
—exec $DAEMON — -b
echo «.»
;;
*)
echo «Usage: $SCRIPTNAME {start|stop|restart|reload|force-reload}» >&2
exit 1
;;
esac

exit 0

Затем мы создадим исполняемый скрипт и создадим ссылки для загрузки системы:

chmod +x /etc/init.d/mydns
update-rc.d mydns defaults

Установка Vlogger и Webalizer

Vlogger и Webalizer могут быть установлены так:

aptitude install vlogger webalizer

Установка Jailkit

Jailkit нужна только, если вы хотите chroot SSH пользователей. Она может быть установлена следующим образом (важно: Jailkit должна быть установлена до ISPConfig — она не может быть установлена после!):

aptitude install build-essential autoconf automake1.9 libtool flex bison

cd /tmp
wget http://olivier.sessink.nl/jailkit/jailkit-2.10.tar.gz
tar xvfz jailkit-2.10.tar.gz
cd jailkit-2.10
./configure
make
make install
cd ..
rm -rf jailkit-2.10*

Установка fail2ban

Это необязательно, но рекомендуется, так как монитор ISPConfig показывает fail2ban журнал:

aptitude install fail2ban

Установка SquirrelMail

Чтобы установить SquirrelMail(клиент почты) выполните:

aptitude install squirrelmail

Затем создайте следующий симлинк:

ln -s /usr/share/squirrelmail/ /var/www/webmail

И сконфигурируйте SquirrelMail:

squirrelmail-configure

Мы должны сказать SquirrelMail, что мы используем Courier-IMAP/-POP3:

SquirrelMail Configuration : Read: config.php (1.4.0)
———————————————————
Main Menu —
1. Organization Preferences
2. Server Settings
3. Folder Defaults
4. General Options
5. Themes
6. Address Books
7. Message of the Day (MOTD)
8. Plugins
9. Database
10. Languages

D. Set pre-defined settings for specific IMAP servers

C Turn color on
S Save data
Q Quit

Command >> D

SquirrelMail Configuration : Read: config.php
———————————————————
While we have been building SquirrelMail, we have discovered some
preferences that work better with some servers that don’t work so
well with others. If you select your IMAP server, this option will
set some pre-defined settings for that server.

Please note that you will still need to go through and make sure
everything is correct. This does not change everything. There are
only a few settings that this will change.

Please select your IMAP server:
bincimap = Binc IMAP server
courier = Courier IMAP server
cyrus = Cyrus IMAP server
dovecot = Dovecot Secure IMAP server
exchange = Microsoft Exchange IMAP server
hmailserver = hMailServer
macosx = Mac OS X Mailserver
mercury32 = Mercury/32
uw = University of Washington’s IMAP server

quit = Do not change anything
Command >> courier

SquirrelMail Configuration : Read: config.php
———————————————————
While we have been building SquirrelMail, we have discovered some
preferences that work better with some servers that don’t work so
well with others. If you select your IMAP server, this option will
set some pre-defined settings for that server.

Please note that you will still need to go through and make sure
everything is correct. This does not change everything. There are
only a few settings that this will change.

Please select your IMAP server:
bincimap = Binc IMAP server
courier = Courier IMAP server
cyrus = Cyrus IMAP server
dovecot = Dovecot Secure IMAP server
exchange = Microsoft Exchange IMAP server
hmailserver = hMailServer
macosx = Mac OS X Mailserver
mercury32 = Mercury/32
uw = University of Washington’s IMAP server

quit = Do not change anything
Command >> courier

imap_server_type = courier
default_folder_prefix = INBOX.
trash_folder = Trash
sent_folder = Sent
draft_folder = Drafts
show_prefix_option = false
default_sub_of_inbox = false
show_contain_subfolders_option = false
optional_delimiter = .
delete_folder = true

Press any key to continue… ENTER

SquirrelMail Configuration : Read: config.php (1.4.0)
———————————————————
Main Menu —
1. Organization Preferences
2. Server Settings
3. Folder Defaults
4. General Options
5. Themes
6. Address Books
7. Message of the Day (MOTD)
8. Plugins
9. Database
10. Languages

D. Set pre-defined settings for specific IMAP servers

C Turn color on
S Save data
Q Quit

Command >> S

SquirrelMail Configuration : Read: config.php (1.4.0)
———————————————————
Main Menu —
1. Organization Preferences
2. Server Settings
3. Folder Defaults
4. General Options
5. Themes
6. Address Books
7. Message of the Day (MOTD)
8. Plugins
9. Database
10. Languages

D. Set pre-defined settings for specific IMAP servers

C Turn color on
S Save data
Q Quit

Command >> S

Data saved in config.php
Press enter to continue… ENTER

SquirrelMail Configuration : Read: config.php (1.4.0)
———————————————————
Main Menu —
1. Organization Preferences
2. Server Settings
3. Folder Defaults
4. General Options
5. Themes
6. Address Books
7. Message of the Day (MOTD)
8. Plugins
9. Database
10. Languages

D. Set pre-defined settings for specific IMAP servers

C Turn color on
S Save data
Q Quit

Command >> Q

Затем вы можете получить доступ SquirrelMail под http://server1.example.com/webmail или http://192.168.1.2/webmail:
Установка ISPConfig 3

Чтобы установить ISPConfig 3 выполните следующие действие:

cd /tmp
wget http://downloads.sourceforge.net/ispconfig/ISPConfig-3.0.1.6.tar.gz?use_mirror=
tar xvfz ISPConfig-3.0.1.6.tar.gz
cd ispconfig3_install/install/

(Замените ISPConfig-3.0.1.6.tar.gz последней версией, которую можно найти на сайте isconfig)
Следующим шагом является запуск

php -q install.php

Это запустит установщик ISPConfig 3:

root@server1:/tmp/ispconfig3_install/install# php -q install.php

———————————————————————————
_____ ___________ _____ __ _
|_ _/ ___| ___ / __ / _(_)
| | `—.| |_/ / | / / ___ _ __ | |_ _ __ _
| | `—. __/ | | / _ | ‘_ | _| |/ _` |
_| |_/__/ / | | __/ (_) | | | | | | | (_| |
___/____/_| ____/___/|_| |_|_| |_|__, |
__/ |
|___/
———————————————————————————

>> Initial configuration

Operating System: Debian or compatible, unknown version.

Following will be a few questions for primary configuration so be careful.
Default values are in [brackets] and can be accepted with <ENTER>.
Tap in «quit» (without the quotes) to stop the installer.

Select language (en,de) [en]:ENTER

Installation mode (standard,expert) [standard]: ENTER

Full qualified hostname (FQDN) of the server, eg server1.domain.tld [server1.example.com]: ENTER

MySQL server hostname [localhost]: ENTER

MySQL root username [root]: ENTER

MySQL root password []: Ваш root к базе MySQL

MySQL database to create [dbispconfig]: ENTER

MySQL charset [utf8]: ENTER

Generating a 2048 bit RSA private key
…….+++
…+++
writing new private key to ‘smtpd.key’
——
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter ‘.’, the field will be left blank.
——
Country Name (2 letter code) [AU]: ENTER
State or Province Name (full name) [Some-State]: ENTER
Locality Name (eg, city) []:ENTER

Organization Name (eg, company) [Internet Widgits Pty Ltd]: ENTER
Organizational Unit Name (eg, section) []: ENTER
Common Name (eg, YOUR name) []: ENTER
Email Address []: ENTER
Configuring Jailkit
Configuring SASL
Configuring PAM
Configuring Courier
Configuring Spamassassin
Configuring Amavisd
Configuring Getmail
Configuring Pureftpd
Configuring MyDNS
Configuring Apache
Configuring vlogger
Configuring Firewall
Installing ISPConfig
ISPConfig Port [8080]: ENTER

Configuring DBServer
Installing Crontab
no crontab for root
no crontab for getmail
Restarting services …
* Stopping MySQL database server mysqld
…done.
* Starting MySQL database server mysqld
…done.
* Checking for corrupt, not cleanly closed and upgrade needing tables.
* Stopping Postfix Mail Transport Agent postfix
…done.
* Starting Postfix Mail Transport Agent postfix
…done.
* Stopping SASL Authentication Daemon saslauthd
…done.
* Starting SASL Authentication Daemon saslauthd
…done.
Stopping amavisd: amavisd-new.
Starting amavisd: amavisd-new.
* Stopping ClamAV daemon clamd
…done.
* Starting ClamAV daemon clamd
LibClamAV Warning: ***********************************************************
LibClamAV Warning: *** This version of the ClamAV engine is outdated. ***
LibClamAV Warning: *** DON’T PANIC! Read http://www.clamav.net/support/faq ***
LibClamAV Warning: ***********************************************************
…done.
* Stopping Courier authentication services authdaemond
…done.
* Starting Courier authentication services authdaemond
…done.
* Stopping Courier IMAP server…
…done.
* Starting Courier IMAP server…
…done.
* Stopping Courier IMAP-SSL server…
…done.
* Starting Courier IMAP-SSL server…
…done.
* Stopping Courier POP3 server…
…done.
* Starting Courier POP3 server…
…done.
* Stopping Courier POP3-SSL server…
…done.
* Starting Courier POP3-SSL server…
…done.
* Restarting web server apache2
… waiting …done.
Restarting ftp server: Running: /usr/sbin/pure-ftpd-mysql-virtualchroot -l mysql:/etc/pure-ftpd/db/mysql.conf -l pam -A -b -O clf:/var/log/pure-ftpd/transfer.log -8 UTF-8 -u 1000 -E -B
Installation completed.
root@server1:/tmp/ispconfig3_install/install#

Установщик автоматически настраивает все основные сервисы, поэтому не требуется ручная настройка.

Затем вы можете получить доступ ISPConfig 3 через http://server1.example.com:8080/ или http://192.168.1.2:8080/. Войти с именем пользователя admin и пароль admin (вам следует изменить пароль по умолчанию, после вашего первого залогинивания)
Система готова к использованию.

Если возникли вопросы пишите в комментарии, постараюсь ответить.