/usr/local/ispmgr/sbin/update.sh --force ispmgr; \echo -e "Panel is currently at version:\n\t$(/usr/local/ispmgr/bin/ispmgr -V)"
Рубрика: Администрирование
Обновление ASUS WL-520GU на прошивку DD-WRT
На днях перепрошил свой старенький, но тем не менее, работающий верой и правдой, маршрутизатор ASUS WL-520GU. Перешел со стокой прошивки (последняя версия 7.0.1.45) на стороннюю DD-WRT. Причина — более продвинутые возможности и настройки + вечное желание пощупать чего-то новенького 🙂
Мануалы по перепрошивки роутера не вселяли оптимизма в успех операции, однако же на деле оказалось все легко.
Вот что нужно сделать (инструкция для Mac OS):
- Скачать этот архив. Он содержит три файла — «легкую» (устанавливается первой) и стандартную версию прошивки DD-WR (v24-sp2), а также стоковую прошивку ASUS WL-520GU (на случай форс-мажора, чтобы можно было откатиться назад).
- В настройках роутера установить для него IP-адрес 192.168.1.1.
- Перевести роутер в режим восстановления — для этого отключаем роутер, зажимаем углубленную кнопку «Reset» (черного цвета) и включаем роутер в сеть. Кнопку «Reset» удерживать до тех пор, пока индикатор «Power» не начнет мигать с частотой один раз в секунду. Также советуют отключить от роутера все сетевые кабели, за исключением того, что связывает его с компьютером.
- Теперь в сетевых настройках Mac OS нужно указать IP-адрес 192.168.1.2 (маска 255.255.255.0, шлюз 192.168.1.1). Теперь неплохо бы убедиться, что компьютер видит роутер — нужно пропинговать IP-адрес 192.168.1.1. Если видит, то можно переходить к следующему пункту. Если нет, значит где-то есть ошибочка.
- Настало время залить в роутер «легкую» версию прошивки DD-WR. Делается это через TFTP, который по умолчанию уже имеется в Mac OS. Открываем терминал, переходим в папку, куда распаковали архив с прошивками, и вводим следующие команды:
tftp
tftp> connect 192.168.1.1
tftp> binary
tftp> rexmt 1
tftp> timeout 60
tftp> put dd-wrt.v24_mini_asus.trx- Прошивка должна отправится в роутер. После чего нужно подождать минуты три и выключить роутер, а затем снова его включить. Опять подождать, когда он загрузится. Теперь в браузере ввести http://192.168.1.1, должна открыться страница вашей новой прошивки DD-WR.
- Через интерфейс DD-WR залить стандартную прошивку (dd-wrt.v24-17990_NEWD_std-nokaid_usb.bin).
[Debian] Включение цвета вывода для ls в консоли
Чтобы задействовать цветное выделение данных, выводимых командой ls
, достаточно раскомментировать в файле .bashrc (если работаете из под root’а, то находится в директории /root) следующие строки:
export LS_OPTIONS='--color=auto'
eval "`dircolors`"
alias ls='ls $LS_OPTIONS'
Чтобы изменения вступили в силу, нужно выполнить:
. ~/.bashrc
Результат:
Просмотр подключенных модулей у Apache и nginx
Порой нужно узнать, какие модули подключены для Apache или nginx. К примеру, буквально пару дней назад необходимо было выяснить, подключен ли модуль mod_deflate у Apache.
Выполняем:
apache2ctl -M
Читаем:
Loaded Modules: core_module (static) ... deflate_module (shared) ... Syntax OK
Для nginx также есть команда, которая показывает подробную информацию о сборке:
nginx -V
Читаем:
nginx version: nginx/x.x.0 built by gcc 4.4.5 (Debian x.x.x-x) TLS SNI support enabled configure arguments: ... --with-http_ssl_module --with-http_realip_module --with-http_addition_module --with-http_sub_module --with-http_dav_module --with-http_flv_module --with-http_mp4_module --with-http_gunzip_module --with-http_gzip_static_module --with-http_random_index_module --with-http_secure_link_module --with-http_stub_status_module --with-http_auth_request_module --with-mail --with-mail_ssl_module --with-file-aio --with-cc-opt='-g -O2 -Wp,-D_FORTIFY_SOURCE=2' --with-ld-opt=-Wl,--as-needed --with-ipv6
Auto pull при каждом коммите в GitHub
Разработчик пишет код, коммитит, пушит в GitHub… И для некоторых задач весьма хочется, чтобы эти изменения сразу появлялись на нашем тестовом сервере. Т.е. по сути нам нужно, чтобы при комитте происходил автоматический вызов команды ‘git pull’ на тестовом сервере.
В сети есть несколько решений тому, как эту функциональность реализовать. Свой выбор становил на скрипте «Github Auto Pull«, который умеет еще отправлять алерты на указанную почту. Все бы ничего, но я столкнулся с проблемой — строчка shell_exec('git pull')
ни как не хотела правильно выполняться. Стоит оговориться, что мне пришлось изменить строку вызова команды на следующую: shell_exec('cd /path-to-git-project && git checkout %branch% && git pull');
И так, я начал искать причину проблемы. Для начала попытался выполнить скрипт через CLI, оставив в нем лишь строчку с shell_exec:
php github.php — так все работает
Хм, следующее, что пришло на ум, это возможная проблема с пользователем, которому принадлежит скрипт (мол, выполнять команды в shell-оболочке запрещено). Переключился на этого пользователя, вновь запустил «php github.php» и что вижу:
Could not create directory '/var/www/.ssh'. The authenticity of host 'github.com (192.30.252.128)' can't be established. RSA key fingerprint is 15:27:ac:a5:76:29:2d:36:63:1b:56:1d:eb:da:a6:58. Are you sure you want to continue connecting (yes/no)? yes Failed to add the host to the list of known hosts (/var/www/.ssh/known_hosts). Permission denied (publickey). fatal: The remote end hung up unexpectedly
Т.е. проблема была в том, что осуществлялась попытка установить RSA-ключ, в несуществующую для этого пользователя директорию. Создал директорию, скопировал содержимое из /root/.ssh и все заработало.
Еще одна победа!
pkgutil — утилита для управления пакетами (.pkg) в Mac OS X
В Mac OS X есть утилита под названием pkgutil, предназначенная для манипуляции с установщиками пакетов.
Чтобы вывести список всех установленных пакетов, достаточно выполнить команду
pkgutil --packages
Чтобы найти нужный пакет, можно воспользовать grep’ом:
pkgutil --packages|grep ...
Чтобы отобразить список всех файлов, принадлежащих конкретному пакету, нужно использовать параметр —files. В примере ниже выводится список файлов для пакета ru.mail.macagent:
pkgutil --files ru.mail.macagent
Mail.Ru Agent.app Mail.Ru Agent.app/Contents Mail.Ru Agent.app/Contents/Frameworks Mail.Ru Agent.app/Contents/Frameworks/Growl.framework Mail.Ru Agent.app/Contents/Frameworks/Growl.framework/Growl ...
Если вы удаляете файлы пакета вручную, то после таких действий нужно указать системе, чтобы она «забыла» такой пакет:
pkgutil --forget package-name
Обнуление лог-файла
Для контроля над размером лог-файлов сервера, а также их количеством, обычно используется т.н. процесс ротации (включает в себя архивирование, удаление старых и т.п.).
Если же по какой-то причине к лог-файлу не применяется ротация, и он стал занимать много дискового пространства, то лучше всего не удалять этот файл, а просто обнулить следующим образом:
echo ""> /home/httpd-logs/access.log
Удаление же лог-файла вручную может привести к ряду проблем.
Установка SSH-демона на Windows
Недавно я уже писал о том, как поднять SSH-туннелирование между двумя компьютерами, один из которых работает на Windows (клиент), другой — на Debian (сервер).
Теперь возникла задача создать туннель между компьютерами с установленной ОС Windows. Эта задача чуть сложнее, т.к. в Windows нет встроенного SSH-сервера, чтобы принимать подключения от клиента. Таким образом на компьютер-сервер, который, кстати, у меня работает под управлением Windows Server 2012 Standart, пришлось поднимать SSH-демон. Для решения этой задачи, как и ранее, я использовал Cygwin. Для работы с SSH нужно установить два дополнительных пакета — openssh и openssl.
Далее идет инструкция, как поднять SSH-демон на Windows:
1. Необходимо отредактировать файл Cygwin.bat, добавив в него следующую строку:
set CYGWIN=binmode ntsec
Таким образом батник должен иметь следующий вид:
@echo off
C: chdir C:\cygwin\bin set CYGWIN=binmode ntsec bash --login -i
2. Теперь необходимо убедиться, что Cygwin (cygrunsrv) установлен должным образом. Для этого нужно запустить Cygwin.bat и в открывшемся окне консоли ввести команду:
cygrunsrv -h
Если будет показана справка, то все установленно корректно и можно продолжать дальше. В противном случае нужно будет переустановить Cygwin.
3. Для установки SSH-демона (демон в Windows принято называть службой) нужно выполнить следующую команду:
ssh-host-config
На появляющиеся вопросы следует отвечать следующим образом:
*** Query: Should privilege separation be used? <yes/no>: yes *** Query: New local account 'sshd'? <yes/no>: yes *** Query: Do you want to install sshd as a service? *** Query: <Say "no" if it is already installed as a service> <yes/no>: yes *** Query: Enter the value of CYGWIN for the deamon: [] binmode ntsec *** Query: Do you want to use a different name? <yes/no>: yes *** Query: Enter the new user name: root *** Query: Reenter: root *** Query: Create new privileged user account 'root'? <yes/no>: yes *** Query: Please enter the password: *** Query: Reenter:
Если конфигурация прошла успешно, то должно быть выведено следующее сообщение:
Host configuration finished. Have fun!
4. Далее нужно выполнить команды:
/bin/mkpasswd -l –u root >> /etc/passwd
mkdir -p /home/root (for example, mkdir -p /home/pjohn)
chown <USER> /home/root
5. В файле C:\cygwin\etc\passwd нужно удалить подобную строку (если есть), которая запрещает пользователю root использовать интерпретатор bash:
root:unused:1005:513:Privileged server,WIN-PC\root,S-1-5-21-38344676178-3524706203-1997156839-1005:/var/empty:/bin/bash/false
6. Выполните следующую команду для запуска SSH-демона (службу можно запустить также из оснастки «Services»):
cygrunsrv -S sshd
7. Убедитесь, что 22 порт открыт для прослушивания (в этом поможет команда netstat -na). Если нет, то необходимо создать соответствующее правило в Windows Firewall.
Теперь можно проверить подключение с клиента:
ssh root@<сервер>
Если все настроенно правильно, то будет выведено приглашение на подключение и ввода пароля.
[Apache] Invalid command ‘SSLEngine’
При опытке перезапустить Apache, выводится ошибка:
# /etc/init.d/apache2 restart
[warn] module rpaf_module is already loaded, skipping Syntax error on line 303 of /etc/apache2/apache2.conf: Invalid command 'SSLEngine', perhaps misspelled or defined by a module not included in the server configuration Action 'configtest' failed. The Apache error log may have more information. failed!
Тем не менее модуль присутствует:
# php -m
[PHP Modules] ... openssl ...
Проблема в том, что модуль неактивирован. Для этого нужно выполнить следующую команду:
# a2enmod ssl
После чего перезапустить Apache.
[Apache] Error retrieving pid file /var/run/apache2.pid
Пробуя зайти на свой сайт, получил 504-ошибку (Gateway Timeout). Полез в консоль, пробую перезапустить Apache, получаю:
Restarting web server: apache2Usage: grep [OPTION]... PATTERN [FILE]... Try `grep --help' for more information. Usage: grep [OPTION]... PATTERN [FILE]... Try `grep --help' for more information. [Sat Feb 15 18:04:48 2014] [warn] module rpaf_module is already loaded, skipping (20014)Internal error: Error retrieving pid file /var/run/apache2.pid Remove it before continuing if it is corrupted. Action 'stop' failed. The Apache error log may have more information. [Sat Feb 15 18:04:48 2014] [warn] module rpaf_module is already loaded, skipping (20014)Internal error: Error retrieving pid file /var/run/apache2.pid Remove it before continuing if it is corrupted. Action 'start' failed. The Apache error log may have more information. failed!
Проблема оказалась в том, что логи сожрали все дисковое пространство, оставив жалкие 5 МБ. Удалил логи, пробую опять перезапустить Apache — запустился, но сайт вновь не работает. Перезапускаю сервер — уф, заработало…