Подождите, пожалуйста, выполняется поиск в заданном разделе

Поддержка и ежедневное использование LAMP Linux (Ubunutu), решение проблем возникающих из-за ошибок, мониторинг системы

 Содержание

1. Подключение к удаленному серверу через терминал
2. Ошибки вызывающие отказ работы Apache Mysql Nginx PostFix Proftd
2.1. нет ни с чем связи , например с терминалом , с http
2.2. связь с ssh на 20 порту есть, но все остальное порты не работают.
2.3. удаленная перезагрузка компьютера через терминал
2.4 Решение проблемы «/var/run/mysqld/mysqld.sock не найден»
2.5 Failed to start mysql.service: Unit mysql.service is masked.
2.5 нехватка памяти и проверка свободной
3.Запуск и перезагрузки демонов, процессов, компьютера из терминала Ubunutu
3.1 запуск , остановка и перезагрузка процессов
3.2 обычный запуск процессов
3.3 Запуск в фоне процесса ,с отвязкой от терминала в Ubuntu,
4. Работа с файловой системой
4.1. какие есть в системе физические разделы, диски
4.2 создание папки
4.3 монтирование устройств
4.4 постоянное автоматическое монтирование
4.5. размонтироваиние
6.Донастройка системы
7.автомонтирование вшешних устройств
5.Работа с пользователями
6. КОНФИГУРИРОВАНИЕ ДЕМОНОВ И ПРОЦЕССОВ, настройка времени

6.1 общие вопросы

6.2 конфиг апача

6.3 конфиг нжина

6.4 пользовательский конфиг php.ini
7.установка и обновление програм в ubunutu
8. бесплатный антивирус в ubunutu
9. мониторинг нагрузки
9.1 отчет по нагрузке на сервер вычисляется через системную команду
9.2 использование сетевого интефейса
9.3 отчет по использовапнию памяти
9.4 отчет от пинге сервера со стороны другого сервера
9.5 отчет по логам апача, ково запросов, коды ответов, колво переданных байт
9.6 просмотр системных нагрузок в режиме реального времени
10. создание бекапов и контроль их выполнеия
11. мониторинг безопасности
12. Общая информация о системе
13 .просмотр конфигурации железа

LAMP — акроним, обозначающий набор (комплекс) серверного программного обеспечения, широко используемый во Всемирной паутине. L

. LAMP назван по первым буквам входящих в его состав компонентов:

  • Linux — операционная система Linux;
  • Apache — веб-сервер;
  • MariaDB / MySQL — СУБД;
  • PHP — язык программирования, используемый для создания веб-приложений(помимо PHP могут подразумеваться другие языки, такие как Perl и Python).

 

Предположим, что вы уже настроили сервер и нужна его ежедневная поддержка. и восстановление после сбоев.

Для удаленного доступа из среды Windows нужна специальная программа,  т.н. SSH клиент.

Примером такой программы может служить putty , скачать который можно на официальном сайте http://www.putty.org/ .

В начале вам нужно будет узнать ip удаленного сервера и номер порта на котором должно быть все предварительно установленно включая SSH  сервер .

Так жевам необходим заранее созданный пользователь с заданными логином и паролем для удаленного доступа и имеющий примелегии выполения от root. 

Итак, приступим:

 1. Подключение к удаленному серверу через терминал

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

Если неверно отображается кирилица изменити настройки на UTF8  или скачайте более новый клиент с встроенное его поддержкой и настроенным на UTF8  изначально.

Если нет соединения ,то нужно проверить порт, ip, нет ли пробела или кирилицы в логине пароле, не блокировали или не удаляли ли 
ползователя, не блокирует ли ваш антивирус браундмауер , роутер к соотвествующему порту и ip  адресу.

например утилитой telnet.

 Если вы входите локально с компьютера то достаточно запустить терминал нажав одновременно сочетание кнопок Ctrl+Alt+T

 

 

Вводите логин 

пароль (при вводе пароля ничего не отображентся ни смещение курсора ни звездочек)

если вход выполне успешно то получите приветсвие от операционной системы.

Для того чтобы выполнять команды от root  нужно запустить процесс sudo

войти под рутом sudo su

 и подтвердить пароль

выйти из рута exit один раз

очистить экран терминале -  clear

Для работы с файловой стстемой значительно упрощает и ускоряет работу с ней 
удобный файловый менеджер с псевдографическим интерфесом Midnight Commander :

для запуска введите команду mc

Для копирования нужно  просто выделелить нужное и оно уже все будет  в буфере.

Для вставки нужно нажать  правую кнопку мыши,
Для просмотра истории выполения команд или результатов - нажмите внизу справа стрелку вверх ,

прокрутка  верх бегунока справа - текст вывода терминал после выполнения команд.
 

2. Ошибки вызывающие отказ работы Apache Mysql Nginx PostFix Proftd

 

2.1. тип : нет ни с чем связи , например с терминалом , с http ( ни один известный порт не прослушивается telnet  на данном ид адресе),  проверить доступ ко всем  сервисам, если нет то реально проблема физическая со всем  сервером. Вероятно выключен физически компьютер или нет интеренета на нем.

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

2.2. тип проблем - связь с ssh на 20 порту (или другом, в зависимости от конфигурации) есть, но все остальное не работает.

