пятница, 16 декабря 2011 г.

Автозагрузка виртуальной гостевой машины VirtualBox в Ubuntu

Имеется VirtualBox на Ubuntu 11.10 на которой постоянно крутится гостевая Windows Server с рядом сервисов необходимых в  сети. Все настраивалось через стандартные графические инструменты но это накладывает одно неудобство, при перезагрузке необходимо вручную запускать заново виртуальную машину. А хочется что бы все запускалось автоматом и без графики.
Для запуска VirtualBox без графики, есть несколько параметров, мы воспользуемся следующим:

VBoxHeadless --startvm <uuid|name>
где <uuid|name> идентификатор или имя нашей гостевой ОС. 
Теперь нужно автоматизировать этот процесс, для этого создадим скрипт /etc/init.d/vbox следующего содержания:

#!/bin/sh
#Запуск ВМ
vm_start() {         log_daemon_msg "Starting Vbox WinServ2008 machine"         sleep 120 && su -l -c "VBoxHeadless --startvm \
        "WinServ2008" &" shajtan
        log_end_msg 0
        return 0
}

# выключение ВМ
vm_save()
{
        log_daemon_msg "Sending ACPI POWER OFF \
signal for Vbox WinServ2008 machine"
        su -l -c "VBoxManage controlvm \
        WinServ2008 acpipowerbutton" shajtan
        log_end_msg 0
        return 0
}

case "$1" in
start)
perform_start
;;

stop)
perform_save
echo "done."
exit 0;
;;

*)
echo "Usage: /etc/init.d/vbox start|stop"
exit 1
;;

esac
Добавим наш скрипт во все уровни запуска:
sudo update-rc.d slave start 99 2 3 4 5 . stop 01 0 1 6 .
Все будет стартовать автоматически, более того мы можем отключить или заново включить нашу ВМ командами:

/etc/init.d/slave start
/etc/init.d/slave stop








вторник, 29 ноября 2011 г.

Нерабочая F10 в MC (Midnight Commander) Ubuntu 11.10.

Не работает функциональная клавиша F10 в MC, при нажатии на последнюю вместо выхода из файлового менеджера появляется меню терминала, при этом не помогает отключение данной функции в настройках комбинаций клавиш терминала.

Данная проблема появилась еще в предыдущей версии Ubuntu. Там она устранялась при помощи редактирования параметров с помощью dconf-editor (каких именно уже не вспомню). В версии 11.10  dconf-editor не помог, хотя Google нашел пару советов включения отключения F10 как кнопки доступа к меню из последнего: org.gnome.desktop.applications.interface параметр menubar-accel. Но похоже это не совсем то, поскольку изменение ни к чему не привело.

Однако решение нашлось тоже довольно простое alt+F2 запускаем about:config откроется менеджер настройки CompizConfig. В Behaviour ищем опцию "Key to open the first panel menu" и изменяем в ней комбинацию клавиш.

вторник, 20 сентября 2011 г.

Ошибка установки php5-extensions на FreeBSD (autoconf: required version 2.68 not found)

 

При установке расширений для php5 из портов возникла следующая ошибка:

Configuring for:
PHP Api Version: 20090626
Zend Module Api No: 20090626
Zend Extension Api No: 220090626
autoconf: required version 2.68 not found
*** Error code 1

При этом php был установлен перед этим без проблем. Обновление порта не помогло.

После долгих неудачных поисков решения в друг дошло, нужно обновить autoconf, в выводе указано же что не та версия.

# portupgrade autoconf

А также нжно обновить autoconf-wrapper:

# portupgrade autoconf-wrapper

После этого все установилось без проблем.

понедельник, 19 сентября 2011 г.

Обновление установленных пакетов FreeBSD

 

Для обновления будем использовать portupgrade.

Установим утилиту:

# cd /usr/ports/ports-mgmt/portupgrade
# make install clean

Теперь обновляемся с помощью команды:

# portupgrade –arR

По завершении работы portupgrade выводится список программ которые обновить автоматически не удалось. Если необходимо то это можно сделать вручную, перейдя в папку каждого порта и выполнив команду:

# make reinstall

или удалив и установив программу заново:

# make deinstall && make install

Обновление дерева портов FreeBSD

 

Для поддержки актуальности устанавливаемых программ нужно периодически обновлять порты. В данном примере мы будем делать это с помощью  cvsup.

Для начала установим саму утилиту:

# cd /usr/ports/net/cvsup-without-gui
# make install clean

Создадим конфигурационный файл /usr/local/etc/cvsup.conf со следующим содержимым:

*default host=cvsup.FreeBSD.org
*default base=/var/db
*default prefix=/usr
*default release=cvs tag=RELENG_7_1
*default delete use-rel-suffix
*default compress
ports-all tag=.

Теперь можно обновлять дерево портов, для этого служит комманда:

cvsup -g -L 2 /usr/local/etc/cvsup.conf && make fetchindex

Первый раз обновление занимает довольно много времени, так что придется подождать.

четверг, 4 августа 2011 г.

Установка и настройка почтового сервера на базе Courier и Postfix в Ubuntu

 

Для быстрой настройки почтового сервера связка Courier и Postfix является очень удобной.

Для работы нам понадобится наличие домена с обратным преобразованием оного и записью типа MX, а также база данных MySQLдля хранения информации о пользователях и доменах.

Также нужно открыть доступ к следующим портам :

25 (SMTP), 110, 995 (POP, POPS), 143, 993 (IMAP, IMAPS)

Самый простой способ настроить место для хранения почты — создать пользователя vmail с соответствующей группой и назначить ему специфичный userID.

Пользователь vmail создается как обычно, но с некоторым отличием: мы указываем, что пользователь не может логиниться в систему.

Для начала создадим группу vmail:

 

sudo groupadd -g 5000 vmail

Это команда создает группу vmail и присваивает ее GID (group ID) 5000.

Затем создаем пользователя vmail:

 

sudo useradd -s /usr/sbin/nologin -g vmail -u 5000 vmail -d /home/vmail -m

Эта команда создает пользователя vmail, чтобы он не мог логиниться в систему, присваивает его группе vmail, а так же создает ему домашнюю директорию /home/vmail

Установим Postfix:

 

sudo apt-get install postfix postfix-mysql postfix-tls libsasl2-2 libsasl2-modules libsasl2-modules-sql sasl2-bin libpam-mysql openssl

 

В процессе установки Postfix сервера вначале система выведет на экран окно с информацией, после чего потребуется выбрать пункт 'Internet Site'.

На вопрос о имени имя вашего почтового домена mail.domen1.com.

Настройка MySQL.

Для начала создадим базу данных с оригинальным названием — mail.

 

mysqladmin -u root -p create mail

В процессе выполнения команды система вас попросит ввести пароль администратора MySQL (вы его ввели при инсталляции MySQL).

Далее залогинимся в MySQL и создадим несколько таблиц.

 

mysql -u root -p

Для начала создадим пользователя БД, для наших целей.

 

CREATE USER 'mailadmin'@'localhost' IDENTIFIED BY 'MyPasswordHere';

Замените MyPasswordHere на свой собственный пароль.

Далее, дадим этому пользователю необходимые привилегии:

 

FLUSH PRIVILEGES;

GRANT SELECT, INSERT, UPDATE, DELETE ON `mail` . * TO 'mailadmin'@'localhost';

FLUSH PRIVILEGES;

1.Теперь мы можем выбрать нашу БД mail и создать необходимые таблицы.

 

USE mail;

Необходимо создать три таблицы для хранения почтовых доменов, пользователей и деталей доставки сообщений (форвардинг сообщений).

Таблица доменов. В Mysql введите следующие команды:

 

CREATE TABLE domains (

domain varchar(50) NOT NULL,

PRIMARY KEY (domain)

)

TYPE=MyISAM;

Таблица пользователей. Как раньше, введите в MySQL:

 

CREATE TABLE users (

email varchar(80) NOT NULL,

password varchar(20) NOT NULL,

PRIMARY KEY (email)

)

TYPE=MyISAM;

Таблица форвардинга:

 

CREATE TABLE forwards (

source varchar(80) NOT NULL,

destination TEXT NOT NULL,

PRIMARY KEY (source)

)

TYPE=MyISAM;

Теперь можно выйти из MySQL.

Для того, чтобы Postfix мог использовать таблицы MySQL, необходимо создать несколько настроечных файлов.

Создадим текстовый файл:

 

sudo nano /etc/postfix/mysql-domains.cf

Введем следующие строки:

 

user = mailadmin

password = MyPasswordHere

dbname = mail

query = SELECT domain AS virtual FROM domains WHERE domain='%s'

hosts = 127.0.0.1

