понедельник, 27 февраля 2012 г.

LAMP server под ubuntu 10.04 и не только!


В связи с тем что уже реально заколебался каждый раз напрягать мозг и гуглить когда надо прикрутить «Лампу» решил сделать заметку для себя. Инфы в инетах много, но реально «стоящей» мало...
LAMP server — аббревиатура: Linux, Apache, MySQL, PHP/Perl/Python (плюс, сюда часто добавляют Ruby On Rails).
Устанавливается достаточно просто, можно при помощи одной команды:
$ sudo apt-get install lamp-server^

но это довольно тупо и как показала практика неэффективно... (для профессиональных танцоров с бубном подойдёт, ну или сервер планируется «не замысловатый»). А так...
  1. Linux — как установить и правильно настроить сервер на Linux надо отдельную статейку создавать, предполагается что он есть! (ubuntu 10.04 рулит!)
  2. Apache. Установка веб-сервера Apache довольно проста:
$ sudo apt-get install apache2
  1. PHP. Не забываем модуль для работы с мускулом:
$ sudo apt-get install php5 libapache2-mod-php5 php5-mysql
хотя на много лучше:
$ sudo apt-get install libapache2-mod-php5 libapache2-mod-ruby php5 php5-common php5-curl php5-dev
php5-gd php5-idn php-pear php5-imagick php5-imap php5-mcrypt php5-memcache php5-mhash php5-ming
php5-mysql php5-pspell php5-recode php5-snmp php5-sqlite php5-tidy php5-xmlrpc php5-xsl

последняя команда добавит модули PHP. Занимает не так много места, но мало ли что в жизни случиться...

(После данной операции, объём занятого дискового пространства возрастёт где-то на 60MB, но зато готовы ко всем превратностям судьбы). Если стрёмно или впадлу, но требуются дополнительные модули PHP, то полный список пакетов доступных в репозитарии, можно получить, введя
$sudo apt-cache search php5
  1. Пакеты для «мускула» устанавливаются командой:
$ sudo apt-get install mysql-server mysql-client

В процессе установки должен появиться запрос на ввод пароля администратора базы данных. Если установку прошла в тихом режиме (а такого я ни разу не встречал!), не задавая вопросов, то надыть установить пароль root вручную:
$ sudo mysqladmin -u root password пароль

После данной операции, объём занятого дискового пространства возрастёт ещё на 50MB
ну типо всё... а нет!
$ sudo /etc/init.d/apache2 restart
(для деликатного ребута : $ sudo /etc/init.d/apache2 reload)

Проверить что у на выхлопе получилось необходимо так:
Набираем в браузере строку http://localhost, – в ответ мы должны увидеть надпись «It works! и бла-бла-бла». Чтобы проверить работу PHP, создаем файл test.php и пробуем к нему обратиться:
$ sudo echo '<?phpinfo()?>' > /var/www/test.php
и в браузере http://localhost/test.php
В ответ появиться таблица с настройками PHP. Если вместо счастья ахинея типа «404» или вообще ошибка, следует просмотреть логи веб-сервера, расположенные в каталоге /var/log/apache2. Тут как правило багатенно информативных подсказок и косяки озвучиваются.
  1. web-сервер без виртуальных хостов (создания нескольких сайтов для одного ip-шника) - «унылость» и провокация (с возможностью наживы для разработчика в будущем!) Поэтому кратко:
Существует 2 папки - /etc/apache2/sites-available — там список потенциально возможных сайтов, и /etc/apache2/sites-enabled — тут рабочие сайты.
В папке sites-available есть готовый шаблон как правильно оформить виртуальный хост (его лучше оставить как памятку на будущие). На базе этого шаблона надо создать новый файл с таким содержанием:
<VirtualHost *:80>
ServerAlias Алиас_сайта #будет отдельная статья (указывать не обязательно, также рулится на уровне доменных имён)
ServerAdmin webmaster@localhost #мыло админа ;)
ServerName site1.lg.ua # имя сайта
DirectoryIndex index.php index.html index.htm # порядок поиска индексных файлов
DocumentRoot /var/www/site1.lg.ua # путь (любой) к папке с сайтом 

<Directory>

<Directory /var/www/site1.lg.ua> # настройка доступа для директории
Options -Indexes FollowSymLinks MultiViews
AllowOverride All
Order allow,deny
allow from all
</Directory>
…..
ErrorLog /var/log/apache2/error.log # лог ошибок
# Possible values include: debug, info, notice, warn, error, crit,alert, emerg.
LogLevel debug #логировать все ошибки и предупреждения 
CustomLog /var/log/apache2/access.log combined # лог доступа