Для решения таких проблем нужно после подключения через терминал посмотретьвсе нужные логи и попытаться сделать старт незапущенных демонов и процессов с повторным просмотром логов

2.3. только если ничего из вышенаписанного не помогло - общая перезагрузка компьютера (как это сделать написано ниже)

__________________________________________________________________________________

Часто причину ошибок можно найти в логах, почти все программы логируют ошибки в системный файл и свои папки находящиеся в /var/log .

Теперь рассмотрим типичные ошибки которые могут возникнуть у серверного програмного обеспечения.


Ошибка MySQL вида got 20 : проверь дастаточно ли свободного места на жестких дисках(должнно быть больше  5%) если нет, то почистить  ненужное  бекапы /var/www/backup/*,   папку /tmp

Ошибка занят порт- видимо другое или такое же приложение запущено и заняло прослушку данного порта.

проверить утилитой  netstat -tpln

Ошибка MySQL нет сокета-файла...  попробовать сначала несколько раз перезагрузить демон, проверить права на данный файл-сокет, прочитать внимательно логи и если ничегоне помогло,  попробовать его создать , но не вручную, а специальной утилитой.

Ошибка запуска любого сервиса  также может быть из-за нехватки места в разделе /tmp или на всем жостком диске.

Ошибка запуска Apache 2.2 - вероятно нет домена в DNS, проверить оплачены ли днс-записи, если нет, то отлючить из конфига домен . Так же причиной не запуска apache  может быть  синтаксическая ошибка файла конфигураций , для тестирования синтаксиса

можно выполнить команду : apachectl -t 

2.4 Решение проблемы «/var/run/mysqld/mysqld.sock не найден»

 

Работая с реляционной базой данных MySQL, можно столкнуться с проблемой: при старте демона(сервиса)mysqld возвращается сообщение об ошибке:

ERROR 2002 (HY000): Can't connect
to local MySQL server through
socket '/var/run/mysqld/mysqld.sock' (2)

Эта же ошибка в логах выглядит так:

[ERROR] Can't start server : Bind on unix socket: No such file or directory
[ERROR] Do you already have another mysqld server running on socket: /var/run/mysqld/mysqld.sock ?

Иначе говоря, MySQL демон не может подключиться к Unix-сокету. А такое может произойти по двум причинам:

  1. кто-то уже занял сокет;
  2. MySQL не может получить доступ к сокету.

Для проверки первого варианта можно попробовать узнать: а не занимает ли кто-то этот файл.

sudo lsof /var/run/mysqld/mysqld.sock

В результате получаем нечто подобное:

COMMAND PID  USER   FD   TYPE  DEVICE     SIZE/OFF NODE NAME
mysqld  1299 mysql  6u   unix  0xf6546840 0t0      7877 /var/run/mysqld/mysqld.sock

где видно, кто занял файл. Или же

...
lsof: status error on /run/mysqld/mysqld.sock: No such file or directory
...

-- файл отсутствует.

В первом случае всё ясно -- либо так и надо, либо отключаем приложение, занявшее сокет.
Во втором случае стоит создать сокет и/или сделать его доступным mysql, для этого выполняем:

sudo mkdir /var/run/mysqld
sudo mkfifo /var/run/mysqld/mysqld.sock
sudo chown -R mysql /var/run/mysqld

Построчно:

  1. создаём папку, в которой должен лежать файл сокета;
  2. создаём сам сокет командой mkfifo (хотя сокет -- это тоже файл, создавать его можно только специальной программой -- mkfifo);
  3. устанавливаем владельцем папки /var/run/mysqld пользователя mysql.

После чего MySQL уже должен нормально работать.

 

2.5 Failed to start mysql.service: Unit mysql.service is masked.  может появится при переходе с mysql  на mariadb 

The following has fixed the problem.

1.rm -r /var/lib/mysql*		# удаляем все настройки баз данных (можно попробовать пропутить этот шаг. т к после этого вы потеряете все базы данных)
2. mysql_install_db -u mysql	# создание новой базы данных
3.systemctl unmask mysql.service	# активирует  сервис для  systemd
4. service mysql start		# старт сервиса.


2.5 нехватка памяти
проверка свободной
/proc/meminfo
или
free -m

free -m | sed -n -e '3p' | grep -Po "\d+$" реальный размер без учта кеша (но наверное неправильно)
очистка кеша файловой системы в памяти
разово sync && echo 3 | sudo tee /proc/sys/vm/drop_caches

в кроне */15 * * * * root sync && echo 3 > /proc/sys/vm/drop_caches
в конфиге
sudo sysctl -w vm.drop_caches=3 (но это эффекта не даст, т к система бз кешей можт тормозить)

 

3.Перезагрузки демонов, процессов, компьютера из терминала Ubunutu

 

 3.1 запуск, остановка и перезагрузка процессов

 

перезагрузить apache: service apache2 restart или stop или start
перезагрузить nginx: service nginx restart
перезагрузить ftp-сервер: service proftpd restart
перезагрузка почтового сервера  service postfix restart

перезагрузка PHP 7.0 если он работает в режиме FPM/FastCGI  service php7.0-fpm restart

не спешите перезагружать сервер баз данных т к при работающих соединениях пользлвателей возможно некорректное завершение 
работы и база  может испоттится ьез возможности ее восстановления.
лучше предварительно попытаться  всех польователей выгрузить, остановив apache, а потом только рестарт мускула.
перезагрузить mysql : service mysql restart

