Хостинг своими руками.
14.01.2010Сегодня я расскажу вам о том как сделать свой собственный хостинг(например для пары сайтов внутри компании или локальной сети… или еще чего-то подобного) по оброзу и подобию платных хостеров на 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.7aptitude 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
Установка Amavisd—new, 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 0case «$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
;;
esacexit 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. LanguagesD. Set pre-defined settings for specific IMAP servers
C Turn color on
S Save data
Q QuitCommand >> 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 serverquit = Do not change anything
Command >> courierSquirrelMail 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 serverquit = Do not change anything
Command >> courierimap_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 = truePress 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. LanguagesD. Set pre-defined settings for specific IMAP servers
C Turn color on
S Save data
Q QuitCommand >> 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. LanguagesD. Set pre-defined settings for specific IMAP servers
C Turn color on
S Save data
Q QuitCommand >> S
Data saved in config.php
Press enter to continue… ENTERSquirrelMail 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. LanguagesD. Set pre-defined settings for specific IMAP servers
C Turn color on
S Save data
Q QuitCommand >> 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) []:ENTEROrganization 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]: ENTERConfiguring 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 (вам следует изменить пароль по умолчанию, после вашего первого залогинивания)
Система готова к использованию.
Если возникли вопросы пишите в комментарии, постараюсь ответить.
Вот ещё хотелось бы узнать можно ли сделать доменное имя типа: http://www.какой-то_домен.ru и размещать на сервере чужие сайты?
P.S. Просто загорелся идеей и решил сделать свой хостинг)
Зарание спасибо!
Да можно. Для начала почитайте про dns .
Все по мануалу, но почему-то в ISPconfig пишет что служба myDNS не запущена, пробую запустить через /etc/init.d/mydns start — сначала писал ошибку на синтаксис, поправил, теперь пишет следующее:
root@hosting:/home/ambi# /etc/init.d/mydns start
Usage: /etc/init.d/mydns {start|stop|restart|reload|force-reload}
что за ОС используете?
ubuntu server 9.10
1. Попробуйте перезагрузить сервак.
2. Проверьте /etc/hosts
3. Были ли ли ошибки при установки myDNS?
4. Скрипт старстоп копировали в /etc/init.d/mydns ?
Если с 1 и 2 пунктом не получилось, ответы на 3 и 4 пишите на support@etelo-server.ru , будем думать что не так
Почему у меня при закачки ispconfig качает файлик html 1.1 кб?? Ссылка рабочая??
нельзя слепо копировать и вставлять в консоль =) Дата у статьи как бы стоит, ispconfig уже обновилась до ISPConfig-3.0.3.2, ссылка на скачку http://downloads.sourceforge.net/project/ispconfig/ISPConfig%203/ISPConfig-3.0.3.2/ISPConfig-3.0.3.2.tar.gz?r=&ts=1299155950&use_mirror=citylan
Ну эт понятно ) сам с винды качал, копировал ссылку на скачку, a ubuntu пишет error 404.. Щас попробую эту)
Я уже не понимаю в чем дело( пишет — temporary failure in name resolution
wget: unable to resolve host addres downloads.sourceforge.net
хех ну вручную скачайте под виндой например и закиньте на сервак.
ток ставлю первый раз ) и еще не знаю как например с диска скопировать хотя бы в ту же папку /tmp ) а на диск еще записывал скачанную эту прогу, так он ее там че-то не видит (
скопировать можно через cp , в гугле полно списков по командам. Ispconfig не программа а набор скриптов скорей, нужно сначала все извлечь из архива
а у меня mydns не устанавливается когда делаю ./configure ругается мол типа у меня нет zlib какого-то а в интернете найти его мне не удалось, чё делать?
лучше искать пакет=) или ставить bind9
а где пакет найти?
а между bind9 и mydns принципиально большой разници ведь нет?
Вам шашочки или ехать? панель поддерживает и то и другое.
Что бы найти пакет,надо знать что за пакет=) и далее уже искать apt-cache search имя пакета
о хорошая командочка я еще такой незнал 🙂
Ну спасибо за помощь я установил всетаки bind так проще 🙂
у меня возникла проблема зашел в ispconfig и в нем зделал Do OS-Update at remote server и Do ISPConfig 3 — Update at remote server после етого меня перестало пускать в ispconfig … пишет что немогу подключится к серверу. что посоветуете делать?
Цитировать
попробуйте через https://ip_server:8080 , на чем сервер стоит?