Архивы по Категориям: linux - Page 3

ubuntu почтовый сервер ( ubuntu mail server )

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

Во первых, задайте себе вопрос а насколько он нужен вам?

если у вас до 50ти ящиков то очень рекомендую воспользоваться почтой от гугла на своём домене, я уже писал об этом способе.

Экономия времени и нервов вам обеспечена!.

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

Первый Postfix + Dovecot + MYSQL
Вариант 2 более простой (postfix (smtp), sasl2 (Авторизция) cyrus-pop3d )

Поехали
Интерпритатора будет два, обычная командная строка (bash) и mysql

[cc lang=”bash”]bash:$>

mysql: mysql>[/cc]

Также все команды будут от root (обычно я запускаю sudo mc и жму ctrl+o и так получается консоль от root)

Устанавливаем необходимые пакеты, также ставим phpmyadmin для более удобного управления базой + вэб интерфейс почты
[cc lang=”bash”]aptitude install postfix-mysql mysql-server dovecot-pop3d dovecot-imapd openssl phpmyadmin squirrelmail[/cc]

Создаём БД + таблицы можно как и из консоли, так и из phpmyadmin
Мне удобнее из phpmyadmin просто вводя запросы
phpmyadmin

[cc lang=”mysql”] mysql>
create database mailserver;
mysql>
grant all on mailserver.* to mailuser@localhost identified by ‘mailuserpasswd’;
exit[/cc]

Затем создайте таблицы в базе данных

[cc lang=”mysql”] mysql>
CREATE TABLE `virtual_domains` (
id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
name VARCHAR(50) NOT NULL
) ENGINE = InnoDB;
mysql>
CREATE TABLE `virtual_users` (
id int(11) NOT NULL AUTO_INCREMENT PRIMARY KEY,
domain_id INT(11) NOT NULL,
user VARCHAR(40) NOT NULL,
password VARCHAR(32) NOT NULL,
CONSTRAINT UNIQUE_EMAIL UNIQUE (domain_id,user),
FOREIGN KEY (domain_id) REFERENCES virtual_domains(id) ON DELETE CASCADE) ENGINE = InnoDB;
mysql>
CREATE TABLE `virtual_aliases` (
id int(11) NOT NULL AUTO_INCREMENT PRIMARY KEY,
domain_id INT(11) NOT NULL,
source VARCHAR(40) NOT NULL,
destination VARCHAR(80) NOT NULL,
FOREIGN KEY (domain_id) REFERENCES virtual_domains(id) ON DELETE CASCADE
) ENGINE = InnoDB;[/cc]

Создаём файлы конфигурации для Postfix’a с информацией о базе данных.

[cc lang=”bash”]touch /etc/postfix/mysql-virtual-mailbox-domains.cf
[/cc]
Вот с таким содержанием

[cc lang=”bash”] user = mailuser
password = mailuserpasswd
hosts = 127.0.0.1
dbname = mailserver
query = SELECT 1 FROM virtual_domains WHERE name=’%s'[/cc]

Этот запрос выбирает виртуальные домены (да да наш почтовый сервер будет работать на несколько доменов как реальных так и виртуальных)

Применим конфигурацию postfix
[cc lang=”bash”]postconf -e virtual_mailbox_domains=mysql:/etc/postfix/mysql-virtual-mailbox-domains.cf[/cc]

Добавим в БД запись о первом виртуальном сервере example.com (не забываем поставить свой)

[cc lang=”mysql”] $>
mysql -p mailserver
mysql>
INSERT INTO virtual_domains (id, name) VALUES (1, ‘example.com’);
exit[/cc]

Проверим всё ли верно мы сделали

[cc lang=”bash”] postmap -q example.com mysql:/etc/postfix/mysql-virtual-mailbox-domains.cf[/cc]

Появится цифра 1 – значит всё сделано правильно.

Теперь создаём пользователей, за них будет отвечать отдельная группа. создаём её

[cc lang=”bash”]$>
groupadd -g 5000 vmail
useradd -g vmail -u 5000 vmail -d /home/vmail -m
[/cc]