если не перезапускает по демону, то можно попробовать по процессу например так  /etc/init.d/apache2 restart

Если доступ серверу баз данных есть а другие юзеры немогут подключиться к нему или сильно тормозит, то можно посмотреть что выполнят в данный момент сервер баз данных SHOW PROCESSLIST, KILL 4. завершить по ид процесс. Эти команды запустить непосредственно в mysql, не в терминале. 

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

 

посмотреть(выгрузить) что сейчас запущено и нагрузку: htop - аналог диспетчера задач   windows  в линуксе.
kill ид выгрузить немедленно процесс с ид

перезагрузить компьютер немедленно- команда: reboot

 

3.2  обычный запуск процессов

путь_к_приложению параметры [> куда вывести вывод]

пример компиляции и установки программ из исходников

1. tar -xvf <some_app_name>.tar.gz - распокавать архив
2. cd <имя_пакета>* перейти в нужную папку

3.  ./autogen.sh

4. make

 

3.3 Запуск в фоне процесса ,с отвязкой от терминала в Ubuntu,

(при этом будет закрытие  окна терминала без закрытия открытой программы)

 
способ 1.
1. nodejs /var/www/site/public_html/socket.js > /dev/null
 2. нажать cntr+ Z   (  получить доступ к командой строке)
 3. disown -h %1 (jотключение действия сигнала   SIGHUP)
 4. bg 1  (переводит задачу в фоновый режим)
5. закрыть терминал
 
способ 2
 
$ nohup program > /dev/null &
закрыь терминал
 
способ 3
program & exit
закрыь терминал
 
способ 4.
$ program &
$ disown
закрыь терминал
 
 рекомендую или второй или первый способ для запуска приложения в фоне.
если в первом методе не работакт cntr+Z то попробуйте Ctrl-Alt-F7
 
 

4. Работа с файловой системой

 


Для всех операций с созданием файла каждая программа имеет umask для

понижения максимально дозволеных прав например - 002 


Нужно не забывать, что все файлы созданные под рутом, недоступны остальным, поэтому нужно изменять права 
перед выходом, на них


Изменить привелегии на все файлы в текущей папке: find ./ -type f -exec chmod 777 {} \; 
Изменить привеленгии на все папки  в текущей папке: find ./ -type d -exec chmod 777 {} \;

создать пустой файл в текущей папке: >name.file

отправить на почту содежимое файла(для удобного просмотра): mail -s "hello" мояпочта@mail.ru < 
/etc/php7.0/файл.

Так же важны команды статического и динамического монтирования , форматирования, проверки дисков.

 С монтированием все просто. Допустим, вам нужно подключить новый винчестер для хранения резервных копий или флешнакопитель - флешку или CDRoom.

Если вы раньше использовали ОС Windows, то вы, скорее всего, привыкли к дискам с именами (C:)(D:) и т.д.

В ОС Ubuntu Linux все иначе. Если в Windows для каждого раздела винчестера, CD-привода, флешки или картридера, назначалась определенная буква, к примеру (E:), то в Linux содержимое всех подключаемых и внутренних дисков отображается в виде папок, которые монтируются (подключаются) в корень файловой системы (/) 

В Linux подключение диска в основную файловую систему называется монтирование.

Список всех смонтированных устройств можно узнать командой mount

для выполнения ручного монтирования (например внутреннего нового винчестера )можно сделать следующее: 

1. узнайте какие у вас физически  есть разделы, диски

Узнаём имена разделов.  cat /proc/partitions или  blkid

sdb sda это физические диски цифры - это разделы

2. создайте пустую папку, через которую будет доступ к данному разделу(это и будет монтированине), назначте ей необходимые права доступа

3. выполните монтирование например  sudo mount /dev/sdb5 /folder_for_disk2 (монтирование через имена устройств)

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

$ sudo mount /dev/md0 /mnt/raid0 -t auto -o rw,nls=utf8,noatime

$ mount
....
/dev/md0 on /mnt/raid0 type ext3 (rw,noatime,nls=utf8)

4. если нужно постоянное автоматтическое монтирование то внесите соотвествующие изменения в файл /etc/fstab такое монтирование называется -монтированием через универсально уникальный идентификатор (UUID).

4.1 Узнаем UUID разделов, для этого sudo blkid
Создаём каталоги для монтирования:
4.2 sudo mkdir /mnt/Shared /mnt/Tr5775Net8Gb
4.3 Открываем от имени администратора файл /etc/fstab, содержащий информацию о всех монтируемых при загрузке разделах: sudo nano /etc/fstab
4.4 Добавляем в конец файла,
для NTFS:
UUID="77A62DEF5CCCCC7C" /mnt/Shared ntfs rw,nls=utf8,gid=plugdev,umask=0002 0 0


для FAT и FAT32:

UUID="3E3B-F557" /mnt/TrendNet8Gb vfat rw,exec,codepage=866,nls=utf8,gid=plugdev,umask=0002,nofail,users 0 0
4.5 Монтируем только что вписанные разделы диска:
sudo mount -a

4.5. размонтироваиние

umount <точка монтирования|устройство>

