Архив метки: Linux

Debian, LAMP (linux+apache+php+mysql). Размещаем свой первый сайт.

Данная статья является статьей цикла «Установка LAMP одной командой»

Сразу оговорюсь, что идеология всего последующего мануала рассчитана на то, что вы — единственный администратор сервера. Нет, конечно же, вы можете использовать такую конфигурацию с друзьями. Но не пытайтесь использовать её совместно с теми, кому вы не доверяете. Например, клиентами.
Идеология безопасности в данном случае построена на стандартных настройках вашего дистрибутива, которые могут не кореллироваться с идеологией криворуких PHP программистов.
Хотя, за пару лет использования такой схемы я не находил никаких проблем. Но в теории, при выполнении «тыщиусловий» они возникнуть могут.

В обмен на это мы получаем максимально беспроблемное решение в плане «а вот эта CMS тут работать будет или нет?». Ну то есть фактически, я не встречал ни единой проблемы с тем, чтобы что-то не заработало. Под эту конфигурацию пишут почти все PHPники (кроме PHPшников с большой и светлой кармой, пишуших под nginx+php_fpm).

Начнёмс. По условиям задачи — user — это вы. Сайт разместим в каталоге /home/user/site1.ru, где /home/user — домашний каталог пользователя. Сайт, как вы догадались, будет зваться site1.ru. Почему не /var/www ? Просто мне так удобнее. Да и вам будет проще.
Сайт использует CMS для php+mysql (joomla, drupal, wordpress, как примеры).
Вы уже создали все необходимые DNS записи и по «ping site1.ru» отзывается именно ваш сервер. А так же — по «ping www.site1.ru». Аналогично — для всех доменов, которые мы желаем сделать алиасами для нашего сайта.
Алиас — это дополнительный домен для сайта. Наш сайт будет открываться по site1.ru и по www.site1.ru
Так же, обращайте внимание на то, от имени какого пользователя я выполняю команды (user@ или root@)

Приступим. Создадим нужный нам каталог:
user@Debian:~$ mkdir -p /home/user/site1.ru
Теперь разместим в нём файлы нашего сайта любым удобным нам способом. Я обожаю делать вот так:
user@Debian:~$ cd && wget http://ftp.drupal.org/files/projects/drupal-6.17.tar.gz && tar -xfv drupal-6.17.tar.gz && rm -r site1.ru && mv drupal-6.17 site1.ru
Вы же — уже закачали файлы по FTP в site1.ru, пока я вводил эту команду, не так ли?
Теперь очень важная штука.
user@Debian:~$ cd && chown -R user:www-data site1.ru && chmod -R 750 site1.ru
Что мы сейчас сделали. Мы разрешили себе (user) право на чтение и запись в любые файлы каталога site1.ru, разрешили процессам Apache (веб-сервер) доступ на чтение ко всем файлам данного каталога и запретили чтение каталога всем остальным. Для чего? Чтобы ваш сосед по серверу не смог просмотреть файлы вашего сайта. А там обычно в открытом виде хранится пароль доступа к mysql.
Теперь нам следует внимательно ознакомиться с мануалом к CMSке и узнать, куда необходимо разрешить доступ на запись веб-серверу. Ну… условимся, что у CMSки есть каталог upload, доступ на запись к которому нужен всегда, и файл config.php, доступ к которому нужен на время установки. Выдадим нужные права:
user@Debian:~$ cd /home/user/site1 && chmod -R 770 upload
user@Debian:~$ cd /home/user/site1 && chmod 770 config.php
Всё ещё соблюдаем принцип «доступ к этим файлам должен иметь только владелец и веб-сервер». Третью цифру оставляем нулём, если CMS не требует обратного (есть CMSки, которые проверяют не возможность записи в каталог/файл а просто права на файл. Плохие CMSки)

Теперь создадим базу Mysql — http://debian.pro/99 — я тут уже всё подробно по этой теме описал.