MyPasswordHere надо заменить на введенный при создании пользователя БД mailadmin пароль.

Создаем файл:

 

sudo nano /etc/postfix/mysql-forwards.cf

Заполняем его:

 

user = mailadmin

password = MyPasswordHere

dbname = mail

query = SELECT destination FROM forwards WHERE source='%s'

hosts = 127.0.0.1

 

Каждый домен имеет множество различных почтовых ящиков. Этот скрипт получает правильные характеристики почтового ящика.

 

sudo nano /etc/postfix/mysql-mailboxes.cf

Содержимое:

 

user = mailadmin

password = MyPasswordHere

dbname = mail

query = SELECT CONCAT(SUBSTRING_INDEX(email,'@',-1),'/',SUBSTRING_INDEX(email,'@',1),'/') FROM users WHERE email='%s'

hosts = 127.0.0.1

 

И наконец создадим файл адресов.

 

sudo nano /etc/postfix/mysql-email.cf

Содержимое

 

user = mailadmin

password = MyPasswordHere

dbname = mail

query = SELECT email FROM users WHERE email='%s'

hosts = 127.0.0.1

Эти четыре файла позволят Postfix-у получить доступ к информации в базе данных mail и присвоить корректные данные каждому письму.

Установим нужные права:

 

sudo chmod o= /etc/postfix/mysql-*