Таким образом, чтобы отмонтировать наш новый раздел, мы можем ввести:

 
$ umount /mnt

или:

 
$ umount /dev/hdb1
 

пример монтирования в кроне при загрузкесистемы


@reboot mount /dev/sdb5 /disk2

 


4.6.Донастройка системы

Теперь диски стали подключаться автоматически, но так как это делается от имени root, у нас пропала возможность на подключенных дисках давать права на общий доступ, чтобы восстановить эту возможность добавим настройку в Samba:
sudo gedit /etc/samba/smb.conf
добавим в секцию [global]:
usershare owner only = false

4.7.автомонтирование вшешних устройств

На данный момент Ubuntu Linux выполняет автоматическое монтирование всех обнаруженных подключаемых устройств (внешние винчестеры, флешки, фотоаппараты и т.д.)в корень файловой системы в директорию /media/. Например, если вы вставите флешку с меткой «Flash_card», то система смонтирует ее в каталог /media/Flash_card. В любом случае вам не надо задумываться куда и как монтировать внешние носители, т.к. они автоматически становятся доступны на панели рабочего стола в меню «Переход».

5.Работа с пользователями  

При создании юзера:

 useradd userlogin

и при испольщовании команды usermod -p пароль должен быть уже зашифрованный,

поэтому пароль установить и изменять лучше через:

passwd userlogin

При создании юзера для FTP (PROFTPD ) его нужно

в конфиге ftp /etc/proftpd/proftpd.conf разрешить

<Limit SITE_CHMOD>
Order deny,allow
AllowUser ftplogin
AllowUser userftplogin
</Limit>

и пользователя добавить   шелл в usermod  Shell: /bin/sh , но  запретить терминал в usermod

Пример всех действий для создания фтп-юзера из командной строки

useradd userftplogin

passwd userftplogin

usermod -g www-data userftplogin  (первичная, основная группа)

usermod -G www-data userftplogin (дополительные группы)

usermod -d /var/www/siteuser/ userftplogin

 

Вот и все. пробум залогиниться, если есть пробеы то проверям все , ип, пароль, порт и даные о юзере.

Посмотреть главную группу getent group userftplogin

Посмотреть все группы groups userftplogin

Тонкости. для юзера может быть только одна главная группа и много дополнительных.
Создать и добавить юзера в группу

useradd -G www-data ftplogin

useradd -G sudo  userlogin


изменить юзера с добавлением в root группу

usermod -aG sudo login

Сделать супер юзером без редактирования файла sudoes:

gpasswd -a login sudo 

Изменить домашнюю директорию

usermod -d /home/homediruser/ username

информация о юзере:

finger userlogin  (предварительно нужно установить )

 


6. КОНФИГУРИРОВАНИЕ ДЕМОНОВ И ПРОЦЕССОВ, настройка времени

редактировать крон: crontab -e крон для каждого юзера свой кроме когда от рута
в кронтабе вконце должна быть пустая строка

скачать ресурс из интернеа в текущюю папку: wget
отправить запрос любым методом: curl

добавить модуль апач: a2enmod headers вручную не лазить в конфиг для этого
добавить модуль php: php5enmod gd (php5enmod mcrypt)вручную не лазить в конфиг для этого
не изменять вручную конфиг sudo только через утилиту иначе потерятся доступ к sudo

Для серверов фтп и мускл - отключение ip6, resolve ip, включение и проброс пассивных портов.
для мускула нужно запустить и проверить что он запущен () процесс 1 для эвентов.
почтовый сервер - настройка DKIM

 
php_value upload_max_filesize 50M
php_value post_max_size 50M и тд

посмотреть и изменить время: date

синхронизировать время с атомными часами

ntpdate -s ntp.ubuntu.com
или установть утилиту самоминхронизации
apt-get install ntp


настройки php могут быть в главном конфике в папке /ets/php/7.0/php.ini
или в user.ini в корне директории - зависит от ностроек (если глобальный конфиг используется тои пхп как модуль апача ) то можно переопрелятт насройки пхп из конфигурациооного файла апача.
если php настроен как fpm , то настройки пхп возможны только из конфигов пхп

Конфигурации под каждый домен(хост) луше разбить на отдельные файлы

/etc/apache2/sites-enabled/host1.com.cfg


примерно с таким содержимым (если nginx как прокси для статическог содержимого)

<VirtualHost *:8282>
ServerAdmin decode@mail.ru
ServerName host1.com
DocumentRoot /var/www/host1.com/public_html/
ServerAlias host1.com

<Directory /var/www/host1.com/public_html/>
Options -MultiViews
AllowOverride All
</Directory>

ErrorLog /var/www/host1.com/logs/error.log

# Possible values include: debug, info, notice, warn, error, crit,
# alert, emerg.
LogLevel info

CustomLog /var/www/host1.com/logs/access.log combined

</VirtualHost>

после изменений конфигурации нужно перетестировать конфиги 
с помощью команды apachectl configtest и только после этого перезапускать


для nginx настройки зранятся в файлах :

/etc/nginx/sites-enabled/host1.com.nginx.conf 
upstream stream1 {
# Адрес back-end'a
server localhost:8282;
}

