По поводу такого праздника как день программиста существует масса домыслов. Потому что день программиста в году не один. Вообще-то, каждый рабочий день (особенно пятница) является днём программиста. Но всё же вот более-менее полный список подходящих дат, отмечаемых энтузиастами в разных странах.
14 февраля. День запуска компьютера ENIAC (1946)
4 апреля. День Сети. 4.04 можно прочитать как 404 - номер самой популярной в Интернет ошибки протокола HTTP ("Страница не найдена"). В католической церкви, кроме того, 4 апреля - день святого Исидора, неофициально считающегося покровителем компьютеров и Интернета. Исидор был, возможно, первым энциклопедистом в мире (20-томная Etymologiae).
7 апреля. Иногда празднуется, как День рождения Рунета. В этот день в 1994 г. был зарегистрирован российский домен ru.
22 апреля. Прежний советский код специальности "программист" был именно 2204 ("Программное обеспечение вычислительной техники и автоматизированных систем").
17 мая. Этот день Генеральная Ассамблея ООН утвердила как день информационного сообщества (2006). В настоящее время официально называется всемирным днём электросвязи и информационного общества.
19 июля. Неофициальная дата написания первой программы (1843). Написала её Ада Лавлейс (см. 10 декабря).
Последняя пятница июля. День системного администратора - придуманный американскими сисадминами неофициальный праздник.
Первая пятница сентября. Неофициальный "День компьютерщика", придуманный издательским домом "Компьютерра" (1996). С праздником связан ритуал "чистой пятницы" - то есть, удаления ненужных файлов.
256-й день года (13 сентября в обычные годы, 12 сентября в високосные). Официально объявлен днём программиста указом президента Д. Медведева (2009)
30 сентября. День интернета, известный только в России. Приурочен к 1-й "переписи" населения Рунета (1998, придумано IT Infoart Stars).
4 декабря. День регистрации изобретения цифровой электронной вычислительной машины в СССР (1948). Неофициальная дата рождения советской информатики.
10 декабря. День рождения Ады Лавлейс, первого программиста (точней, программистки) в мире (1810). Кстати, графиня Лавлейс была единственной дочерью "того самого" Байрона.
Таким образом, имеем минимум 0b1100 поводов выпить.)
©тыбрено тут
понедельник, февраля 14
воскресенье, января 30
SSH и шифрованный known_hosts
Какое-то время "ругался" на то, что в Ubuntu файл known_hosts по-умолчанию шифрует имена доменов - любил совмещать строчки, когда несколько доменов на одном IP, ибо было удобно (хотя и крайне редко требовалось) обновлять ключ.
А тут наткнулся на такую же "проблему" и на её решение через команду и мои "проблемы" сняло как рукой :)
В общем, что мы вокруг да около.
Для того, чтобы удалить из known_hosts устаревший ключ, выполняем команду "ssh-keygen -R host_name|IP", после чего повторно пробуем зайти на удалённый сервер.
там же, есть ссылка на интересную статью Максима Коновалова с писанием поддержки отпечатков SSH в DNS (RFC-4255).
А тут наткнулся на такую же "проблему" и на её решение через команду и мои "проблемы" сняло как рукой :)
В общем, что мы вокруг да около.
Для того, чтобы удалить из known_hosts устаревший ключ, выполняем команду "ssh-keygen -R host_name|IP", после чего повторно пробуем зайти на удалённый сервер.
там же, есть ссылка на интересную статью Максима Коновалова с писанием поддержки отпечатков SSH в DNS (RFC-4255).
среда, января 19
VirtualBox 4.0 и поддержка плагинов
Начиная с версии 4.0 многоуважаемая компания Oracle добавила поддержку плагинов в VirtualBox и вынесла поддержку USB 2.0 в отдельный плагин. Плагин "Oracle VM VirtualBox Extension Pack" добавляет поддержку "USB 2.0 Host Controller, VirtualBox RDP, PXE ROM with E1000 support"
Не, моя конечно понимай, что плагины это удобно, но... моя долго думать нафига вынесли в плагин, который нужно качать отдельно, то, что раньше работало "изкаропки"?
Не, моя конечно понимай, что плагины это удобно, но... моя долго думать нафига вынесли в плагин, который нужно качать отдельно, то, что раньше работало "изкаропки"?
понедельник, января 10
Ubuntu Desktop + LVM. Умный в гору не пойдёт...
Можно пойти так, как "нашпиговано" в ентом вашем ынтырнете и через всякие Ubuntu LiveCD и прочую хрень из консоли хреначить сперва ручками весь LVM, потом на него "натягивать" Desktop.
А можно пойти ПРОЩЕ:
1) качаем Ubuntu Server
2) устанавливаем дистрибутив через его стандартный GUI с разметкой LVM
3) Сразу после загрузки (предполагаем, что у нас тырнет ужо настроен) выполняем команду "apt-get install ubuntu-desktop"
4) перезагружаемся и... вах, шайтан - да перед нами обычный Ubuntu Desktop!
ЗЫ: я, правда, после этого ещё ядро переставил с серверного на десктопный) но это кому какие фломастеры нужны. Да ещё парочку PPA добавил, чтоб некоторый софт посвежее был)
А можно пойти ПРОЩЕ:
1) качаем Ubuntu Server
2) устанавливаем дистрибутив через его стандартный GUI с разметкой LVM
3) Сразу после загрузки (предполагаем, что у нас тырнет ужо настроен) выполняем команду "apt-get install ubuntu-desktop"
4) перезагружаемся и... вах, шайтан - да перед нами обычный Ubuntu Desktop!
ЗЫ: я, правда, после этого ещё ядро переставил с серверного на десктопный) но это кому какие фломастеры нужны. Да ещё парочку PPA добавил, чтоб некоторый софт посвежее был)
Если вам пригодилась статья, то отправьте 5 рублей автору. Спасибо!
четверг, декабря 30
Tomcat и JSESSIONID
Для того, чтобы изменить имя переменной сессии с "JSESSIONID" на, к примеру, "SID", достаточно в файле $CATALINA_HOME/bin/setenv.sh прописать следующую строчку:
ЗЫ: не забудьте перезапустить Tomcat
ЗЫЫ: в браузерах с залогиненными пользователями кука JSESSIONID не переименуется :) Просто добавится ещё одна с тем же значением
JAVA_OPTS="$JAVA_OPTS -Dorg.apache.catalina.SESSION_COOKIE_NAME=SID -Dorg.apache.catalina.SESSION_PARAMETER_NAME=sid"
ЗЫ: не забудьте перезапустить Tomcat
ЗЫЫ: в браузерах с залогиненными пользователями кука JSESSIONID не переименуется :) Просто добавится ещё одна с тем же значением
пятница, декабря 10
Tomcat и виртуальный хостинг. часть 2: добавление виртуального хоста
Ранее мы настроили связку Nginx+Tomcat для хостинга. Давайте теперь добавим виртуальный домен example.org
Шаг 1: настраиваем nginx
создаём файл /srv/nginx/vhost_01_example.org.conf:
Теперь вы можете выполнить команду "service nginx reload" и, открыв в браузере адрес http://example.org, увидеть домашнюю Tomcat-страницу
Шаг2: настраиваем Tomcat
правим server.xml, добавляя новые строки:
Теперь нужно настроить пользователя для менеджера виртуального хоста.
Добавим нового пользователя manager-example.org с новой одноимённой ролью в /srv/tomcat/conf/tomcat-users.xml:
Перезапускаем томкат:
Открываем в браузере адрес http://example.org/manager/html и на запрос авторизации вводим логин/пароль для пользователя manager-example.org.
На этом базовая настройка виртуального хоста example.org завершена.
Шаг 1: настраиваем nginx
создаём файл /srv/nginx/vhost_01_example.org.conf:
server { listen 80; server_name example.org *.example.org location / { proxy_pass http://127.0.0.1:8080; include /srv/nginx/proxy.conf; } }
Теперь вы можете выполнить команду "service nginx reload" и, открыв в браузере адрес http://example.org, увидеть домашнюю Tomcat-страницу
Шаг2: настраиваем Tomcat
# cd /srv/tomcat
# mkdir webapps/example.org
# sed -e 's/localhost/example\.org/g' conf/server.d/vhost-localhost.xml > conf/server.d/vhost-example.org.xml
правим server.xml, добавляя новые строки:
<?xml version='1.0' encoding='utf-8'?> <!DOCTYPE server-xml [ <!ENTITY vhost-localhost SYSTEM "server.d/vhost-localhost.xml"> <!ENTITY vhost-example.org SYSTEM "server.d/vhost-example.org.xml"> ]> ... &vhost-localhost; &vhost-example.org; </Engine> ...
Теперь нужно настроить пользователя для менеджера виртуального хоста.
Добавим нового пользователя manager-example.org с новой одноимённой ролью в /srv/tomcat/conf/tomcat-users.xml:
<role rolename="manager-example.org" />и внесём изменения в конфигурационный файл Manager-приложения:
<user username="manager-example.org" password="12345678" roles="manager-example.org" /&rt;
# cp -R webapps/localhost/manager webapps/example.org/
# cd webapps/example.org/manager/WEB-INF
# sed -i.bak 's/<role-name>manager<\/role-name>/<role-name>manager-example.org<\/role-name>/g' web.xml
Перезапускаем томкат:
# chown -R tomcat:tomcat /srv/tomcat
# service tomcat6 stop
# tail -f /srv/tomcat/logs/catalina.out ;Ждём остановки Tomcat и жмём Ctrl+C
# service tomcat6 start
Открываем в браузере адрес http://example.org/manager/html и на запрос авторизации вводим логин/пароль для пользователя manager-example.org.
На этом базовая настройка виртуального хоста example.org завершена.
Если вам пригодилась статья, то отправьте 5 рублей автору. Спасибо!
Tomcat и виртуальный хостинг. часть 1: связка Nginx + Tomcat
Рано или поздно приходишь к тому, что на сервере Tomcat хочется держать не только один сайт. можно конечно же разные сайты делить за тем же Nginx по запросам к подкаталогу "/domain-name", но правильнее будет сделать разнесение по виртуальным хостам. ещё правильнее - разнести "клиентов" ещё и по разным инстансам tomcat (чтобы они "соседей" не "завалили"), но это покажу как-нибудь в другой серии постов.
Итак, наша задача - настройка Tomcat на работу с виртуальными хостами
С чего мы начнём? с базового задела Tomcat под поставленную задачу - со связки Nginx+Tomcat (помимо плюсов самого Nginx, нам не придётся думать об уровне доступа Tomcat для прослушки 80-го порта)
Настройка производится на сервере CentOS 5.5 (но думаю, что и на других версиях не будет отличий ;) ). Так же на сервере должен быть открыт 80-й порт
Устанавливаем nginx "по умолчанию":
создаём каталог /srv/nginx и меняем ему владельца и группу на nginx (в этом каталоге мы будем хранить настройки виртуальных хостов для nginx):
правим файл /etc/nginx/conf.d/virtual.conf
создаём файл /srv/nginx/proxy.conf со следующим содержимым:
это общие настройки для всех виртуальных хостов. В последующем можно будет дописать или поправить его содержимое.
создаём хост "по-умолчанию", для этого создаём файл /srv/nginx/vhost_00_default.conf:
Теперь переходим к базовой установке и настройке Tomcat
Скачиваем и распаковываем дистрибутив Apache Tomcat (повествую на примере версии 6.x)
для запуска демона Tomcat от пользователя tomcat можно скомпилировать jsvc, но мне больше нравится нижеприведённый скрипт /etc/init.d/tomcat6:
Теперь переходим к небольшому "тюнингу" Tomcat, для дальнейшего удобства его администрирования
Для начала, поправим файл /srv/tomcat/conf/server.xml (далее просто server.xml) для работы с Nginx. Для этого найдём
Перейдём к настройке хостов.
удобнее всего править настройки хостов не выискивая их в "портянке" файла server.xml, а вынеся настройки каждого хоста в отдельный файл. Для этого произведём некоторые изменения в файле server.xml
изменяем "шапку" файла, дописав блок DOCTYPE:
создадим подкаталог server.d, в котором будут лежать конфигурационные файлы наших виртуальных хостов:
Вынесем в отдельный файл настройки для localhost... Для этого найдём в server.xml блок "<Host>...</Host>" и сохраним его в server.d/vhost-localhost.xml:
Для работы Tomcat требуется установленная на сервере Java-машина. Путь до неё прописывается в файле /srv/tomcat/bin/setenv.sh:
Следующий наш шаг - настройка каталога webapps для будущих виртуальных каталогов
и заваршающее действие:
Готово. теперь можно запускать созданный web-сервер:
Зайдите в браузере по адресу http://ваш_сервер - вы должны увидеть Tomcat-страницу по-умолчанию.
Если всё правильно настроено и вы увидели страницу Tomcat, то можно установить автозапуск для демонов:
ЗЫ: комментарии и замечания приветствуются :)
UPD: изменил немного скрипты - местами удалил "ручную" работу и описал для Tomcat 6 вместо Tomcat 7
Итак, наша задача - настройка Tomcat на работу с виртуальными хостами
С чего мы начнём? с базового задела Tomcat под поставленную задачу - со связки Nginx+Tomcat (помимо плюсов самого Nginx, нам не придётся думать об уровне доступа Tomcat для прослушки 80-го порта)
Настройка производится на сервере CentOS 5.5 (но думаю, что и на других версиях не будет отличий ;) ). Так же на сервере должен быть открыт 80-й порт
Устанавливаем nginx "по умолчанию":
# yum install nginx
создаём каталог /srv/nginx и меняем ему владельца и группу на nginx (в этом каталоге мы будем хранить настройки виртуальных хостов для nginx):
# mkdir -p /srv/nginx
# chown nginx:nginx /srv/nginx
правим файл /etc/nginx/conf.d/virtual.conf
# mv /etc/nginx/conf.d/virtual.conf /etc/nginx/conf.d/virtual.conf.orign
# echo "include /srv/nginx/vhost_*.conf;" > /etc/nginx/conf.d/virtual.conf
создаём файл /srv/nginx/proxy.conf со следующим содержимым:
proxy_redirect off;
proxy_set_header Host $http_host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
client_max_body_size 10m;
client_body_buffer_size 128k;
proxy_connect_timeout 90;
proxy_send_timeout 90;
proxy_read_timeout 90;
proxy_buffer_size 4k;
proxy_buffers 4 32k;
proxy_busy_buffers_size 64k;
proxy_temp_file_write_size 64k;
это общие настройки для всех виртуальных хостов. В последующем можно будет дописать или поправить его содержимое.
создаём хост "по-умолчанию", для этого создаём файл /srv/nginx/vhost_00_default.conf:
server { listen 80 default; location / { proxy_pass http://127.0.0.1:8080; include /srv/nginx/proxy.conf; } }
Теперь переходим к базовой установке и настройке Tomcat
Скачиваем и распаковываем дистрибутив Apache Tomcat (повествую на примере версии 6.x)
# cd /srv
# wget http://www.sai.msu.su/apache/tomcat/tomcat-6/v6.0.29/bin/apache-tomcat-6.0.29.tar.gz
# tar xvf apache-tomcat-6.0.29.tar.gz
# mv apache-tomcat-6.0.29 tomcat
# useradd -d /srv/tomcat -s "/sbin/nologin" tomcat
для запуска демона Tomcat от пользователя tomcat можно скомпилировать jsvc, но мне больше нравится нижеприведённый скрипт /etc/init.d/tomcat6:
#!/bin/sh # # /etc/init.d/tomcat6 # # This is the init script for starting up the # Jakarta Tomcat Server # # chkconfig: 234 20 80 # description: Starts and stops the Tomcat daemon # processname: tomcat # # source functions library for 'daemon' function . /etc/init.d/functions TOMCAT_HOME=/srv/tomcat TOMCAT_START=$TOMCAT_HOME/bin/startup.sh TOMCAT_STOP=$TOMCAT_HOME/bin/shutdown.sh TOMCAT_USER=tomcat start() { echo -n $"Starting Tomcat service: " daemon --user $TOMCAT_USER $TOMCAT_START RETURN_CODE=$? echo $? } stop() { echo -n $"Stopping Tomcat service: " daemon --user $TOMCAT_USER $TOMCAT_STOP RETURN_CODE=$? echo $? } status() { ps aux | grep tomcat | grep -v grep } # Handle the different input options case "$1" in start) start ;; stop) stop ;; status) status ;; *) echo $"Usage: $0 {start|stop|status}" exit 1 esac exit 0
Теперь переходим к небольшому "тюнингу" Tomcat, для дальнейшего удобства его администрирования
Для начала, поправим файл /srv/tomcat/conf/server.xml (далее просто server.xml) для работы с Nginx. Для этого найдём
<Connector port="8080" protocol="HTTP/1.1" connectionTimeout="20000"redirectPort="8443" />и заменим её на
<Connector address="127.0.0.1" port="8080" protocol="HTTP/1.1" connectionTimeout="20000"redirectPort="8443" />тем самым мы укажем Tomcat, чтобы он слушал порт 8080 только локально
Перейдём к настройке хостов.
удобнее всего править настройки хостов не выискивая их в "портянке" файла server.xml, а вынеся настройки каждого хоста в отдельный файл. Для этого произведём некоторые изменения в файле server.xml
изменяем "шапку" файла, дописав блок DOCTYPE:
<?xml version='1.0' encoding='utf-8'?> <!DOCTYPE server-xml [ <!ENTITY vhost-localhost SYSTEM "server.d/vhost-localhost.xml"> ]>
создадим подкаталог server.d, в котором будут лежать конфигурационные файлы наших виртуальных хостов:
# cd /srv/tomcat/conf
# mkdir server.d
Вынесем в отдельный файл настройки для localhost... Для этого найдём в server.xml блок "<Host>...</Host>" и сохраним его в server.d/vhost-localhost.xml:
# cd /srv/tomcat/conf
# echo "<?xml version='1.0' encoding='utf-8'?>" > server.d/vhost-localhost.xml
# sed -n -e '/[[:space:]]*<Host.*/,/[[:space:]]<\/Host>/p' server.xml >> server.d/vhost-localhost.xml
# sed -i.bak -n '1h;1!H;${x;s/<Host.*<\/Host>/\&vhost-localhost;/;p}' server.xml
Для работы Tomcat требуется установленная на сервере Java-машина. Путь до неё прописывается в файле /srv/tomcat/bin/setenv.sh:
# echo "JAVA_HOME=/usr/java/default" > /srv/tomcat/bin/setenv.sh
Следующий наш шаг - настройка каталога webapps для будущих виртуальных каталогов
# cd /srv/tomcat
# sed -i 's/webapps/webapps\/localhost/' conf/server.d/vhost-localhost.xml
# mv webapps localhost
# mkdir webapps
# mv localhost webapps/
и заваршающее действие:
# chown -R tomcat:tomcat /srv/tomcat
Готово. теперь можно запускать созданный web-сервер:
# service tomcat6 start
# service nginx start
Зайдите в браузере по адресу http://ваш_сервер - вы должны увидеть Tomcat-страницу по-умолчанию.
Если всё правильно настроено и вы увидели страницу Tomcat, то можно установить автозапуск для демонов:
# chkconfig nginx on
# chkconfig --add tomcat6
# chkconfig tomcat6 on
ЗЫ: комментарии и замечания приветствуются :)
UPD: изменил немного скрипты - местами удалил "ручную" работу и описал для Tomcat 6 вместо Tomcat 7
Если вам пригодилась статья, то отправьте 5 рублей автору. Спасибо!
суббота, ноября 13
Debian. mysql server
статья устарела. обновленная версия тут
Сразу после установки настраиваемся на utf8 и удаляем ошибку при запуске демона:
1) устанавливаем сервер MySQL
apt-get install mysql-server
2) удаляем ошибку "Access denied for user ‘debian-sys-maint’@'localhost" (решение найдено тут)
открываем файл /etc/mysql/debian.cnf и находим строчку password:
password = bla-bla-bla
в клиенте mysql выполняем команду
GRANT ALL PRIVILEGES ON *.* TO 'debian-sys-maint'@'localhost' IDENTIFIED BY '%password%' WITH GRANT OPTION; # вставляем вместо %password% "подсмотренный" пароль.
3) устанавливаем кодировку utf8 по умолчанию
в файле /etc/mysql/my.cnf добавляем строки для каждого блока []:
[client]
default-character-set = utf8
[mysqld_safe]
default-character-set = utf8
[mysqld]
character-set-server = utf8
collation-server = utf8_general_ci
init-connect = "set names utf8;"
[mysqldump]
default-character-set = utf8
4) перезапускаем сервер MySQL
5) заходим клиентом и на команду "mysql> show variables like "%character%";show variables like "%collation%";" видим нечто подобное:
mysql> show variables like "%character%";show variables like "%collation%";
+--------------------------+----------------------------+
| Variable_name | Value |
+--------------------------+----------------------------+
| character_set_client | utf8 |
| character_set_connection | utf8 |
| character_set_database | utf8 |
| character_set_filesystem | binary |
| character_set_results | utf8 |
| character_set_server | utf8 |
| character_set_system | utf8 |
| character_sets_dir | /usr/share/mysql/charsets/ |
+--------------------------+----------------------------+
8 rows in set (0.00 sec)
+----------------------+-----------------+
| Variable_name | Value |
+----------------------+-----------------+
| collation_connection | utf8_general_ci |
| collation_database | utf8_general_ci |
| collation_server | utf8_general_ci |
+----------------------+-----------------+
Если вам пригодилась статья, то отправьте 5 рублей автору. Спасибо!
четверг, ноября 11
Debian. timezone
Для настройки временной зоны и синхронизации,
подсмотрено тут
- "apt-get install ntp ntpdate" - ставим NTP демона для синхронизации
- "ntpdate -bs ru.pool.ntp.org" - синхронизируем часы
- "dpkg-reconfigure tzdata" - выставляем нужную нам временную зону, например Europe/Moscow
подсмотрено тут
Если вам пригодилась статья, то отправьте 5 рублей автору. Спасибо!
с CentOS на Debian. iptables
Решил перебраться на сервере с CentOS на Debian
Первое "неудобство", с которым столкнулся, это отсутствие, ставших уже привычными, скриптов восстановления правил для iptables.
Поиск в инете можно сделать и найти вагон и маленькую тележку информации, что в Debian всё убрано и что нужно всё прописывать ручками в интерфейсах и прочее... а можно просто глянуть результат команды "apt-cache search iptables" и увидеть пакет iptables-persistent (как поставить из тестовой ветки)... вот он то нам и нужен
устанавливаем пакет командой "apt-get install iptables-persistent"
теперь у нас есть скрипт /etc/init.d/iptables-persistent, который и будет восстанавливать правила после запуска системы.
А сами правила теперь вместо /etc/sysconfig/iptables лежат в /etc/iptables/rules
соответственно, после тестирования правил, сохраняемся по команде "iptables-save > /etc/iptables/rules".
В остальном больше никаких изменений нет - у меня прекрасно заработал всё тот же мой скрипт iptables.sh
Первое "неудобство", с которым столкнулся, это отсутствие, ставших уже привычными, скриптов восстановления правил для iptables.
Поиск в инете можно сделать и найти вагон и маленькую тележку информации, что в Debian всё убрано и что нужно всё прописывать ручками в интерфейсах и прочее... а можно просто глянуть результат команды "apt-cache search iptables" и увидеть пакет iptables-persistent (как поставить из тестовой ветки)... вот он то нам и нужен
устанавливаем пакет командой "apt-get install iptables-persistent"
теперь у нас есть скрипт /etc/init.d/iptables-persistent, который и будет восстанавливать правила после запуска системы.
А сами правила теперь вместо /etc/sysconfig/iptables лежат в /etc/iptables/rules
соответственно, после тестирования правил, сохраняемся по команде "iptables-save > /etc/iptables/rules".
В остальном больше никаких изменений нет - у меня прекрасно заработал всё тот же мой скрипт iptables.sh
Если вам пригодилась статья, то отправьте 5 рублей автору. Спасибо!
Подписаться на:
Сообщения (Atom)