(другие группы не имеют доступа к файлам.

И сменим владельца:

 

sudo chgrp postfix /etc/postfix/mysql-*

Postfix должен иметь к ним доступ.

Теперь настроим Postfix

Отредактируем файл настроек Postfix:

 

sudo nano /etc/postfix/main.cf

Обычно нижняя часть файла выглядит так:

 

myhostname = mail.domen1.com

alias_maps = hash:/etc/aliases

alias_database = hash:/etc/aliases

myorigin = /etc/mailname

mydestination =

relayhost =

mynetworks = 127.0.0.0/8 [::ffff:127.0.0.0]/104 [::1]/128

mailbox_size_limit = 0

recipient_delimiter = +

inet_interfaces = all

Убедитесь, что mydestination не сделано присвоение.

Добавим ссылки на созданные файлы настроек, чтобы Postfix использовал их в процессе работы. В конец файла добавьте строки:

 

virtual_alias_domains =

virtual_alias_maps = proxy:mysql:/etc/postfix/mysql-forwards.cf, mysql:/etc/postfix/mysql-email.cf

virtual_mailbox_domains = proxy:mysql:/etc/postfix/mysql-domains.cf

virtual_mailbox_maps = proxy:mysql:/etc/postfix/mysql-mailboxes.cf

virtual_mailbox_base = /home/vmail

virtual_uid_maps = static:5000

virtual_gid_maps = static:5000

proxy_read_maps = $local_recipient_maps $mydestination $virtual_alias_maps $virtual_alias_domains $virtual_mailbox_maps $virtual_mailbox_domains $relay_recipient_maps $relay_domains $canonical_maps $sender_canonical_maps $recipient_canonical_maps $relocated_maps $transport_maps $mynetworks $virtual_mailbox_limit_maps

Дальше нужно настроить безопасное соединение.

Saslauthd требуется для того, чтобы устанавливать безопасные соединения с вашим почтовым сервером.

Посмотрим основной файл настроек программы:

 

sudo nano /etc/default/saslauthd

Первым делом надо установить автоматический запуск демона (поменяйте значение на 'yes'. По умолчанию стоит 'no'):

 

# Should saslauthd run automatically on startup? (default: no)

START=yes

Далее нужно изменить некоторые опции в конце файла. По умолчанию они выглядят так:

 

#

# Example for postfix users: "-c –m /var/spool/postfix/var/run/saslauthd"

OPTIONS="-c -m /var/run/saslauthd"

 

Изменим их следующим образом :

 

#

# Example for postfix users: "-c -m /var/spool/postfix/var/run/saslauthd"

OPTIONS="-c -m /var/spool/postfix/var/run/saslauthd -r"

Мы только что указали каталог, который не существует в природе. Непорядок. Устраним это:

 

sudo mkdir -p /var/spool/postfix/var/run/saslauthd

Мы используем MySQL для хранения наших идентификационных данных. Точнее не наших, а пользователей сервера. Значит процесс авторизации должен знать, где брать данные.
Создадим два файла, чтобы процесс мог получить доступ к базе данных и добыть необходимую ему информацию:

 

sudo nano /etc/pam.d/smtp

Добавим в этот файл следующий текст:

 

auth    required   pam_mysql.so user=mailadmin passwd=MyPasswordHere host=127.0.0.1 db=mail table=users usercolumn=email passwdcolumn=password crypt=1

account sufficient pam_mysql.so user=mailadmin passwd=MyPasswordHere host=127.0.0.1 db=mail table=users usercolumn=email passwdcolumn=password crypt=1

Это позволит процессу авторизации иметь доступ к БД для проверки пароля и e-mail-а.

И второй файл:

 

sudo nano /etc/postfix/sasl/smtpd.conf

Его содержимое следующее:

 

pwcheck_method: saslauthd

mech_list: plain login

allow_plaintext: true

auxprop_plugin: mysql

sql_hostnames: 127.0.0.1

sql_user: mailadmin

sql_passwd: MyPasswordHere

sql_database: mail

sql_select: select password from users where email = '%u'

Для того, чтобы Postfix мог получить доступ к процессу Saslauthd, добавим пользователя Postfix в группу Saslauthd

 

sudo adduser postfix sasl

Перезапускаем демоны:

 

sudo /etc/init.d/postfix restart

sudo /etc/init.d/saslauthd restart

Создадим сертификат безопасности. По умолчанию он будет создан в каталоге /etc/ssl/certs.

 

sudo make-ssl-cert /usr/share/ssl-cert/ssleay.cnf /etc/ssl/certs/mailcert.pem

В процессе создания, вам зададут несколько вопросов. Ответить можно, например так:

 

Country Name - UA

State or Province -

Locality name - Kiev

Organisation Name - MyGreat Company

Organisational Unit Name - Mail

Hostname - mail.domen1.com

Email address - admin@domen1.com

Важно, чтобы Hostname совпадал с именем mail server-а — hostname. В нашем случае, это mail.domen1.com.
Мы создали самоподписанный сертификат здесь:

 

/etc/ssl/certs/mailcert.pem

Теперь требуется отредактировать главный файл настроек Postfix:

 

sudo nano /etc/postfix/main.cf

Найдите секцию TLS parameters. Настройки по умолчанию в ней выглядят так:

 

smtpd_tls_cert_file=/etc/ssl/certs/ssl-cert-snakeoil.pem

smtpd_tls_key_file=/etc/ssl/private/ssl-cert-snakeoil.key

smtpd_use_tls=yes

smtpd_tls_session_cache_database = btree:${data_directory}/smtpd_scache

smtp_tls_session_cache_database = btree:${data_directory}/smtp_scache

Стираем их полностью. И вставляем вместо них следующие:

 

smtpd_sasl_auth_enable = yes

broken_sasl_auth_clients = yes

smtpd_sasl_authenticated_header = yes

smtpd_recipient_restrictions = permit_mynetworks, permit_sasl_authenticated, reject_unauth_destination

smtpd_use_tls = yes

smtpd_tls_cert_file = /etc/ssl/certs/mailcert.pem

smtpd_tls_key_file = $smtpd_tls_cert_file

Тем самым мы активировали безопасные соединения, перечислили, какие соединения будем принимать, и, наконец, указали путь к сертификату.

Установим Courier который позволит нам получить POP3 и IMAP доступ к нашей почте.

 

sudo apt-get install courier-authdaemon courier-authlib-mysql courier-pop courier-pop-ssl courier-imap courier-imap-ssl

Во время установки вам будет задан вопрос, нужно ли создать директории. Правильный ответ — НЕТ

Для начала отредактируем файл:

sudo nano /etc/courier/authdaemonrc

Поменяйте строку

authmodulelist="authpam"

на

authmodulelist="authmysql"

Далее редактируем файл с деталями БД /etc/courier/authmysqlrc:

 

MYSQL_SERVER localhost

MYSQL_USERNAME mailadmin

MYSQL_PASSWORD MyPasswordHere

MYSQL_PORT 0

MYSQL_DATABASE mail

MYSQL_USER_TABLE users

MYSQL_CRYPT_PWFIELD password

MYSQL_UID_FIELD 5000

MYSQL_GID_FIELD 5000

MYSQL_LOGIN_FIELD email

MYSQL_HOME_FIELD "/home/vmail"

MYSQL_MAILDIR_FIELD CONCAT(SUBSTRING_INDEX(email,'@',-1),'/',SUBSTRING_INDEX(email,'@',1),'/')


После изменения файлов настроек, требуется рестартовать демоны:

 

sudo /etc/init.d/courier-authdaemon restart

sudo /etc/init.d/courier-imap restart

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

sudo /etc/init.d/courier-pop restart

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

Нужно заполнить таблички в MySQL, чтобы все то, что мы настроили ранее заработало.

Логинимся в MySQL:

 

mysql -u root -p

Выбираем базу данных:

 

USE mail;

Заполняем таблицу доменов:

 

INSERT INTO `domains` (`domain`) VALUES ('domen1.com');

Чтобы ввести любой другой домен, выполните аналогичную команду:

 

INSERT INTO `domains` (`domain`) VALUES ('domen2.ru');

Заполняем таблицу пользователей:

 

INSERT INTO `users` (`email`, `password`) VALUES ('admin@domen1.com', ENCRYPT('secretpassword'));

Остальные пользователи вводятся аналогично:

 

INSERT INTO `users` (`email`, `password`) VALUES ('kot@domen2.ru', ENCRYPT('secretpassword'));

Когда все таблицы заполнены — выходим из ведения БД:

Перегружаем postfix:

 

sudo postfix reload

Для проверки работоспособности нужно отправить письмо на наш адрес

 

mail admin@domen1.com

Через какое-то время проверьте папку /home/vmail:

 

ls /home/vmail

Увидите новый каталог:

 

/home/vmail/domen1.com

А для каждого пользователя домена domen1.com в папке /home/vmail/domen1.com будет создан собственный каталог с письмами.

Осталось обеспечить возможность проверки почты с помощью WEB клиента.
Наиболее известным бесплатным и свободно распространяемым продуктом для этого является Squirrelmail.

 

sudo apt-get install squirrelmail squirrelmail-locales php-pear php5-cli

Скорее всего сразу после инсталляции ваш веб-клиент будет доступен по адресу: www.domen1.com/squirrelmail (www.domen1.com — ваш домен)
Если это не так, то нужно проделать следующее:

 

sudo cp /etc/squirrelmail/apache.conf /etc/apache2/sites-available/squirrelmail

sudo a2ensite squirrelmail

Тем самым мы копируем файл конфигурации по умолчанию в папку доступных сайтов Apache, после чего активируем его.

Теперь он точно будет доступен по адресу www.domen1.com/squirrelmail. Но это не совсем удобно.
Поэтому проделаем следующее:

 

sudo nano /etc/apache2/sites-available/squirrelmail

 

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

 

# alias /squirrelmail /usr/share/squirrelmail

 

Уберем символы комментария в начале строк со следующего блока:

 

# users will prefer a simple URL like http://webmail.example.com

DocumentRoot /usr/share/squirrelmail

ServerName webmail.domen1.com

Если для вашего сервера apache активирован SSL, то можно убрать комментарии с секции mod_rewrite для того, чтобы обеспечить наилучшую безопасность системы.
Сохраните файл. Потом проверьте настройки apache:

 

sudo apache2ctl -t

Если все нормально — перегрузите apache:

 

sudo /etc/init.d/apache2 reload

Теперь мы можете заходить как domain1.com/squirrelmail/ или webmail.domain1.com если предпочитаете виртуальный хост.

Настроим squirrelmail, чтобы вы могли не только увидеть его стартовую страничку, но и проверить свою почту.

 

sudo squirrelmail-configure

Откроется интерфейс конфигурации веб-клиента.

Нажмите 2 (+Enter) чтобы войти в секцию настроек сервера. Нажмите A, чтобы редактировать настройки IMAP.

Нажмите 8 чтобы изменить программу авторизации. введите courier.

 

courier

Теперь нажмем 7, чтобы изменить настройки безопасности secure IMAP. Введите Y для активации.
Введите 5 для редактирования порта IMAP. Введите значение 993.
Нажмите S для сохранения настроек. И «Enter».
Нажмите Q, чтобы выйти из программы настроек.

Сейчас вы можете зайти на страницу domain1.com/squirrelmail/ или webmail.domain1.com и попробовать проверить свою почту, залогинившись.

 

 

Источник: http://blog.laptev.info/2009/ubuntu-mail-server-1.html http://blog.laptev.info/2009/ubuntu-mail-server-2.html

вторник, 5 июля 2011 г.

Мониторинг производительности Ubuntu с помощью Munin

 

При работе сервера очень важно иметь полную информацию о нагрузке на систему, истории доступа, производительности. Для Linux уже существуют средства мониторинга такие как как Zabbix и Munin. Настройкой последнего мы и займемся.

Munin ставится из репозитариев:

sudo apt-get install munin

Поскольку информацию мы будем выводить на веб-интерфейс то нам понадобится веб-сервер:

sudo apt-get install apache2

Теперь займемся настройкой. Отредактируем основной файл конфигурации /etc/munin/munin.conf

 Ищем строки:

# a simple host tree
[localhost.localdomain]
    address 127.0.0.1
    use_node_name yes

И добавляем под ними:

[stat.site.my]
    address 86.113.92.12
    use_node_name yes

stat.site.my – это наш домен куда будет выводится статистика.

86.113.92.12 – IP-адресс нашего сервера.

Это все что нужно для настройки сервера. Теперь нам нужно настроить клиента. Открываем файл конфигурации /etc/munin/munin-node.conf, ищем в нем строки:

allow ^127\.0\.0\.1$

и добавляем наш  IP:

allow ^86\.113\.92\.12$

Перезапустим:

/etc/init.d/munin-node restart

В директории /etc/apache2/sites-enabled создадим файл stat.site.my с таким содержимым:

<VirtualHost *:80>
        ServerAdmin webmaster@test
        ServerName stat.site.my

        DocumentRoot /var/cache/munin/www
        <Directory />
                Options FollowSymLinks
                AllowOverride None
        </Directory>
        <Directory /var/cache/munin/www>
                Options Indexes FollowSymLinks MultiViews
                AllowOverride None
                Order allow,deny
                allow from all
        </Directory>

        ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/
        <Directory "/usr/lib/cgi-bin">
                AllowOverride None
                Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
                Order allow,deny
                Allow from all
        </Directory>

        ErrorLog ${APACHE_LOG_DIR}/error.log

        # Possible values include: debug, info, notice, warn, error, crit,
        # alert, emerg.
        LogLevel warn

        CustomLog ${APACHE_LOG_DIR}/access.log combined

    Alias /doc/ "/usr/share/doc/"
    <Directory "/usr/share/doc/">
        Options Indexes MultiViews FollowSymLinks
        AllowOverride None
        Order deny,allow
        Deny from all
        Allow from 127.0.0.0/255.0.0.0 ::1/128
    </Directory>

</VirtualHost>

Добавим новый сайт:

a2ensite stat.site.my

И перезапустим апач:

/etc/init.d/apache2 reload

Все. Теперь набираем в браузере наш адрес stat.site.my и наблюдаем за системой.

вторник, 28 июня 2011 г.

Установка и настройка Apache + PHP + MySQL на FreeBSD

 

 

Еще один вариант настройки Web-сервера теперь уже для FreeBSD.

Будем ставить из портов.

Apache:

cd /usr/ports/www/apache22
make&&make install&&make clean

PHP:

cd /usr/ports/lang/php5
make&&make install&&make clean

cd /usr/ports/lang/php5-extensions/
make&&make install&&make clean

MySQL:

cd /usr/ports/databases/mysql51-server
make&&make install&&make clean

Для запуска Apache и MySQL при старте системы добавим в файл /etc/rc.conf строки:

apache22_enable=”YES”
mysql_enable=”YES”

Запустим Apache и MySQL:

/usr/local/etc/rc.d/mysql-server start
apachectl start

Создадим пароль для пользователя root в базе данных:

mysqladmin -u root password 'мегасложныйпароль'

Перейдем к настройке.

Открываем для редактирования файл конфигурации Apache /usr/local/etc/apache22/httpd.conf, ищем строки начинающиеся с AddType и дописываем туда:

AddType application/x-httpd-php    .php
AddType application/x-httpd-php-sourse    .phps

Это нужно что бы сервер знал что делать с файлами с расширениями php и phps.

Также добавляем имя нашего хоста:

ServerName localhost

Что бы проверить работоспособность Web-сервера отрываем браузер и в адресной строке набираем localhost, если появилась надпись “It works!”, значить все нормально.

Проверим работу php. В каталоге /usr/local/www/apache22/data/ создадим файл index.php со следующим содержимым:

<?phpinfo()?>

В адресной строке браузера набираем localhost/index.php, долна отобразится страница с информацией о php.

По умолчанию на нашем сервере лежит один сайт, файлы которого находятся в папке /usr/local/www/apache22/data/.  Если же вам мало одного то придется настроить добавление виртуальных хостов.

Наши сайты будут лежать в папке /usr/local/www/, поэтому нужно сделать доступной эту папку для нашего сервера. Для этого добавим в конец файла http.conf следующие строки:

<Directory "/usr/local/www/*">
    Options Indexes FollowSymLinks
    AllowOverride None
    Order allow,deny
    Allow from all
</Directory>

Также добавим строку:

NameVirtualHost *:80

и

Include etc/apache22/sites-enabled/*

Последняя нужна для того что бы указать серверу папку с настройками виртуальных хостов. Естественно эту папку нужно создать:

mkdir /usr/local/etc/apache22/sites-enabled

В ней создадим дефолтный файл настроек:

<VirtualHost *:80>
    ServerName example.com
    DocumentRoot /usr/local/www/example.com
</VirtualHost>

Для добавления нового хоста теперь достаточно лишь скопировать этот файл с именем нашего добавляемого сайта, заменить example.com на новое имя и создать директорию в которой будут лежать файлы сайта, с аналогичным именем в папке /usr/local/www/.

То есть если мы добавляем сайт bestsite.com то у нас должна появиться папка /usr/local/www/bestsite.com и файл /usr/local/etc/apache22/sites-enabled/bestsite.com следующего содержания:

<VirtualHost *:80>
    ServerName bestsite.com
    DocumentRoot /usr/local/www/bestsite.com
</VirtualHost>

После этого перезапускаем Apache:

apachectl restart

и можем заходить на bestsite.com.

Процесс добавления/удаления виртуальных хостов можно автоматизировать. Следующий скрипт предназначен для этого:

#!/bin/sh

#Add function
add_site()
        {
        echo "Creating new site"
        sleep 1
        echo -n  "Please, enter the name of site:"
       
        while read SITE
        do
        if
            [ "$SITE" != "" ]
        then
            DIR="/usr/local/www/$SITE"
            FILE="/usr/local/etc/apache22/sites-enabled/$SITE"
            if
                [ -d $DIR ]
            then
                echo  "Site with that name already exists"
                echo  "Please try again with correct name"
                exit 1
            else
                touch $FILE
                echo  "Creating settings file $FILE"
                sleep 1
                echo "<VirtualHost *:80>
    ServerName $SITE
    DocumentRoot $DIR
</VirtualHost>" >>$FILE

                echo "Creating directory for site $DIR"
                sleep 1
                mkdir -p $DIR
                chmod -R 777 $DIR
                echo "127.0.0.1 $SITE" >> /etc/hosts
                echo  "Restarting Apache"
                sleep 1
                apachectl restart
                echo  "Congratulations, the site $SITE has been successfully added"
                exit 0
            fi
        fi
        echo "You have not entered a name"
        echo -n "Please, enter the name of the site or CTRL+Z to exit:"
        done
        }

#function for removing
rm_site()
        {
        echo "Removing site"
        echo -n "Please, enter the site name:"
        while read SITE
        do
        if
            [ "$SITE" != "" ]
        then
            DIR="/usr/local/www/$SITE"
            FILE="/usr/local/etc/apache22/sites-enabled/$SITE"
            if
                [ -d $DIR ]
            then
                echo "Removing site $SITE"
                sleep 1
                rm -r $DIR
                rm $FILE
                 sed -i "" '/127.0.0.1 $SITE/d' /etc/hosts
                echo  "Restarting Apache"
                sleep 1
                apachectl restart
                echo "Congratulations, the site $SITE has been successfully removed"
                exit 0
            else
                echo "Site $SITE not on the server"
            fi
        fi
        echo "You have not entered a name"
        echo -n "Please, enter the name of the site or CTRL+Z to exit:"
        done
        }

#check user rights
if
    [ $(whoami) != "root" ]
then
    echo 'You must be root.'
    exit 1
fi

#deletion-addition process
if
    [ "$1" = "" ]
then
    echo "Invalid option"
    echo  "Use 'add' or 'remove' option"
    exit 1
else
    case $1 in
        add)
        add_site
        ;;
        rm)
        rm_site
        ;;
    esac

Сохраняем его. Называем наш файл site, делаем исполняемым и помещаем в папку /usr/bin.

Запускать его нужно с параметрами:

site add – для добавления сайта;

site rm – для удаления.