server {
listen 80;
server_name host1.com www.host1.com ;

access_log /var/www/host1.com/logs/nginx_access.log;
error_log /var/www/host1.com/logs/nginx_error.log;
....
# rewrite ^ https://host1.com$request_uri? permanent;.


# Перенаправление на back-end
location / {
proxy_pass http://stream1;
include /etc/nginx/proxy_params;
}

client_max_body_size 300m;
client_body_buffer_size 128k;
proxy_connect_timeout 75s;
proxy_send_timeout 360s;
proxy_read_timeout 1200s;

# Статическиое наполнение отдает сам nginx

location ~* \.(css|ico|swf|js|jpeg|jpg|bmp|gif)$ {
root /var/www/host1.com/public_html/public;
 
access_log off;
}
}


поисле изменений конфигурации нужно тоже ее перетестировать с помощью команды
service nginx configtext  
и только после этого перезапутить и проверить чт онастройки вступили в силу и сайты на сервере работают



Если на сервере несколько ip то нужно в конфигах
nginx или apache (смотря что слушает внешний 80ый или 443 порт)

иметь отдельные секции не только под хосты но и под ip

 listen ip.ip.ip.ip1:80
{
....
}


а во втором
listen ip.ip.ip.ip2:80
{
}


если php становлен как fpm то настройки пользовательские могут быть в корне домена и иметь примерно следущее содержимое

;;;;;;;;;;;;;;;;;;;
; Resource Limits ;

max_execution_time = 300
max_input_time = 600
;max_input_nesting_level = 64
max_input_vars = 100000
memory_limit = 128M

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
; Error handling and logging ;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

error_reporting = E_ALL
display_errors = On
display_startup_errors = Off
log_errors = On
log_errors_max_len = 1024

;;;;;;;;;;;;;;;;
; File Uploads ;
;;;;;;;;;;;;;;;;

file_uploads = On
;upload_tmp_dir =
upload_max_filesize = 12M
max_file_uploads = 20
post_max_size= 12M
;;;;;;;;;;;;;;;;;;
; Fopen wrappers ;
;;;;;;;;;;;;;;;;;;


default_socket_timeout = 60

 

в файле  .user.ini

пнри этом нужно предварительно разрешить в настройках главного конфига php.ini поддержку таких файлов, его название

и срок перечитки (т.к. он кешироется по умолчанию на мин 10) 

 

и только после этого можно перезапустить php

service php7-fpm restart  

7.установка и обновление програм в ubunutu 

 

1. обновление индекса и самих пакетов apt-get update +sudo apt-get upgrade
2. обновление системы do-release-upgrade,опасно, поэтому, перед этим лучше сделать бэкап всего 
всего.
3. установка без компилиции apt-get install новыйпакет
4. удаленние apt-get remove имяпакета

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

можно попробовать форсированную установку.

если не может подключаться к репозиториям- попробовать добавить резервный ДНС 8.8.8.8 в конфиге apt.

 

8. бесплатный  антивирус   в ubunutu 

установка 
apt-get install clamav

примерная настройка в кроне

00 1 * * * freshclam --quiet -l /var/logs/clam-update.log
10 1 * * * clamscan --move=/etc/clamav/virus_found -r /var/www -i > /var/www/antivirus.log && 
mail -s "antivirus daily" ---@mail.ru < /var/www/logs/antivirus.log
30 3 * * * mail -s "Result Scan $(date)" ---@mail.ru < /var/logs/antivirus.log

 

логи обновления /var/www/clam-update.log
логи проверки /var/www/antivirus.log
зараженные файлы перемещаются в спец папку /virus_found, папка должна быть заранее создана т обладать достаточными правами

 


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

Примечания

=========================
  изменить размер tmp (tmpfs) налету

Смотрим, сколько места у нас сейчас:

$ df -h /tmp
Filesystem Size Used Avail Use% Mounted on
tmpfs 1000M 64K 999M 1% /tmp
Изменяем размер так:

# mount -o remount,size=2G /tmp
Теперь стало получше:

df -h /tmp
Filesystem Size Used Avail Use% Mounted on
tmpfs 2.0G 64K 2.0G 1% /tmp

 

 

 

9. мониторинг нагрузки

 

мотиторить можно двумя способами

или мгновенно на текущий момент времени , онлайн

 

или логирование и потом просмотрю логов за большой интервал времени  сутки, неделю, месяц

сначала рассмотрим логирование на основе журналов и уже ранее собранной информации

можно установить различные утилиты для сбора и анализа нагрузки на сервер по разлиным параметра

(так де можно написать самому такие скрипты)

примеры параметров за которыми можно наблюдать

9.1 отчет по нагрузке на сервер вычисляется через системную команду 

uptime или  /proc/loadavg

Load Average. Средняя загрузка — это среднее значение загрузки системы за некоторый период времени. Средняя загрузка, как правило, отображается в виде трёх значений, которые представляют собой усредненные величины за последние 1, 5 и 15 минут.

пример load average: 0.09, 0.05, 0.01

в php  ее значения можно получить array sys_getloadavg ( void )

затем заносим через определенные интервалы времени в базу данных . например раз в минуту или 5 минут

и строим график

анализ данных о нагруженности процессора

 

Если загрузка Вашей системы превышает 1.00 на интервале в одну минуту, все в порядке. Если же загрузка превышает 1.00 на пяти- или 15-минутном интервале, Вам следует начать принимать меры (конечно, Вам следует также принимать во внимание количество ядер в Вашей системе).