</virtualHost>

Все каталоги указанные в этом конфиге должны быть созданы в ручную, а название сайта продублировано в /etc/hosts!
О! Чтобы сайт включить необходимо после всех вышеозначенных манипуляций воспользоваться командой
#a2ensite /etc/apache2/sites-available/имя_сайта

Чтобы выключить соответсвенно
#a2dissite /etc/apache2/sites-available/имя_сайта

Ну или прибить в папке sites-enabled одноимённый конфиг.
Пы.Сы. При первом запуске веб-сервера в консоли выводится сообщение о том, что Апач не может определить доменное имя данного хоста:

«apache2: Could not reliably determine the server's fully qualified domain name, using 127.0.1.1 for ServerName»
ну или как-то так.... Это не проблема, но реально кумарит! Чтобы его убрать, следует установить значение переменной ServerName в apache2.conf. (Иногда эта настройка вынесена в отдельный файл /etc/apache2/conf.d/fqdn).
ServerName пофиг-что

Пы.Пы.сы. Имеет смысл сразу поставить phpmyadmin... Веб-сервер работает с правами пользователя: USER=www-data GROUP=www-data
Основные конфигурационные файлы LAMP в Ubuntu
  • /etc/network/interfaces – настройка сетевых интерфейсов
  • /etc/hostname – сетевое имя узла
  • /etc/hosts – соответствие имени и IP (локальный DNS)
  • /etc/resolv.conf – IP-адреса DNS-серверов
  • /etc/apt/sources.list – используемые APT-репозитарии пакетов
  • /etc/mysql/my.cnf – настройка MySQL
  • /etc/apache2 – каталог с конфигурационными файлами веб-сервера
  • /etc/apache2/apache2.conf – основной файл настройки Apache
  • /etc/apache2/conf.d/fqdn – имя (ServerName) веб-сервера по дефолту
  • /etc/apache2/envvars – основные переменные Apache
  • /etc/apache2/sites-available/default – сайт по-умолчанию
  • /etc/php5 – файлы настроек PHP5


Большинство взято от сюда: http://www.xakep.ru/magazine/xa/120/120/1.asp ну и из личного опыта (само собой).

Собственные ярлки на панели (Launcher) Unity

Собрал давича из исходников RealVNC. VncServer добавил в автозагрузку, тут поблем думаю нет. А вот с добавлением ярлычка для vncviewer в лаунчер возникли траблы... Вот мануал как добавить любой ярлычок на панель:

1. Создаем в /usr/share/applications файл *.desktop для интересующей нас проги. В моем случае это vncviewer.desktop такого содержания:
$sudo mcedit /usr/share/applications/vncviewer.desktop

[Desktop Entry]
Name=VNCViewer
Comment=VNCViewer
Exec=vncviewer
Icon=vncviewer.png
Terminal=0
Type=Application
Encoding=UTF-8
Categories=Network;Application;