Примиряем изменения
[cc lang=”bash”]$>
postconf -e virtual_uid_maps=static:5000
$>
postconf -e virtual_gid_maps=static:5000[/cc]

Создадим тестовый почтовый ящик, например john@example.com с паролем johnpasswd

[cc lang=”mysql”] mysql>
INSERT INTO virtual_users (id, domain_id, user, password)
VALUES (1, 1, ‘john’, MD5(‘johnpasswd’));[/cc]

Потом создаём view в базе данных.

[cc lang=”mysql”] mysql>
CREATE VIEW view_users AS
SELECT CONCAT(virtual_users.user, ‘@’, virtual_domains.name) AS email,
virtual_users.password
FROM virtual_users
LEFT JOIN virtual_domains ON virtual_users.domain_id=virtual_domains.id;
[/cc]

Проверим результат

[cc lang=”mysql”] mysql>
SELECT * FROM view_users;
[/cc]
Вы должны увидеть это:

[cc lang=”bash”]+——————+———————————-+
| email | password |
+——————+———————————-+
| john@example.com | 14123123123243372b1cb9275e6dd |
+——————+———————————-+[/cc]

Создадим файл конфигурации для Postfix’a в котором укажем данные для работы с почтовыми ящиками наших пользователей
[cc lang=”bash”]touch /etc/postfix/mysql-virtual-mailbox-maps.cf[/cc]

С содержанием

[cc lang=”bash”] user = mailuser
password = mailuserpasswd
hosts = 127.0.0.1
dbname = mailserver
query = SELECT 1 FROM view_users WHERE email=’%s'[/cc]

Применим изменения

[cc lang=”bash”] $>
postconf -e virtual_mailbox_maps=mysql:/etc/postfix/mysql-virtual-mailbox-maps.cf
[/cc]

Проверьте результат командой

[cc lang=”bash”]postmap -q john@example.com mysql:/etc/postfix/mysql-virtual-mailbox-maps.cf[/cc]

Вы должны увидеть цифру 1 если все правильно настроено.

Если вам не нужны алиасы, можете пропустить этот пункт, но я редко такое вижу на практике

они нужны для пересылки почты с одного ящика на другой, или с нескольких на один

Добавим в базу данных тестовый альяс для нашего польователя john@example.com, вся почта пришедшая на его ящик будет дополнительно пересылаться на ящик jmiller@gmail.com

[cc lang=”mysql”] INSERT INTO virtual_aliases (id, domain_id, source, destination)
VALUES (1, 1, ‘john’, ‘john@example.com’),
(2, 1, ‘john’, ‘jmiller@gmail.com’);
[/cc]

Создадим view для альясов по аналогии с view для пользователей

[cc lang=”mysql”] CREATE VIEW view_aliases AS
SELECT CONCAT(virtual_aliases.source, ‘@’, virtual_domains.name) AS email,
destination
FROM virtual_aliases
LEFT JOIN virtual_domains ON virtual_aliases.domain_id=virtual_domains.id;[/cc]

Проверим результат

[cc lang=”mysql”] SELECT * FROM view_aliases;[/cc]

Вы должны увидеть это

[cc lang=”mysql”]+——————+——————-+
| email | destination |
+——————+——————-+
| john@example.com | john@example.com |
| john@example.com | jmiller@gmail.com |
+——————+——————-+[/cc]

[cc lang=”bash”]touch /etc/postfix/mysql-virtual-alias-maps.cf[/cc]
С содержанием
[cc lang=”bash”]
user = mailuser
password = mailuserpasswd
hosts = 127.0.0.1
dbname = mailserver
query = SELECT destination FROM view_aliases WHERE email=’%s’
[/cc]
Проверим правильность настроек

[cc lang=”bash”] postmap -q john@example.com mysql:/etc/postfix/mysql-virtual-alias-maps.cf[/cc]

Вы увидите это
[cc lang=”bash”]john@example.com,jmiller@gmail.com[/cc]

[cc lang=”bash”]touch /etc/postfix/mysql-email2email.cf[/cc]
впишем в него