Команда cat /proc/cpuinfo выводит информацию обо всех процессорах в вашей системе. Чтобы узнать количество ядер, «скормите» ее вывод утилите grep:

~$ cat /proc/cpuinfo | grep 'cpu cores'
cpu cores	: 8
cpu cores	: 8
cpu cores	: 8
cpu cores	: 8


. Располагая двумя процессорами(ядрами), можно (теоретически) одновременно выполнять в два раза большее число программ. Это означает, что средняя нагрузка 2.00 (на двухпроцессорном компьютере) будет эквивалентна средней нагрузке 1.00 (на однопроцессорном компьютере). 

если у вас 4 ядра то для вас load average со значением 3-4 будут примелемыми
На многоядерных процессорах значение LA взаимосвязано с количеством процессоров.  Использование на 100% отображается как 1.00 на одноядерной системе, 2.00 на двухъядерной, 4.00 на четырёх и так далее.

Аналогия транспортного потока


Одноядерный процессор похож на дорогу с одной полосой движения. Представьте себе, что Вы управяете движением машин по мосту. Иногда, Ваш мост загружен настолько сильно, что машинам приходится ждать в очереди чтобы проехать по нему. Вы хотите дать людям понять, как долго им придется ждать чтобы перебраться на другую сторону реки. Хорошим способом сделать это будет показать как много машин ждут в очереди в конкретный момент времени. Если машин в очереди нет, подъезжающие водители будут знать, что они сразу смогут проехать по мосту. В противном случае, они будут понимать, что придется ждать своей очереди.
Итак, Управляющий Мостом, какую систему обозначений Вы будете использовать? Как насчет такой:
  • 0.00 означает, что на мосту нет ни одной машины. Фактически, значения от 0.00 до 1.00 означают отсутствие очереди. Подъезжающая машина может воспользоваться мостом без ожидания;
  • 1.00 означает, что на мосту находится как раз столько автомобилей, сколько он может вместить. Все еще идет хорошо, но, в случае увеличения потока машин, возможны проблемы;
  • Значения, превышающие 1.00 означают наличие очереди на въезде. Насколько большой? Например, значение 2.00 показывает, что в очереди стоит столько же автомобилей, сколько движется по мосту. 3.00 означает, что мост полностью занят и в очереди ожидает в два раза больше машин, чем он может вместить. И так далее.
 
load average = 1.00
load average = 0.50
load average = 1.70
Если вернуться к нашей аналогии с мостом, 1.00 означает «одну полностью загруженную полосу движения». Если на мосту всего одна полоса, 1.00 означает, что мост загружен на 100%, если же в наличии две полосы, он загружен всего на 50%.
То же самое с процессорами. 1.00 означает 100% загрузки одноядерного процессора. 2.00 — 100% загрузки двуядерного и т.д.

9.2 использование сетевого интефейса
расшитать можно по счетчику сетевого адаптера (интерфейса)

например при выполнении  

ifconfig eth0 (eth0 -это название вашего интерфейс)
получите набор информации среди которых есть счетчики переданных и принятых байт
 RX bytes:25457904 (24.2 Mb)  TX bytes:6540945 (6.2 Mb)
для того чтобы определить нагрузку . делаете замеры через опрелеленные промежутки времени и делите
их разницы друг на друга умножая на 8
(для перевода в биты)
в итоге будет такая картина

9.3 отчет по использовапнию памяти 
free -m
или
vmstat -s

9.4 отчет от пинге сервера со стороны другого сервера
9.5 отчет по логам апача, ково запросов, коды ответов, колво переданных байт

9.6 просмотр системных нагрузок в режиме реального времени

Для просмотра запущенных процессов вUbuntu Linux при помощи терминала, необходимо набрать в нем следующие команды:

top – команда выдачи данных об активности процессов в Ubuntu 

  

Программа top динамически выдает в режиме реального времени информации о работающей системе, показывает запущенные процессы и потребление ими ресурсов системы. По умолчанию выдает задачи, наиболее загружающие процессор сервера, и обновляет список каждые пять секунд.
При выполнении top в верхней части окна отображается астрономическое время, время, прошедшее с момента запуска системы, число пользователей в системе, число запущенных процессов и число процессов, находящихся в разных состояниях, данные об использовании ЦПУ, памяти и свопа.
Далее идет таблица, характеризующая отдельные процессы. Число строк, отображаемых в этой таблице, определяется размером окна: сколько строк помещается, столько и выводится. Список процессов может быть отсортирован по используемому времени ЦПУ (по умолчанию), по использованию памяти, по PID, по времени исполнения. Переключать режимы отображения можно с помощью команд, которые программа top воспринимает. Это следующие команды (просто нажимайте соответствующие клавиши, только с учетом регистра, то есть вместе с клавишей Shift): 
Shift+N — сортировка по PID; 
Shift+A — сортировать процессы по возрасту; 
Shift+P — сортировать процессы по использованию ЦПУ; 
Shift+M — сортировать процессы по использованию памяти; 
Shift+T — сортировка по времени выполнения. 
Кроме команд, определяющих режим сортировки, команда top воспринимает еще ряд команд, которые позволяют управлять процессами в интерактивном режиме. С помощью команды можно завершить некоторый процесс (его PID будет запрошен), а с помощью команды можно переопределить значение nice для некоторого процесса. Таким образом, эти две команды аналогичны командам kill и renice
Команду том можно использовать со следующими параметрами:
t – Включение и выключение выдачи на экран суммарных данных. 
m – Включение и выключение выдачи на экран информации об использовании памяти. 
A – Сортировка строк по максимальному потреблению различных системных ресурсов. Полезна для быстрой идентификации задач, для которых в системе не хватает ресурсов. 
f – Вход в меню интерактивного конфигурирования данных, выдаваемых на экран командой top. Полезна для настройки команды top для выполнения специфической задачи. 
o – Позволяет вам интерактивно задавать порядок строк, выдаваемой командой top. 
r – Изменение приоритета процессов с помощью команды renice. 
k – Удаление процесса с помощью команды kill. 
z – Переключение между цветным / монохромным вариантом выдачи изображения.