А теперь, собственно, мы расскажем Апачу, что мы желаем разместить сайт.
Создадим и отредактируем файлик, который будет содержать информацию о нашем VirtualHost:
root@Debian:~$ nano /etc/apache2/sites-enabled/site1.ru
У вас откроется страшное окошко, в котором можно печатать.
Вам туда нужно вставить следующий текст (вставка в терминале, напоминаю, обычно, работает по ctrl+shift+v или по shift+insert):

<VirtualHost *:80>
DocumentRoot /home/user/site1.ru
ServerName site1.ru
ServerAlias www.site.ru
ServerAdmin [email protected]
</VirtualHost>

После этого жмём Ctrl+X, отвечаем на вопрос сохранять или нет Y и релоадим Апач:
root@Debian:~$ apache2ctl reload
или
root@Debian:~$ /etc/init.d/apache2 restart

Если вы всё сделали правильно и уже правильно работают ваши DNS серверы — по адресу http://site1.ru должен открыться ваш сайт (или инсталлятор CMSки)… ну а дальше вы знаете)
Ну и не забудьте убрать доступ на запись к тем файлам, запись в которые необходима только во время установки (config.php в нашем случае):
user@Debian:~$ cd /home/user/site1 && chmod 750 config.php

Вообще про виртуалхосты почитать можно тут — httpd.apache.org/docs/2.1/mod/core.html#virtualhost
Там много интересной информации, которая вам понадобится, если вы будете заниматься серверами с кучей сайтов (здесь много размышлений, в основном матом, слышится «нищеброды, не могут купить ispmanager»). А пока оно вам ни к чему.

Установка LAMP одной командой (linux+apache+php+mysql)

Lamp я ставлю одной командой:

Debian:~# aptitude update && aptitude upgrade && aptitude install apache2 php5 libapache2-mod-php5 mysql-server mysql-client php5-mysql phpmyadmin

По ходу установки у вас должны спросить пароль от mysql root’a и phpmyadmin, попросить указать установленные web-серверы, выбираем apache2 стрелочками, нажимаем пробел потом enter.

Перед выполнением этой команды в Ubuntu сделайте sudo su

Как узнать какая ОС (32 или 64 битная) установлена

Для того, что бы узнать какая (32-х битная или 64-х битная) ОС установлена на Linux выполните:

uname -a

Если получите i386 -> ОС 32 битная,
если же х86_64 -> значит 64 битная.

Получить информацию о версии используемого ядра в Linux можно с помощью

"uname -a"

В Windows информацию об ОС можно узнать на вкладке «Общие» окна «Свойства системы»: правый клик на «Мой компьютер» (на рабочем столе или в меню «Пуск») -> «Свойства».

Узнаем время и дату через консоль

Никогда не возникало желания узнать время или дату, когда под рукой только Debian, а телефон с часами где-то запропастились?

Как всегда в Debian все элементарно, нужно только набрать команду:

date

Команда date — как раз для этих целей. Можно почитать ее справку — там много чего интересного.

Как узнать свободное место на диске Linux?