[cc lang=”bash”] user = mailuser
password = mailuserpasswd
hosts = 127.0.0.1
dbname = mailserver
query = SELECT email FROM view_users WHERE email=’%s'[/cc]

Запишем настройки в главный файл конфига Postfix

[cc lang=”bash”] $>
postconf -e virtual_alias_maps=mysql:/etc/postfix/mysql-virtual-alias-maps.cf,mysql:/etc/postfix/mysql-email2email.cf
[/cc]

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

[cc lang=”bash”]
chgrp postfix /etc/postfix/mysql-*.cf
chmod u=rw,g=r,o= /etc/postfix/mysql-*.cf[/cc]

Далее настроим dovecot в качестве локального агента доставки писем, добавим в конец файла /etc/postfix/master.cf

[cc lang=”bash”] dovecot unix – n n – – pipe
flags=DRhu user=vmail:vmail argv=/usr/lib/dovecot/deliver -d ${recipient}
[/cc]

перезапускаем postfix
[cc lang=”bash”]postfix reload[/cc]
И добавляем информацию о виртуальном транспорте в главный конфиг Postfix

[cc lang=”bash”] postconf -e virtual_transport=dovecot
postconf -e dovecot_destination_recipient_limit=1
[/cc]

Перейдем к настройкам dovecot, все файлы его конфигурации хранятся в папке /etc/dovecot, начнем настройку с файла /etc/dovecot/dovecot.conf

Найдите строку protocols и смените на

[cc lang=”bash”] protocols = imap imaps pop3 pop3s[/cc]

Так же изменяем строку disable_plaintext_auth до состояния disable_plaintext_auth = no

также меняем параметр mail_location

[cc lang=”bash”] mail_location = maildir:/home/vmail/%d/%n[/cc]

Найдите строку namespace private и измените до

[cc lang=”bash”] namespace private {
separator = .
prefix = INBOX.
inbox = yes
}
[/cc]

Перейдите к секции «auth default» и отредактируйте разрешенные механизмы аутентификации

[cc lang=”bash”] mechanisms = plain login[/cc]

В этой же секции измените

[cc lang=”bash”] passdb sql {
args = /etc/dovecot/dovecot-sql.conf
}
[/cc]
Меняем параметр userdb static

[cc lang=”bash”] userdb static {
args = uid=5000 gid=5000 home=/home/vmail/%d/%n allow_all_users=yes
}
[/cc]
Переходим к секции socket listen сдесь мы укажем файлы сокета для аутентификации dovecot

[cc lang=”bash”] socket listen {
master {
path = /var/run/dovecot/auth-master
mode = 0600
user = vmail
}
client {
path = /var/spool/postfix/private/auth
mode = 0660
user = postfix
group = postfix
}
}
[/cc]

Переходим к секции protocol lda, не забудьте сменить адрес постмастера на реальный

[cc lang=”bash”] protocol lda {
log_path = /home/vmail/dovecot-deliver.log
auth_socket_path = /var/run/dovecot/auth-master
postmaster_address = postmaster@example.com
mail_plugins = cmusieve
global_script_path = /home/vmail/globalsieverc
}
[/cc]
На этом файл можно сохранить.
Далее редактируем файл /etc/dovecot/dovecot-sql.conf
Делаем как ниже

[cc lang=”bash”] driver = mysql
connect = host=127.0.0.1 dbname=mailserver user=mailuser password=mailuserpasswd
default_pass_scheme = PLAIN-MD5
password_query = SELECT email as user, password FROM view_users WHERE email=’%u’;[/cc]

Перезапускаем dovecot
[cc lang=”bash”] /etc/init.d/dovecot restart[/cc] и смотрим лог файл /var/log/mail.log, там вы должны увидеть

[cc lang=”bash”] dovecot: Dovecot v1.0.rc15 starting up
dovecot: auth-worker(default): mysql: Connected to 127.0.0.1 (mymailserver)
[/cc]

Правим права доступа к файлам конфигурации dovecot

[cc lang=”bash”] chgrp vmail /etc/dovecot/dovecot.conf
chmod g+r /etc/dovecot/dovecot.conf
[/cc]