2. С помощью gimp`a или др. редактора изображений создаем/конвертируем иконку (*.png) в размер 32х32 пиксиля. Называем ее vncviewer.png (т.к. в конфиге Icon=vncviewer.png) или с таким именем, который пропишем в конфиге. Кидаем иконку в /usr/share/icons

3. Запускаем nautilus или любой другой менеджер файлов. Переходим в /usr/share/applications и тащим интересующий нас *.desktop (vncviewer.desktop) на панель (Launcher).
Или можно прописать руками:
$dconf-editor
desktop-->unity-->launcher-->favorites
добавить параметр: 'vncviewer.desktop'

пятница, 24 февраля 2012 г.

Cкрипт удаленной перезагрузки linux-сервера через openssh

Так случается, что не всегда есть возможность самому подключиться к удаленному Linux-серверу, чтобы его перезагрузить (например, для вступления в силу каких-либо изменений). Тогда появляется необходимость дать права на перезагрузку юзверю. Но, чтобы не давать ему админских прав на управление сервером, можно наваять скриптец для удаленной перезагрузки. Понадобится:

1. Openssh-server на Linux-сервере:
admin@server$ sudo apt-get install openssh-server

2. Openssh-client на Linux-клиенте:
admin@client$ sudo apt-get install openssh-client

3. Создаем на сервере пользователя, от имени которого будет выполняться ребут:
admin@server$ sudo useradd -m -s /bin/bash rebootuser
admin@server$ sudo passwd rebootuser
Enter new UNIX password: 
Retype new UNIX password: 
passwd: password updated successfully 

4. На клиенте создаем открытый ключ (дабыне палить root пароли юзверям):
admin@client$ ssh-keygen -t rsa
 
на предложение
Enter passphrase:
Enter same passphrase again:
нажать 'Enter' (т.е. Оставить пустым, чтоб ssh не требовал пароль)

ключ будет лежать в ~/.ssh/id_rsa.pub

5. Копируем открытый ключ на сервер:
Содержимое файла ~/.ssh/id_rsa.pub на клиенте, необходимо скопировать в файл домашней директории пользователя, от имени которого будет осуществляться подключение по ssh (в нашем случае - это rebootuser) ~/.ssh/authorized_keys (если его нет, создаем) на сервере. Сохраняем. Дергаем службу ssh ($sudo /etc/init.d/ssh restart)

Логинимся на серв для проверки:
admin@client$ ssh rebootuser@'server_ip'

Вуаля! Входим без запроса пароля!

6. Разрешаем на сервере rebotuser`у выполнять перезгрузку и выключение сервера без ввода пароля:
admin@server$ sudo visudo
и в конц добавляем
rebootuser 'server_name'=NOPASSWD: /sbin/reboot,/sbin/shutdown -h now

7. Создаем на клиенте скрипт ребута и делаем его исполнительным:
admin@client$ mcedit reboot_halt.sh
и вставляем в него:
ssh -t rebootuser@'server_ip' 'sudo reboot'
для выключения соответственно:
ssh -t rebootuser@'server_ip' 'sudo shutdown -h now'
даем права на исполнение:
admin@client$ chmod o+x reboot_halt.sh

Жопиздан:)

четверг, 23 февраля 2012 г.

Ошибка GPG

При обновлении Ubuntu столкнулся с такой вот ошибкой:
         Ошибка GPG: http://ua.archive.ubuntu.com lucid Release

Лечится так:
$ sudo -i
# apt-get clean
# cd /var/lib/apt
# mv lists lists.old
# mkdir -p lists/partial
# apt-get clean
# apt-get update

четверг, 16 февраля 2012 г.

Установка драйвера nVidia на Ubuntu 11.10 через консоль

Есть 2 неплохих способа установки драйвера nVidia на Ubuntu 11.10 через консоль:

Способ 1. Используем репозиторий Х-SWAT:
$sudo apt-add-repository ppa:ubuntu-x-swat/x-updates
$sudo apt-get update
$sudo apt-get install nvidia-current

Способ 2. Качаем с оф. Сайта nvidia драйвер (NVIDIA-Linux-x86-290.10.run) под свой девайс. Преходим в полноценный терминальный режим (Ctr+Alt+F1). Оключаем X не перегружаясь в режим восстановления:
#/etc/init.d/lightdm stop
если установлен gnome (или версия Ubuntu <= 10.04), то команда:
#/etc/init.d/gdm stop
 далее:
#sh /home/drivers/NVIDIA-Linux-x86-290.10.run


По окончании  выполнения установки/обновления драйвера - ребут.

вторник, 14 февраля 2012 г.

Настраиваем tray в Unity (Ubuntu 11.10)

ВАЖНО!!! Чтобы изменения вступили в силу, необходимо перезапускать gnome-settings-daemon (ctrl+alt+backspace или reboot)


В Unity есть так называемый белый список приложений, и все приложения не вошедшие в него не будут отображаться в трее.
Чтоб добавить в этот whitelist свое приложение - делаем следующее:

Получить список программ в whitelist`e:
$gsettings get com.canonical.Unity.Panel systray-whitelist

Добавить свои приложения в список и выполнить:
$gsettings get com.canonical.Unity.Panel systray-whitelist ['JavaEmbeddedFrame', 'Wine', 'Dropbox', 'Mubmle', 'hp-systray', 'Pidgin', 'Radiotray', 'Skype']

Или просто разрешить сворачиваться в трей всем, кто умеет:
$gsettings set com.canonical.Unity.Panel systray-whitelist "['all']"

Убрать индикатор клавиатуры:
(необходим HEX-редактор, я, например, пользую Bless)

$sudo cp /usr/lib/gnome-settings-daemon-3.0/libkeyboard.so /usr/lib/gnome-settings-daemon-3.0/libkeyboard.so.back
(возможно библиотека лежит в  /usr/lib/gnome-settings-daemon-2.0/ - это зависит от версии gnome) 
$sudo bless /usr/lib/gnome-settings-daemon-3.0/libkeyboard.so
далее необходимо найти hex-занчение
FF 83 F8 01 0F
FF 83 F8 01 0F = if (g_slist_length (current_kbd_config.layouts_variants) > 1) 
и заменить 01 на 02; должно получиться
FF 83 F8 02 0F
FF 83 F8 02 0F = if (g_slist_length (current_kbd_config.layouts_variants) > 2) 
Что означает: если у вас менее 3 раскладок клавиаторы - иконка показываться не будет



Убрать индикатор сообщений:
$sudo apt-get remove indicator-messages 


Добавить индикатор погоды:
$ sudo apt-get install indicator-weather
+ добавить его в его автозапуск (команда: indicator-weather)

четверг, 9 февраля 2012 г.

Управление сетевыми интерфейсами в UBUNTU

Иногда необходимо переназначить имя сетевого интерфейса. Например, при замене сетевой карты, если используется статика в настройках интерфейса или к имени интерфейса подвязаны скрипты, удобно просто переназначить новый интерфейс eth1 на старый eth0.
Делается это так:
В файле /etc/udev/rules.d/70-persistent-net.rules прописаны все интерфейсы. Привязка идет по MAC-адресу. Чтоб изменить название достаточно в конце строки с необходимым интерфейсом изменить название, например, eth1 меняем на eth0. Reboot. Все, карты видны, как нам нужно.

Полезные команды по управлению сетевыми интерфейсами в Ubuntu:

$ifconfig                                           - вывод инфы об активных интерфейсах

$ifconfig -a                                       - вывод инфы о ВСЕХ интерфейсах

#ifconfig eth0 up                             - активировать интерфейс eth0

#ifconfig eth0 down                        - деактивировать интерфейс eth0

#ifconfig eth0 inet 192.168.10.1     
                                          - назначить интерфейсу eth0 IP-адрес 192.168.10.1

#ifconfig eth0 hw ether 00:e1:12:56:19:b2
                               - назначить интерфейсу eth0 MAC-адрес 00:e1:12:56:19:b2


#ifconfig eth0 netmask 255.0.0.0    
                               - назначить интерфейсу eth0 маску подсети 255.0.0.0



Сделанные таким способом настройки сбрасываются после ребута. На постоянку их можно прописать в /etc/network/interfaces:
 
auto lo
iface lo inet loopback
 
# The primary network interface
auto eth0
iface eth0 inet static
        address 192.168.10.1
        hwaddress ether 00:e1:12:56:19:b2
        netmask 255.0.0.0
        network 192.168.10.0
        broadcast 192.168.10.255
        gateway 192.168.10.2
        dns-nameservers 192.168.10.3, 192.168.10.4
 
# The secondary network interface
auto eth1
iface eth1 inet dhcp
 
Я думаю здесь всё понято. Адрес DNS сервера можно задать здесь или в  /etc/resolv.conf так:

nameserver 192.168.10.3
nameserver 192.168.10.4

Для вступления изменений в силу ребутим сетевые службы:

#/etc/init.d/networking restart

понедельник, 6 февраля 2012 г.

Обновление Ubuntu 9.10 до 10.04

Столкнулся недавно с такой вот проблемой: Обновление Ubuntu 9.10 до 10.04.

Собственно, казалось бы, чего проще - запустил update-manager, настроил обновления релиза и будет тебе счастье... А нет! Компания Canonical официально прекратила поддержку Ubuntu 9.10 и все бы нечего, но для обновления релиза необходимо предварительно обновить все установленные пакеты до последней версии. Вот тут и случилась незадача. Давно я систему не обновлял(

Но выход есть всегда! Обновление происходит абсолютно без болезненно и без потерь если замутить такой финт:

0. В update-manager удалить из репозитория поддержку CD-ROM и включить в обновления релизы с долговременной поддержкой.


1. Необходимо заменить все директивы файлов /etc/apt/sources.list и /etc/apt/apt.conf.d/50unattended с «karmic» на «lucid»:
sudo cp /etc/apt/sources.list /etc/apt/sources.list.backup
sudo sed -i 's/karmic/lucid/g' /etc/apt/sources.list
2. Запустить update-manager: обновить список пакетов и запустить обновление системы.