Сколько осталось свободного места? Кто его занял? С этими двумя вопросами сталкиваться приходится постоянно, особенно администраторам файловых серверов. Если на платформе Windows, в графическом окружении выяснить это не составляет особого труда, то консоль серверных версий Linux способна многих привести в замешательство. Однако не стоит пугаться, получить интересующую информацию в среде Linux тоже довольно просто.
Как показала практика, данный вопрос актуален не только для начинающих администраторов. Действительно, недостаточно просто узнать размер файла или папки, а нужно быстро и эффективно выяснить кто именно занял место на диске и чем. Но обо всем по порядку.
Начнем с простого вопроса, как посмотреть сколько свободного места осталось. Для этой цели есть команда
df -h
которая выводит список всех файловых систем, их размер и точки монтирования. Ключ -h позволяет вывести информацию в удобном для восприятия виде — в мегабайтах и гигабайтах, без ключа информация о размере выводится в блоках.
На первый вопрос мы ответили, но, как правило, этот ответ порождает еще больше вопросов. Из полученной информации абсолютно не ясно чем именно заполнен диск. Это могут быть как важные данные, так и фотографии с последнего корпоратива, «заботливо» продублированные пользователями по своим сетевым папкам. В первом случае надо думать об увеличении объема дисковой подсистемы, а во втором можно смело чистить диск и проводить разъяснительные беседы.
Чтобы ответить на второй вопрос нам нужно знать размеры отдельных папок и файлов. В Linux системах это можно сделать командой du с указанием интересующей папки, также можно указать ключ -h для получения удобных для восприятия результатов.
Несмотря на то, что эта команда работает, практической пользы от нее нет. Почему? Сейчас поясню, ниже приведена часть вывода команды:
du -h /usr
Да, мы узнали что папка /usr имеет размер например 584 Мб, но представления о том, что именно занимает основное место в этой папке мы не получили. Цельной картины о заполнении дискового пространства как не было, так и нет.
Но не стоит отчаиваться, на помощь нам придет небольшая утилита ncdu, в стандартной установке ее нет, но она без проблем устанавливается из репозитория:
apt-get install ncdu
Запущенная без параметров утилита выводит информацию о текущей папке, но так как нас интересует вся файловая система, то в качестве параметра укажем корневую директорию:
ncdu /
После непродолжительных вычислений утилита выведет иерархический список директорий, начиная с самого большого размера:
Ну это совсем другое дело. Сразу видно чем именно занято дисковое пространство. Утилита интерактивна, мы можем перемещаться по дереву, входить в папки, изменять представление информации, удалять ненужные файлы и директории. Все возможности программы можно узнать вызвав встроенную справку.
Как видим, утилита проста, но весьма богата возможностями, например можно быстро включить более наглядное представление данных:
Теперь вопрос чем занято дисковое пространство и что с этим делать решается буквально в считанные минуты. На мой взгляд данная утилита должна быть в арсенале каждого системного администратора.

Устанавливаем DHCP Server на Debian и Ubuntu

Здесь я расскажу как на Debian или Ubuntu поднять DHCP сервер для раздачи IP адресов компьютерам в локальной сети.

Установка достаточно простая, приступим:

1) Устанавливаем пакет dhcp-server

# apt-get install isc-dhcp-server

2) После чего, нужно отредактировать конфиг, но сначала нужно уточнить какой сетевой интерфейс смотрит в локальную сеть(если на сервере несколько интерфейсов i-net and lan interfaces)

# ifconfig

Устанавливаем DHCP Server на Debian и Ubuntu

как видим на скриншоте на сервере только один интерфейс eth0 смотрит в локальную сеть. Настроим этот интерфейс для раздачи ip адресов.

# nano /etc/default/isc-dhcp-server

находим

INTERFACES=""

и заменяем на

INTERFACES="eth0"
# nano /etc/dhcp/dhcpd.conf

Находим

option domain-name "example.org";
option domain-name-servers ns1.example.org, ns2.example.org;

Заменяем на

option domain-name "MyLAN.com";
option domain-name-servers 192.168.0.1, 192.168.0.2;
*option domain-name-servers указываем список dns серверов,
 192.168.0.1 = IP адрес сервера первичного DNS
 192.168.0.2 = IP адрес сервера вторичного DNS

Раскомментируем строку

#authoritative;

Далее находим:

default-lease-time 600;
 max-lease-time 7200;
 #subnet 10.254.239.0 netmask 255.255.255.224 {
 #  range 10.254.239.10 10.254.239.20;
 #  option routers rtr-239-0-1.example.org, rtr-239-0-2.example.org;
 #}

Заменяем на:

default-lease-time 32400;
 max-lease-time 72000;
 subnet 192.168.0.0 netmask 255.255.255.0 {
 range 192.168.0.2 192.168.0.254;
 option routers 192.168.0.1;
 }