Настроим TLS/SSL

[cc lang=”bash”] openssl req -new -x509 -days 3650 -nodes -out /etc/ssl/certs/dovecot.pem \
-keyout /etc/ssl/private/dovecot.pem
[/cc]

Ответьте на несколько вопросов и сертификат будет создан, не забудьте указать правльно все параметры вместо примеров привеленных ниже

[cc lang=”bash”] Generating a 1024 bit RSA private key
………++++++
……………………….++++++
writing new private key to ‘/etc/ssl/certs/dovecot.pem’
—–
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]:RU
State or Province Name (full name) [Some-State]:Russia
Locality Name (eg, city) []:Russia
Organization Name (eg, company) [Internet Widgits Pty Ltd]:example.com
Organizational Unit Name (eg, section) []:
Common Name (eg, YOUR name) []:mail.example.com
Email Address []:postmaster@example.com
[/cc]

Выставим права доступа на файл

[cc lang=”bash”] chmod o= /etc/ssl/private/dovecot.pem[/cc]

Создадим еще один сертификат по аналогии с предыдущим

[cc lang=”bash”] openssl req -new -x509 -days 3650 -nodes -out /etc/ssl/certs/postfix.pem \
-keyout /etc/ssl/private/postfix.pem
[/cc]
Сменим права доступа

[cc lang=”bash”] chmod o= /etc/ssl/private/postfix.pem[/cc]

Вносим изменения в конфиг Postfix’a

[cc lang=”bash”] postconf -e smtpd_tls_cert_file=/etc/ssl/certs/postfix.pem
postconf -e smtpd_tls_key_file=/etc/ssl/private/postfix.pem
postconf -e smtpd_use_tls=yes
[/cc]

Теперь настроим аутентификацию SMTP, не забываем сменить примеры на реальные адреса сетей! В примере используется сеть 192.168.50.0/24 ей разрешено отправлятиь почту без SMTP авторизации.

[cc lang=”bash”] postconf -e mynetworks=192.168.50.0/24
postconf -e smtpd_sasl_type=dovecot
postconf -e smtpd_sasl_path=private/auth
postconf -e smtpd_sasl_auth_enable=yes
postconf -e smtpd_recipient_restrictions=permit_mynetworks,permit_sasl_authenticated,reject_unauth_destination
[/cc]

Редактируем файл /etc/postfix/main.cf изменив параметр размера почтового ящика например на 10 мегабайт

[cc lang=”bash”] mailbox_size_limit = 102400[/cc]

На этом почти всё 🙂
Перезапускаем postfix и dovecot
/etc/init.d/postfix restart
/etc/init.d/dovecot restart

Проверим, всё и хорошо
[cc lang=”bash”]postfix check[/cc]
команда должна отдать пустой результат.

Все ошибки и прочие события из жизни вашего почтовика вы можете найти в логах
[cc lang=”bash”]/var/log/mail.log
/var/log/mail.err
/var/log/mail.warn
/var/log/mail.info[/cc]

Ах забыл совсем :)) у нас же есть ещё вэб морда для почты и завётся она
Настройка Squirrelmail

[cc lang=”bash”]squirrelmail-configure[/cc]
Ответим на вопросы, введя данные, что использовали при настройке сервера
Теперь привяжем к апачу
[cc lang=”bash”]cp /etc/squirrelmail/apache.conf /etc/apache2/sites-available/squirrelmail
ln -s /etc/apache2/sites-available/squirrelmail /etc/apache2/sites-enabled/squirrelmail
a2ensite squirrelmail
[/cc]
Перезапустим апач
[cc lang=”bash”]/etc/init.d/apache2 force-reload[/cc]

Ну и всё готово 🙂
Заходим на
[cc lang=”bash”]http://ip_servera/squirrelmail[/cc]
вводим логин пароль (логин вводится целиком с доменом)
squirrelmail

Вариант 2 более простой (postfix (smtp), sasl2 (Авторизция) cyrus-pop3d )