ps – список процессов Ubuntu

Команда ps выдаст краткий список текущих процессов. Вывод команды ps схож с выводом команды top, однако он отображает статический снимок процессов. Для того, чтобы выбрать все процессы, используете параметр - A или - e

Вывод большего количества данных по процессам

 
ps -Al
Для того, чтобы включить выдачу всех данных (будут показаны аргументы командной строки, переданные в процесс):
ps -AlF
 

Вывод списка всех процессов Ubuntu

 
ps ax
 ps axu
 

Отображение потоков (LWP и NLWP)

 
ps -AlFH
 

Вывод информации о параметрах безопасности Ubuntu

 
ps -eo euser,ruser,suser,fuser,f,comm,label
 ps axZ
 ps -eM
 

Вывод дерева процессов

 
ps -ejH
 ps axjf
 pstree
 

Отображение потоков после процессов

 
ps -AlLm
 

Настраиваемая выдача данных


Позволяет выводить данные в последовательности, определяемой пользователем
ps -eo pid,tid,class,rtprio,ni,pri,psr,pcpu,stat,wchan:14,comm
 ps axo stat,euid,ruid,tty,tpgid,sess,pgrp,ppid,pid,pcpu,comm
 ps -eopid,tt,user,fname,tmout,f,wchan
 

Вывод процессов, запущенных пользователем User

 
ps -U User -u User u
 

Вывод ID процессов, запущенных под apache

 
ps -C apache -o pid=
или
pgrep apache
 

Вывод имени для PID 30470

 
ps -p 30470 -o comm=
 

Вывод 10 процессов, потребляющих наибольшее количество памяти

 
ps -auxf | sort -nr -k 4 | head -10
 

Вывод 10 процессов, потребляющих наибольший ресурс процессора

 
ps -auxf | sort -nr -k 3 | head -10
По умолчанию, команда ps выводит только информацию о процессах, запущенных в текущей сессии терминала bash. Для вывода информации по всем процессам необходимо ввести команду ps с параметром 
Для отображения желаемых полей необходимо ввести команду ps с параметром -о поле1,поле2,…, где через запятую перечисляются поля, которые необходимо отобразить. 

free – использование памяти

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

uptime – сообщает, как долго работает система

Команду uptime можно использовать с тем, чтобы определить, как долго работает сервер. Выдаются: текущее время, сколько времени работает система, сколько в текущий момент зарегистрировано пользователей и какова средняя нагрузка на систему в последние 1, 5 и 15 минут.
uptime
 

w – определяем, кто зарегистрирован и что они делают

Команда w выдает информацию о том, какие пользователи сейчас находятся в системе и какие процессы запущены от их имени.
w username
 w User
 

pmap – использование процессами оперативной памяти

Команда pmap выдает данные о распределении памяти между процессами. Использование этой команды позволит найти причину узких мест, связанных с использованием памяти.
pmap -d PID
Для того, чтобы получить информацию об использовании памяти процессом с pid # 26321, введите:
pmap -d 26321
 

vmstat – активность системы, информация о системе и аппаратных ресурсах

Команда vmstat выдает информационный отчет об активности процессов, памяти, свопинга, поблочного ввода/вывода, прерываний и процессора.
vmstat 3
 

Выдача статистики использования памяти

 
vmstat -m
 

Получение данных об активности / неактивности страниц памяти

 
vmstat –a
 

mpstat – использование мультипроцессора

 

 

 

ссылка на эту статью обязательна (с) intellect

Команда mpstat выводит данные об активности каждого имеющегося в наличие процессора, процессор 0 будет первым. Команда mpstat -P ALL выводит данные о среднем использовании ресурсов для каждого из процессоров:
mpstat -P ALL
 

iostat – средняя загрузка процессора, активность дисков

Команда iostat выдает статистику использования процессора, а также статистику ввода/вывода для устройств, разделов и сетевых файловых систем (NFS).
iostat
 

sar – сбор и выдача данных о системной активности

Команда sar используется для сбора информации о системной активности и выдачи ее в виде отчета или ее сохранения. Чтобы увидеть значение считчика сетевой активности, введите:
sar -n DEV | more
Для того, чтобы увидеть значения счетчиков сетевой активности, начиная с 24-го:
sar -n DEV -f /var/log/sa/sa24 | more
С помощью команды sar Вы можете также получать данные в режиме реального времени:
sar 4 5

dstat