*default-lease-time 32400; Время на которое выдается IP адрес в секундах.
 *subnet 192.168.0.0 netmask 255.255.255.0 = сеть и маска сети.
 *range 192.168.0.2 192.168.0.254 = пул выдаваемых ip адресов от 2 до 254.
 *option routers 192.168.0.1 = шлюз по умолчанию.

3) Если нужно назначить статическую раздачу IP адресов компьютерам в сети. Добавляем в конец конфига /etc/dhcp/dhcpd.conf

host printServer {
 hardware ethernet 00:0D:87:B3:AE:A6;
 fixed-address 192.168.1.11;
 }
*hardware ethernet 00:0D:87:B3:AE:A6; = MAC адрес сетевой карты printServer-а
 *fixed-address 192.168.1.11; = Выдаваемый IP адрес.

Сохраняем все изменения. И запускаем dhcp сервер.

# /etc/init.d/isc-dhcp-server restart

Установка DEB пакетов щелчком по файлу (как в Ubuntu)

Если вы желаете устанавливать программы в Debian двойным щелчком, как это реализовано в Ubuntu, наберите команду:

aptitude install gdebi

При щелчке по deb-пакету будет открываться мастер установки.

Установка DEB пакетов в Linux

Для установки deb пакета (файла) в Linux нужно установить (если еще не установлен) gdebi

sudo apt-get install gdebi

Далее либо просто кликаем по вашему пакету и откроется графический инсталятор, либо запускаем консоль в папке с пакетом и устанавливаем командой:

sudo dpkg -i имя_пакета

Список установленных программ и пакетов в Linux

В Red Hat/Fedora Core/CentOS Linux- подобных наберите следующую команду чтобы получить список установленных программ

# rpm -qa | less


В Debian Linux список установленных пакетов можно увидеть так:

# dpkg --get-selections

В Ubuntu Linux список установленных программ смотрим так:

# sudo dpkg --get-selections

В FreeBSD установленные программы можно посмотреть так:

# pkg_info | less
# pkg_info apache

Используйте команду pkg_version чтобы показать общий список версий всех установленных пакетов в FreeBSD:

# pkg_version | less
# pkg_version | grep 'lsof'

В OpenBSD команда use pkg_info так же ведет себя как и в FreeBSD и покажет список установленных пакетов:

# pkg_info | less
# pkg_info apache

Установка Webmin в Debian Squeeze

Webmin — это графический web-интерфейс для управления сервером на базе Unix подобных операционных систем. То есть установив Webmin вы можете удалённо конфигурировать и управлять Linux сервер в удобном графическом интерфейсе на русском языке через браузер.

Время не стоит на месте и слово Linux все меньше становится чем то грозным и непонятным для рядового пользователя современных компьютеров. Прошли те времена когда *nix системы использовались только в крупных компаниях и было мало специалистов в этой области нежели сейчас. Одним из программных разработок для управления никсовых систем является Webmin. На момент написания статьи последней версией Webmin является 1.580

Программный продукт позволяет комплексно настраивать любые компоненты и программы на линукс. Из основных задач которые могут быть использованы начинающими системными администраторами, это настройка firewall-ов, конфигурация сети, ftp, веб-сервера и много другое. Это значительно упрощает администрирование сервера на базе Linux.

Добавим нужные библиотеки, если их нету в системе:

aptitude install perl libnet-ssleay-perl openssl libauthen-pam-perl libpam-runtime libio-pty-perl apt-show-versions libmd5-perl

Добавляем репозиторий Webmin, редактируем файл /etc/apt/sources.list

nano /etc/apt/sources.list

В самом конце добавляем строку:

deb http://download.webmin.com/download/repository sarge contrib

Устанавливаем GPG ключ:

cd /tmp
wget http://www.webmin.com/jcameron-key.asc
apt-key add jcameron-key.asc

Устанавливаем Webmin для этого вводим команду:

aptitude update
aptitude install webmin