Стами postfix (smtp), sasl2 (Авторизция) cyrus-pop3d (POP3 демон)
[cc lang=”bash”]apt-get install postfix libsasl2-2 libsasl2-modules sasl2-bin cyrus-imapd-2.2 cyrus-pop3d-2.2 cyrus-admin-2.2[/cc]
Во время первоначальной настройки postfix укажите конфигурацию для Интернет-сайта (Internet Site).
На вопрос об имени почтового сервера-оставьте вариант по-умолчанию или укажите свой. В нашем случае это было domain.ru

Настроим сервер авторизации saslauthd на использование базы данных паролей sasldb2.
Для этого отредактируем файл /etc/default/saslauthd:
[cc lang=”bash”]START=yes
MECHANISMS=”sasldb”[/cc]
Запускаем сервис
[cc lang=”bash”]/etc/init.d/saslauthd start[/cc]
проверим работает ли он, но для начала необходимо добавить хотя бы одного пользователя.
[cc lang=”bash”]proxy:~# saslpasswd2 test
Password:
Again (for verification):[/cc]
смотрим список пользователей
[cc lang=”bash”]proxy:~# sasldblistusers2
test@proxy: userPassword[/cc]
Пробуем авторизироваться
[cc lang=”bash”]proxy:~# testsaslauthd -u test -p test[/cc]
На что получаем ответ
[cc lang=”bash”]0: OK “Success.[/cc]
У почтового сервера postfix есть одна особенность – после запуска он работает в chroot окружении, которое находится в папке /var/spool/postfix/

Учитывая то, что для авторизации пользователей postfix будет использоваться демон saslauthd, нам нужно перенести его socket в рабочую директорию нашего сервера /var/spool/postfix/. Самый простой способ сделать это заключается в монтировании в нужную папку директории с уже созданным сокетом демона saslauthd.

Делается это редактированием файла /etc/fstab.
[cc lang=”bash”]/var/run/saslauthd /var/spool/postfix/var/run/saslauthd none rw,bind 0 0[/cc]
Не забудьте поставить [Enter] после последней строки.
Создаём каталог и монтируем.
[cc lang=”bash”]mkdir -p /var/spool/postfix/var/run/saslauthd
mount /var/run/saslauthd[/cc]
Настраиваем postfix на работу с sasl авторизацией
Добавим в /etc/postfix/main.cf[cc lang=”bash”]
smtpd_sasl_local_domain =
smtpd_sasl_auth_enable = yes
smtpd_sasl_security_options = noanonymous
broken_sasl_auth_clients = yes
smtpd_recipient_restrictions = permit_mynetworks, permit_sasl_authenticated, reject_unauth_destination
smtpd_sasl_authenticated_header = yes
smtpd_sasl_application_name = smtpd[/cc]
запретим отсылать почту через наш SMTP шлюз без авторизации. Для этого создадим файл /etc/postfix/sasl/smtpd.conf со следующим содержимым.
[cc lang=”bash”]pwcheck_method: saslauthd
mech_list: PLAIN LOGIN[/cc]
Перезапустим наш postfix сервер и просмотрим следующие файлы на предмет ошибок:
[cc lang=”bash”]/etc/init.d/postfix restart
tail /var/log/mail.err
tail /var/log/mail.info
tail /var/log/mail.warn
tail /var/log/mail.log[/cc]
Если все чисто, сухо и гладко – обратимся к утилите telnet, для того, чтобы подключиться к нашему серверу.
[cc lang=”bash”]root@proxy:/var/log# telnet localhost 25
Trying 127.0.0.1…
Connected to localhost.
Escape character is ‘^]’.
220 krasfun ESMTP Postfix (Ubuntu)
EHLO www.ru
250-krasfun
250-PIPELINING
250-SIZE 10240000
250-VRFY
250-ETRN
250-STARTTLS
250-AUTH PLAIN LOGIN
250-AUTH=PLAIN LOGIN
250-ENHANCEDSTATUSCODES
250-8BITMIME
250 DSN
quit
221 2.0.0 Bye
Connection closed by foreign host.
root@proxy:/var/log#[/cc]
Если у вас нечто похожее – продолжаем