который выдает столько же данных, как вместе взятые vmstat, iostat, ifstat и netstat,
В Ubuntu не установлена. Для установки наберите в терминале:
sudo apt-get install dstat
 

Conky

-  средство мониторинга, предназначенное для использования в X Window. Оно хорошо конфигурируемое и позволяет следить за многими системными переменными, в том числе состоянием процессора, памяти, пространства свопинга, дисковыми носителями, температурой, процессами, сетевыми интерфейсами, зарядом батареи, системными сообщениями, поступающими письмами и т.д.

GKrellM

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

htop

- улучшенная версия интерактивного просмотрщика процессов top. htop позволяет просматривать процессы в виде дерева процессов.

10. создание бекапов и контроль их выполнения

 
 
Установка apt-get install zip unzip 
Архивирование и сжатие файлов
bunzip2 file1.bz2 разжимает файл 'file1.gz'
gunzip file1.gz
gzip file1 сжимает файл 'file1'
bzip2 file1
gzip -9 file1 сжать файл file1 с максимальным сжатием
rar a file1.rar test_file создать rar-архив 'file1.rar' и включить в него файл test_file
rar a file1.rar file1 file2 dir1 создать rar-архив 'file1.rar' и включить в него file1, file2 и dir1
rar x file1.rar распаковать rar-архив
unrar x file1.rar
tar -cvf archive.tar file1 создать tar-архив archive.tar, содержащий файл file1
tar -cvf archive.tar file1 file2 dir1 создать tar-архив archive.tar, содержащий файл file1, file2 и dir1
tar -tf archive.tar показать содержимое архива
tar -xvf archive.tar распаковать архив
tar -xvf archive.tar -C /tmp распаковать архив в /tmp
tar -cvfj archive.tar.bz2 dir1 создать архив и сжать его с помощью bzip2(Прим.переводчика. ключ -j работает не во всех *nix системах)
tar -xvfj archive.tar.bz2 разжать архив и распаковать его(Прим.переводчика. ключ -j работает не во всех *nix системах)
tar -cvfz archive.tar.gz dir1 создать архив и сжать его с помощью gzip
tar -xvfz archive.tar.gz разжать архив и распаковать его
zip file1.zip file1 создать сжатый zip-архив
zip -r file1.zip file1 file2 dir1 создать сжатый zip-архив и со включением в него нескольких файлов и/или директорий
unzip file1.zip разжать и распаковать zip-архив

11. мониторинг безопасности

 можно выполнить на основе анализа системного журнала или после установки специальных утилит

 12. Общая информация о системе

Получить информацию о системе можно с помощью команды uname, которая пишет в стандартный вывод имя используемой операционной системы. Если указать одну из описанных ниже опций, на консоль будет выведена более специализированная информация о характеристиках системы:
# uname -a 

Linux Адрес Хоста 4.4.0-36-generic #55-Ubuntu SMP Thu Aug 11 18:01:55 UTC 2016 x86_64 x86_64 x86_64 GNU/Linux

 


Имя операционной системы, дата компиляции ядра, версия и битность i386 — 32 бита, x86_84 — 64 бита.

  • -а выводить всю возможную информацию;
  • -i показать информацию об идентификаторе ядра;
  • -m показать тип текущей аппаратной платформы;
  • -n показать имя системы;
  • -p показать тип процессорной архитектуры сервера;
  • -r показать информацию о релизе операционной системы;
  • -s показать имя используемой операционной системы;
  • -v показать информацию о версии используемой операционной систем.


Информацию об используемом дистрибутиве операционной системы можно также вывести при помощи команды cat /etc/issue:
# cat /etc/issue
Ubuntu 16.04.1 LTS \n \l
Есть и другой способ просмотра информации о дистрибутиве:
# lsb_release -a

No LSB modules are available.
Distributor ID: Ubuntu
Description: Ubuntu 16.04.1 LTS
Release: 16.04
Codename: xenial

 

13 .просмотр конфигурации железа

 

создайте файл с правами на запуск и запустите его

 
echo "System: "`lsb_release -d --short` `uname -m` > ~/about_system.txt # версия ОС и разрядность
echo "Kernel: "`uname -r`" DE: $XDG_CURRENT_DESKTOP Session: $GDMSESSION" >> ~/about_system.txt # ядро, DE и вид сессии
echo "----------------------------------" >> ~/about_system.txt # линия, разделитель
echo "Processor: "`cat /proc/cpuinfo | grep "model name" -m1 | cut -c14-` >> ~/about_system.txt # Процессор
echo "Memory (Gb): "`free | grep Mem | awk '{print int($2/10485.76)/100}'` >> ~/about_system.txt # Размер ОЗУ
echo "Video: "`lspci -k | egrep 'VGA|3D' -A2` >> ~/about_system.txt # Видеокарты
sudo parted -l | grep /dev/sd -B1 -A2 >> ~/about_system.txt # Hard,flash
echo "----------------------------------" >> ~/about_system.txt # разделитель



или с помощью команд
cpuinfo,
и полная инфа lshw

Комментарии (0)


avatar

Чтобы оставить комментарий войдите или зарегистрируйтесь



Выполнение скриптов на стороне сервера PHP (LAMP) NodeJS

Термины: Выполнение скриптов на стороне сервера PHP (LAMP) NodeJS