Здесь представлены статьи, опубликованные за все время существования сайта. Для ознакомления со статьей, кликните по ее названию.
Установим необходимые компоненты
user@COMPXX:~$ sudo apt-get install icecast2 ezstream
После установки сервисов необходимо их остановить, если они запущены
user@COMPXX:~$ sudo systemctl stop icecast2.service
Создаем папку для плейлистов
user@COMPXX:~$ sudo mkdir -p /etc/icecast2/playlists
Создаем сам плейлист
user@COMPXX:~$ sudo nano /etc/icecast2/playlists/public.m3u
Пути к звуковым файлам.
Приводим файл настройки icecast2 к следующему виду:
user@COMPXX:~$ sudo nano /etc/icecast2/icecast.xml
<icecast>
<location>Russia</location>
<admin>admin@localhost</admin>
<limits>
<clients>250</clients>
<sources>20</sources>
<queue-size>524288</queue-size>
<client-timeout>30</client-timeout>
<header-timeout>15</header-timeout>
<source-timeout>10</source-timeout>
<burst-on-connect>1</burst-on-connect>
<burst-size>65535</burst-size>
</limits>
<authentication>
<source-password>changeme</source-password>
<relay-password>changeme</relay-password>
<admin-user>admin</admin-user>
<admin-password>changeme</admin-password>
</authentication>
<hostname>radio.site.ru</hostname>
<listen-socket>
<port>8080</port>
</listen-socket>
<http-headers>
<header name="Access-Control-Allow-Origin" value="*" />
</http-headers>
<fileserve>1</fileserve>
<paths>
<basedir>/usr/share/icecast2</basedir>
<logdir>/var/log/icecast2</logdir>
<webroot>/usr/share/icecast2/web</webroot>
<adminroot>/usr/share/icecast2/admin</adminroot>
<alias source="/" destination="/status.xsl"/>
</paths>
<logging>
<accesslog>access.log</accesslog>
<errorlog>error.log</errorlog>
<loglevel>3</loglevel> <!-- 4 Debug, 3 Info, 2 Warn, 1 Error -->
<logsize>10000</logsize> <!-- Max size of a logfile -->
</logging>
<security>
<chroot>1</chroot>
<changeowner>
<user>icecast2</user>
<group>icecast</group>
</changeowner>
</security>
</icecast>
Запускаем сервис
user@COMPXX:~$ sudo systemctl start icecast2.service
Теперь можно проверить работоспособность сервера, перейдя по ссылке http://radio.site.ru:8080.
Если все настроено верно, то вы увидите страницу icecast2. На данный момент на сервере нет источников вещания: не пугайтесь, так и должно быть.
Создание директории конфигурации и логов для ezstream
user@COMPXX:~$ sudo mkdir -p /etc/ezstream
Создаем конфигурацию для ezstream:
user@COMPXX:~$ sudo nano /etc/ezstream/public.xml
<?xml version="1.0" encoding="UTF-8"?>
<ezstream>
<servers>
<server>
<name>Site Radio</name>
<hostname>localhost</hostname>
<port>8080</port>
<password>changeme</password>
</server>
</servers>
<streams>
<stream>
<server>Site Radio</server>
<mountpoint>/public</mountpoint>
<format>MP3</format>
<shuffle>0</shuffle>
<playlist_program>0</playlist_program>
<intake>Site Public</intake>
<svrinfoname>Site Public</svrinfoname>
<svrinfogenre>Public Music</svrinfogenre>
<svrinfodescription>Public Music</svrinfodescription>
<svrinfobitrate>256</svrinfobitrate>
<svrinfochannels>2</svrinfochannels>
<svrinfosamplerate>44100</svrinfosamplerate>
<svrinfopublic>1</svrinfopublic>
</stream>
</streams>
<intakes>
<intake>
<name>Site Public</name>
<type>playlist</type>
<filename>/etc/icecast2/playlists/public.m3u</filename>
</intake>
</intakes>
</ezstream>
Сменим владельца файла настройки
user@COMPXX:~$ sudo chown -R icecast2:icecast /etc/ezstream/public.xml
Создадим точку запуска сервиса ezstream
user@COMPXX:~$ sudo nano /etc/systemd/system/ezstream_public.service
[Unit]
Description=ezstream_public
After=network.target
Requires=ezstream_public.service
[Service]
User=icecast2
Group=icecast
Type=simple
PIDFile=/etc/ezstream/ezstream.pid
ExecStart=/usr/bin/ezstream -c /etc/ezstream/public.xml
ExecReload=/bin/kill -HUP $MAINPID
Restart=always
[Install]
WantedBy=multi-user.target
Обновляем информацио о точках запуска сервисов
user@COMPXX:~$ sudo systemctl daemon-reload
Запускаем созданный сервис
user@COMPXX:~$ sudo systemctl start ezstream_public.service
Если все настроено верно, то перейдя по ссылке http://radio.site.ru:8080/public вы сможете прослушать музыку, которая указана в плейлисте.
Для дополнительных источников вещания необходимо создать файлы настроек ezstream, плейлисты и точки запуска сервиса под каждый источник вещания отдельно.
Для настройки сетевых папок с общим доступом необходимо сначала установить samba:
user@COMPXX:~$ sudo apt-get install samba
Следующее, что необходимо сделать - создать папку для общего доступа (для примера создадим папку /SHARE в корне системы):
user@COMPXX:~$ sudo mkdir -p /SHARE
user@COMPXX:~$ sudo chown -R www-data:www-data /SHARE
user@COMPXX:~$ sudo chmod -R 0775 /SHARE
После этого необходимо изменить настройки в /etc/samba/smb.conf следующим образом:
user@COMPXX:~$ sudo nano /etc/samba/smb.conf
[global]
workgroup = WORKGROUP
security = user
map to guest = bad user
wins support = no
dns proxy = no
[SHARE]
path = /SHARE
guest ok = yes
force user = www-data
browsable = yes
writable = yes
Для применения настроек на лету необходимо перезапустить службы smbd и nmbd:
user@COMPXX:~$ sudo systemctl restart smbd nmbd
После проделанных действий вы можете проверить доступность папки с другого ПК:
Если, перейдя по IP компьютера, вы увидите сетевой ресурс SHARE, значит все сделано правильно.
На этом, собственно, все.
Для установки nginx с поддержкой php, необходимо для начала их установить:
user@COMPXX:~$ sudo apt-get install nginx php php-fpm
Далее необходимо отключить nginx:
user@COMPXX:~$ sudo systemctl stop nginx
Теперь мы отключим стандартные конфигурации:
user@COMPXX:~$ sudo rm -rf /etc/nginx/sites-enabled/*
Следующее, что мы сделаем - создадим папку, где будут храниться страницы (для примера создадим папку /SITE в корне системы):
user@COMPXX:~$ sudo mkdir -p /SITE
user@COMPXX:~$ sudo chown -R www-data:www-data /SITE
user@COMPXX:~$ sudo chown -R 0775 /SITE
Теперь создадим тестовую страницу:
user@COMPXX:~$ nano /SITE/index.php
<?php
phpinfo();
?>
Перед запуском nginx необходимо создать файл настройки:
user@COMPXX:~$ sudo nano /etc/nginx/sites-enabled/site.ru.conf
server {
listen 80;
server_name site.ru;
root /SITE;
index index.php;
location /full {
set $mobile_request 0;
rewrite ^/full(.*)$ $1 break;
}
location ~* \.(jpg|jpeg|gif|css|png|js|ico|html)$ {
access_log off;
expires max;
log_not_found off;
}
location /testing {
fastcgi_pass unix:/does/not/exist;
}
location / {
try_files $uri $uri/ /index.php?$query_string;
}
location ~* \.php$ {
try_files $uri = 404;
fastcgi_split_path_info ^(.+\.php)(/.+)$;
fastcgi_pass unix:/var/run/php/php8.2-fpm.sock;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
location ~ /\.ht {
deny all;
}
}
Обратите внимание на следующие строчки:
location ~* \.php$ {
try_files $uri = 404;
fastcgi_split_path_info ^(.+\.php)(/.+)$;
fastcgi_pass unix:/var/run/php/php8.2-fpm.sock;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
Версия php у каждого может отличаться, поэтому, для того, чтобы проверить версию php, необходимо выполнить следующую команду:
user@COMPXX:~$ php -v
На экране будет указана версия php (в моем случае - 8.2), собственно ее и указываем в файле конфигурации.
После всех проделанных действий необходимо запустить nginx:
user@COMPXX:~$ sudo systemctl start nginx
Если все сделано правильно, то введя в браузере IP компьютера, на котором запущен nginx, вы увидите страницу конфигурации php.
Теперь вы можете создавать свой сайт внутри папки /SITE.
На этом, собственно, все.
Для правильного поднятия FTP сервера необходимо при установке дистрибутива разметить диски так, чтобы у диска, в котором будут храниться файлы, была отдельная точка монтирования, например /ftpsd
Основная папка FTP хранилища: /ftpsd/FTP
Входим в режим суперпользователя
user@COMPXX:~$ su -
#Ввод пароля
Устанавливаем программы для реализации виртуальных пользователей
root@COMPXX:~# apt-get -y install vsftpd libpam-pwdfile apache2-utils
Останавливаем vsftpd
root@COMPXX:~# systemctl stop vsftpd
Настраиваем правила аутентификации
root@COMPXX:~# nano /etc/pam.d/vsftpd
auth required pam_pwdfile.so pwdfile /etc/vsftpwd
account required pam_permit.so
Для создания первого виртуального пользователя вводим команду
root@COMPXX:~# htpasswd -c -d /etc/vsftpwd *имя пользователя*
#Ввод пароля
Для создания последующих виртуальных пользователей вводим команды
root@COMPXX:~# htpasswd -d /etc/vsftpwd *имя пользователя*
#Ввод пароля
Создаем файл /etc/vsftpd.userlist и пишем в нем логины, для которых разрешен вход
root@COMPXX:~# nano /etc/vsftpd.userlist
*имена пользователей*
Запрещаем изменение папки /ftpsd/FTP
root@COMPXX:~# mkdir -p /ftpsd/FTP
root@COMPXX:~# chmod a-w /ftpsd/FTP
root@COMPXX:~# chown nobody:nogroup /ftpsd/FTP
Создаем папки для каждого из пользователей
root@COMPXX:~# mkdir -p /ftpsd/FTP/*имя пользователя*
root@COMPXX:~# chown -R www-data:www-data /ftpsd/FTP/*
root@COMPXX:~# chmod 755 /ftpsd/FTP/*
Для удаления виртуального пользователя (если есть необходимость в этом) вводим команду
root@COMPXX:~# htpasswd -D /etc/vsftpwd *имя пользователя*
Удаление папки пользователя
root@COMPXX:~# rm -rf /ftpsd/FTP/*имя пользователя*
root@COMPXX:~# htpasswd -D /etc/vsftpwd *имя пользователя*
Редактируем файл /etc/vsftpd.conf
root@COMPXX:~# nano /etc/vsftpd.conf
#Включаем поддержку ipv4 и отключаем поддержку ipv6
listen=YES
listen_ipv6=NO
#Скрываем ID пользователя, который зашел
hide_ids=YES
seccomp_sandbox=NO
pam_service_name=vsftpd
#Настраиваем так, чтобы пользователь входил в свою директорию
user_sub_token=$USER
local_root=/ftpsd/FTP/$USER
secure_chroot_dir=/var/run/vsftpd/empty
#Настраиваем таймауты
idle_session_timeout=600
data_connection_timeout=120
#Активируем пассивный режим и назначаем порты
pasv_enable=YES
pasv_min_port=62000
pasv_max_port=62999
#Открываем 20 порт
use_localtime=YES
connect_from_port_20=YES
local_umask=022
#Делаем так, чтобы читались русские символы
utf8_filesystem=YES
ascii_upload_enable=YES
ascii_download_enable=YES
#Настраиваем режимы входа
anonymous_enable=NO
chroot_local_user=YES
allow_writeable_chroot=YES
virtual_use_local_privs=YES
local_enable=YES
write_enable=YES
#Разрешаем заходить на FTP сервер виртуальным пользователям
guest_enable=YES
guest_username=www-data
#Настраиваем списки пользователей, для которых вход разрешен
userlist_enable=YES
userlist_file=/etc/vsftpd.userlist
userlist_deny=NO
dirmessage_enable=YES
#Логирование действий
xferlog_enable=YES
xferlog_file=/var/log/vsftpd.log
xferlog_std_format=YES
#Сертификаты
rsa_cert_file=/etc/ssl/certs/ssl-cert-snakeoil.pem
rsa_private_key_file=/etc/ssl/private/ssl-cert-snakeoil.key
ssl_enable=NO
Установим фаервол, если он не установлен
root@COMPXX:~# apt-get install ufw
Выключаем фаервол, если он включен (sudo ufw status)
root@COMPXX:~# systemctl stop ufw
Теперь настроим порты для фаервола
root@COMPXX:~# ufw allow OpenSSH
root@COMPXX:~# ufw allow 20/tcp
root@COMPXX:~# ufw allow 21/tcp
root@COMPXX:~# ufw allow 22/tcp
root@COMPXX:~# ufw allow 62000:62999/tcp
Включаем фаервол
root@COMPXX:~# systemctl start ufw
Проверяем состояние фаервола
root@COMPXX:~# ufw status
Запускаем vsftpd
root@COMPXX:~# systemctl start vsftpd
Все, можно пользоваться.
Для профилактики можно еще подчистить следы установки, обновить версии приложений и т.д.
root@COMPXX:~# apt-get update
root@COMPXX:~# apt-get upgrade
root@COMPXX:~# apt-get clean
root@COMPXX:~# apt-get autoremove