Для того, чтобы “подружить” saslauthd и postfix необходимо выполнить следующее:
[cc lang=”bash”]adduser postfix sasl[/cc]
Cyrus – это мощный набор POP3/NNTP/IMAP и некоторых других демонов для создания полноценных сервисов работы с электронной почтой.

Отредактируем файл /etc/imapd.conf
[cc lang=”bash”]admins: cyrus
allowplaintext: yes
sasl_mech_list: PLAIN
sasl_pwcheck_method: saslauthd auxprop
sasl_auxprop_plugin: sasldb[/cc]
Обратите внимание, что cyrus так же, как и saslauthd, придется взаимодействовать с postfix, поэтому их нужно сделать доступными друг другу. Воспользуемся уже известным механизмом:
/etc/fstab :
[cc lang=”bash”]/var/run/cyrus /var/spool/postfix/var/run/cyrus none rw,bind 0 0[/cc]
создаём каталоги для cyrus.
[cc lang=”bash”]mkdir -p /var/spool/postfix/var/run/saslauthd
mkdir -p /var/spool/postfix/var/run/cyrus
mount /var/spool/postfix/var/run/saslauthd
mount /var/spool/postfix/var/run/cyrus[/cc]
Монтируем
[cc lang=”bash”]mount /var/run/cyrus[/cc]
предоставим возможность cyrus забирать почту у postfix и отпалять почту на куда угодно. Отредактируем файл /etc/postfix/main.cf:
[cc lang=”bash”]mailbox_transport = lmtp:unix:/var/run/cyrus/socket/lmtp
local_recipient_maps =[/cc]
Добавим группу и добавим в неё постфикс
[cc lang=”bash”]addgroup lmtp
adduser postfix lmtp[/cc]
Дальше 2 команды
[cc lang=”bash”]dpkg-statoverride –remove /var/run/cyrus/socket
dpkg-statoverride –force –update –add cyrus lmtp 750 /var/run/cyrus/socket[/cc]
Добавим пользователя cyrus в нашу базу учетных записей:
[cc lang=”bash”]saslpasswd2 -c cyrus[/cc]
Введите пароль, когда вас об этом попросят, и перезапустим наши демоны:
[cc lang=”bash”]/etc/init.d/postfix start
/etc/init.d/cyrus2.2 restart
/etc/init.d/saslauthd restart[/cc]
Добавим почтового пользователя например saber и создадим ему каталоги
[cc lang=”bash”]saslpasswd2 –c saber
cyradm localhost –user cyrus
localhost> cm user.saber
localhost> cm user.saber.INBOX
localhost> cm user.saber.Sent
localhost> cm user.saber.Draft
localhost> cm user.saber.Trash
[/cc]

UPD1 01.02.2013 Эта часть,что выше, устарела немного и пользователь создаётся другим путём, я дословно не помню но примерно так
[cc lang=”bash”]saslpasswd2 saber

cyradm
login cyrus
localhost> cm user.saber
localhost> cm user.saber.INBOX
localhost> cm user.saber.Sent
localhost> cm user.saber.Draft
localhost> cm user.saber.Trash
[/cc]
Вот как-то так я добалял пользователей недавно

На этом всё, можно пользоваться, рекомендую ещё настроить шифрование, но мне оно не нужно было 😉

Настройка клиента
Буду на основе Аутглюк экспресс.
Добавляем почтовый акк, в общем всё как обычно КРОМЕ
не ставим галочку
“Использовать безопасную бла бла SPA”

и ставим галочку ниже Сервер исходящей почты “проверка подлинности пользователя”
И всё можно пользоваться 🙂

Резервное копирование данных на сервере ( backup mysql)

часть первая mysql
Важная часть стабильности жизни сервера.

создаём каталог для бэкапа например
/var/backup
в нём будет находится скрипт бэкапа и подкаталоги для различных баз.
у меня на сервере несколько сайтов для каждого сайта я создам отдельные подкаталоги
/var/backup/site1
/var/backup/site2
в них будут находится непосредственно бэкапы