Запустить Webmin можно через браузер:

https://localhost:10000

Примите сертификат и авторизируйтесь, используя учётную запись пользователя root.

Обратите внимание, что именно протокол https, а не http

Дефрагментация в Linux

Пользователи Windows которые начали пользоваться или полностью перешли на свободный Линукс, часто удивляются, узнав, что в Линуксе нет программы дефрагментации диска. Как же так? Чем дефрагментировать?

Читать далее Дефрагментация в Linux

Редактирование sources.list

Файл sources.list — это список репозиториев пакетов для APT. Этот список используется для выяснения места расположения дистрибутивных пакетов системы.

APT это инструмент управления пакетами, который помогает системному администратору устанавливать и настраивать программы. Первое что нужно знать — файлом конфигурации является файл /etc/apt/sources.list

APT поддерживает огромное количество источников пакетов. Самые популярные источники — CD-ROM, локальные файлы и http и ftp-репозитории. Каждый источник описывается отдельным файлом.

sources.list редактируется только под root‘ом любым текстовым редактором. Для редактирования sources.list, откройте терминал (Ctrl+Alt+T) и выполните команду:

sudo nano /etc/apt/sources.list

Где nano это текстовый редактор которым будем редактировать файл.

Установка клиента и сервера SSH на Linux

В наше время, протокол SSH используется так же активно, как и раньше. Сейчас я расскажу о том, как установить SSH-сервер и SSH-клиент в Linux’е. Для своих опытов беру Debian GNU/Linux.

Устанавливаем клиент и сервер SSH

На сервер под управлением Debian GNU/Linux, необходимо установить пакет сервера OpenSSH:

$ sudo aptitude install openssh-server

Теперь устанавливаем пакет клиента OpenSSH:

$ sudo aptitude install openssh-client

скорее всего клиент уже установлен на Вашей машине, т.к. он входит в большинство основной комплектации в Linux и *BSD.
Установка нареканий вызвать не должна. В Debian GNU/Linux это всё отточено и автоматизированно.

Подключение при помощи клиента OpenSSH

Вводим команду на компьютере-клиенте вида:

$ ssh -l имя_пользователя IP_сервера

или:

$ ssh -l имя_пользователя домен_сервера

например:

$ ssh -l user 192.168.0.1

Так мы попытаемся зайти на удалённый сервер под именем пользователя user. Естественно, учётная запись этого пользователя должна существовать на сервере.
При первом подключении вам будет предложено скопировать ключ, ответьте на этот вопрос положительно. Затем наберите пароль, и можно начинать полноценную работу.

Туннелирование X через SSH

Благодаря клиент-серверной архитектуре, X-сервер прекрасно туннелируется через SSH. Откройте на сервере файл:

$ sudo nano /etc/ssh/sshd_config

и проверьте в нем наличие строки

X11Forwarding yes

Если стоит no, то замените на yes и перезагрузите ssh-сервер командой:

$ sudo /etc/init.d/ssh restart

Теперь вам нужно залогиниться с использованием ключа -X, например так:

ssh -X -l user 192.168.0.1

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

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

$ ssh user@host

Пингвин Linux

На сайте русскоязычной команды FreeBSD нашел вот такое (цитирую):

Во FreeBSD логотип — симпатичный чертёнок (вернее, даемон — нечто вроде личного демона, обязанного помогать своему владельцу и к силам зла отношения не имеющего) с вилами, а в Linux — (глупый) пингвин (робко прячет тело жирное), что достаточно пошло и совсем не круто 😉

После моего к ним обращения что глупо так писать «и совсем не круто» — страница с данным содержимым была удалена в течении пары дней http://www.freebsd.org.ua/doc/ru_RU.KOI8-R/books/qa/freebsd-vs-linux.html

Может Linux’у и не хватает хороших дизайнеров, но это не делает его плохой системой. Проблемы возникают разве что с дровами и может чуть чуть с софтом для новичков, которые привыкли к Windows.