далее создаём скрипт бэкапа mysql сервера.

#touch database.sh

делаем файл исполняемым

#chmod +x database.sh

первой строкой в файле указываем исполнять данный файл интерпретатором bash

#!/bin/bash

далее делаем дап

mysqldump -u root -pMyPass database_name > site1/database_name.sql

где
-u root имя пользователя БД
-p Указывает на пароль пользователя root в данном примере MyPass
database_name – имя базы данных
> site1/database_name.sql положить дам в данный файл.

Далее надо упаковать данный дамп и указать дату его создания

7z a -t7z site1/$(date +%d_%b_%Y)_database_name.sql.7z site1/database_name.sql

7zip упаковывает файл site1/database_name.sql в каталоге site1 с именем сегодняшняя_дата_database_name.sql.7z

$(date +%d_%b_%Y) – задаётся формат даты. в данном примере имя файла будет выглядеть так:
14_Янв_2009_database_name.sql.7z

Теперь можно удалить временный файл дампа, ведь есть его архив :))

find ./ -name “*.sql” -exec rm {} \;

утилита find находит все файлы в данном каталоге и подкаталогах соответствующие формату “*.sql” и удаляет их.
в итоге в каталогах остаются лишь архивные копии дампов.

теперь осталось добавить данный скрипт на авто запуск по расписанию в крон.

редактируем список задач крона

crontab -e

дописываем наш скрипт
00 01 * * * /var/backup/database.sh

выходим с сохранением
Ctrl+X
и подтверждаем наши намерения Y

В итоге каждый день в час ночи будет запускаться скрипт резервного копирования баз данных mysql

Какой Linux выбрать?

Наверное каждый ставил\ставит себя перед выбором дистрибутива linux.

Когда-то я установил ASP Linux 7.3
этот дистрибутив оставил самые тёплые впечатления о linux, удобно, многое работает из коробки.
потом я хотел идти к первоисточнику и установил fedora 2 но она конфликтовала с моей мамой asus p4p800 и я искаль альтернативу, так я попал на мандрейк (ныне мандрива) (ух потрудился чтоб найти её на местной барахолке)
У мандривы понравилась на тот момент панель управления, после я добрался до RedHat 4 AS
это мега дистрибутив, на котором я прожил больше года, многое работает из коробки, но если надо что-то поставить, всё…. когда мне надоел секс с зависимостями я хотел что-то принципиально нового, и тут подвернулась gentoo. после RedHat, гента казась мне верхом счастья юношеского, я ставил её везде, на серверы доверенные мне, но радость была не долгой, время на компиляцию (например php) затрачивалось невероятно много времени (минут 30-40) при этом если собрал что-то не так иди заного компиль… а это всё простои сервера.
гента также оставила приятные воспоминания, о производительности, о гибкости конфигурирования, наверное ни что не сравнится с ней в этом плане.

Дальше была Ubuntu она сочетала в себе почти все мои мечты о linux дистрибутиве. для изучения поставил на конторскую проксю, снеся от туда венду и началось изучение 🙂
система установки приложений радовала, конечно в чём-то уступала системе gentoo, но для повседневной жизни самое оно.
Установка софта занимает пару секунд, и то тратится на скачивание пакета с инета, работает с коробки всё, и не только всё а даже больше 🙂
просто поставил и наслаждаешся работой.
потом убунта пошла уже на корпаративный HP сервер, на котором стоит уже больше года и на отлично выполняет свои функции.
также убунта трудится и на ещё одном публичном моём сервере, тот что обеспечивает работу сайта www.krasfun.ru

документации на ubuntu было мало 🙂 но пробились

Создать раздел linux

просмотр linux разделов

[cc lang=”bash”]root@SERVER:/# fdisk -l
Disk /dev/sda: 499.9 GB, 499989348352 bytes
255 heads, 63 sectors/track, 60786 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Disk identifier: 0x0000849c

Device Boot Start End Blocks Id System
/dev/sda1 * 1 59650 479138593+ 83 Linux
/dev/sda2 59651 60786 9124920 5 Extended
/dev/sda5 59651 60786 9124888+ 82 Linux swap / Solaris

Disk /dev/sdb: 1499.9 GB, 1499989016576 bytes
255 heads, 63 sectors/track, 182363 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Disk identifier: 0x00093e0c[/cc]
Создание linux раздела
[cc lang=”bash”]#fdisk /dev/sdb[/cc]
далее жмём n
далее жирным что вводил
[cc lang=”bash”]Command action
e extended
p primary partition (1-4)
[/cc]
p
[cc lang=”bash”]
Partition number (1-4):1
First cylinder (1-182363, default 1):
Using default value 1
Last cylinder or +size or +sizeM or +sizeK (1-182363, default 182363):
Using default value 182363[/cc]
Сохраняем и выходим
[cc lang=”bash”]Command (m for help): w

The partition table has been altered!

Calling ioctl() to re-read partition table.
Syncing disks.[/cc]
раздел sdb1 создан. далее форматируем его.
[cc lang=”bash”]# mkfs -t ext3 /dev/sdb1
mke2fs 1.40.2 (12-Jul-2007)
Filesystem label=
OS type: Linux
Block size=4096 (log=2)
Fragment size=4096 (log=2)
183107584 inodes, 366207691 blocks
18310384 blocks (5.00%) reserved for the super user
First data block=0
Maximum filesystem blocks=0
11176 block groups
32768 blocks per group, 32768 fragments per group
16384 inodes per group
Superblock backups stored on blocks:
32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632, 2654208,
4096000, 7962624, 11239424, 20480000, 23887872, 71663616, 78675968,
102400000, 214990848

Writing inode tables: done
Creating journal (32768 blocks): done
Writing superblocks and filesystem accounting information: done

This filesystem will be automatically checked every 26 mounts or
180 days, whichever comes first. Use tune2fs -c or -i to override.[/cc]
Монтируем и вперёд 🙂

Оптимизация web-сервера: eAccelerator

продолжаю облегчать жизнь серверу.
eAccelerator – все мы знаем что при обращении к файлу пхп вэб сервер компилирует пхп файл в некую программу, которая в дальнейшем, что-то делает и выдаёт нам результат в виде html, ну и кто-то задумался(может отбукился 🙂 ): “а зачем постоянно делать одну и туже работу – компилировать при каждом обращении один и тот же файл”, и вот eAccelerator берёт откомпилированный php файл и складывает во временную папку и когда пользователь обращается к очередному пхп файлу в дело вступает eAccelerator, который проверяет есть ли уже “готовый” запрашиваемый файл, если находит готовый то сразу запускает его, тем самым облегчает жизнь серверу (значительно снижает нагрузку на процессор) например у меня нагрузка в часы пик с 70% упала до 7-25%

ставим php5-dev

apt-get install php5-dev

берём свежий дистрибутив с http://eaccelerator.net/
распаковываем, заходим в извлечённый каталог

phpize

./configure –enable-eaccelerator=shared

make

make install

cd /etc/php5/conf.d

Создаём конфигурационный файл для акселератора

touch eacclerator.ini

вставляем в него содержимое

zend_extension = “/usr/lib/php5/20060613+lfs/eaccelerator.so”
eaccelerator.shm_size = “0”
eaccelerator.cache_dir = “/var/cache/eaccelerator”
eaccelerator.enable = “1”
eaccelerator.optimizer = “1”
eaccelerator.check_mtime = “1”
eaccelerator.debug = “0”
eaccelerator.filter = “”
eaccelerator.shm_max = “0”
eaccelerator.shm_ttl = “0”
eaccelerator.shm_prune_period = “0”
eaccelerator.shm_only = “0”
eaccelerator.compress = “1”
eaccelerator.compress_level = “7”
eaccelerator.allowed_admin_path = “/var/www/”

создаю каталог для кэша

mkdir /var/cache/eaccelerator

chmod 777 /var/cache/eaccelerator

теперь можно перезапустить apache

для контроля над тех процессом есть файл control.php
в нём находим логин пароль и перекидываем в нужную нам папку на территории вэб сервера ну и заходим 🙂