С ОС на базе Linux я впервые познакомился в этом году. По этому за ниже изложенное просьба сильно не пинать. Я составил небольшой гайд по установке связки Nginx (front-end)+Apache (back-end) (по аргументированному предложению Fell-x27, а далее и по подтвержденному - сюда) на ubuntu 16.04. Данный гайд собирал из нескольких статей и форумов. Но за основу взял вот эту статью. От себя добавил более подробное описание некоторых действий, т.к. они меня в начале работы в Ubuntu вводили в ступор и я не знал что делать. Это сейчас уже они мне кажутся очевидными)). Вот что у меня получилось: 1. Качаем ubuntu (отсюда) серверную версию 16.04 с расширением .ISO 2. Устанавливаем ее на флешку с помощью UltraISO. 3. Установка Ubuntu: - определить раскладку клавиатуры: Нет - переключение языков: Alt+shift - имя компьютера: ubuntu - полное имя пользователя: testing - имя учетной записи: test (используется как логин при входе на сервер) - пароль для пользователя: t_123 (на реальном сервере нужно использовать более сложный пароль) - шифрование домашнего каталога: нет - метод разметки: авто использовать весь диск и настроить lvm (для обучения и этого достаточно - имхо. Подробнее про lvm можно почитать тут) - информация о HTTP-прокси: не заполняем - оставляем пустым - управление обновлением системы: без автоматического обновления - устанавливаемое программное обеспечение: ничего не выбираем – далее сами будем ставить нужные пакеты - установка системного загрузчика GRUB в главную загрузочную запись: да P.S. Очевидные вещи на подобии выбора языка или часового пояса я не стал указывать. Все имена и пароли Вы пишите свои. 4. Первая загрузка на сервере: - обновляем индексы пакетов Код (Text): sudo apt update - обновляем пакеты Код (Text): sudo apt upgrade - устанавливаем nano для корректировки файлов (данный редактор мне больше понравился) Код (Text): sudo apt install nano - перезагружаем ubuntu Код (Text): shutdown -r 0 5. SSH сервер: - устанавливаем SSH-сервер Код (Text): sudo apt install ssh openssh-server - управление SSH-сервером: остановка | запуск | перезапуск Код (Text): sudo service ssh stop | start | restart - открываем основной файл конфигурации SSH-сервера для редактирования (sshd_config) Код (Text): sudo nano /etc/ssh/sshd_config - корректировка sshd_config: * измененяем стандартный порт 22 на любой другой, к примеру 2222 Код (Text): Port 2222 * из семейства обрабатываемых адресов можно выбрать: -- IPv4 Код (Text): AddressFamily inet -- или IРv6 Код (Text): AddressFamily inet6 -- или работу сразу обеих семейств Код (Text): AddressFamily any Я выбираю только IPv4 * разрешаем работу с протоколом sha 2, т.к. sha 1 не безопасен Код (Text): Protocol 2 * запрещаем пользователю root авторизоваться по ssh Код (Text): PermitRootLogin no * если нужно, предоставляем доступ по SSH только указанным пользователям, к примеру test и user3 Код (Text): AllowUsers test user3 * если нужно, предоставляем доступ по SSH только группе, к примеру admins Код (Text): AllowGroups admins * запрещаем удаленный доступ с использованием пустого пароля Код (Text): PermitEmptyPasswords no * сохраняем, подтверждаем и выходим из sshd_config (Ctrl+o– сохранить, Enter– подтвердить, Ctrl+x– выйти) - перезагружаем SSH-сервер Код (Text): sudo service ssh restart - смотрим какой ip-адрес у сервера в сети. Код (Text): ifconfig ip-адрес нужен для удаленной работы через PuTTY (что такое PuTTY см. здесь) - запускаем PuTTY: * переходим "Сеанс", вбиваем ip-адрес сервера и порт (порт вбиваем тот, на который поменяли в sshd_config, 2222) * в "Управление сеансами" вводим любое понравившееся название (к примеру test) и нажимаем "Сохранить", а далее - "Соединиться" - авторизация на основе SSH2 RSA - ключей: * место хранения по умолчанию Код (Text): /home/test/.ssh где test – имя учетной записи * на стороне клиента для создания пары ключей (приватный и публичный) запускаем RunPuTTYgen из пакета PuTTY и в нем выполняем следующее: -- задаем параметры ключа (предпочтительные: "Тип ключа для генерации" выбираем SSH2-RSA, "Длина генерируемого ключа" указываем не менее 2048) -- нажимаем напротив "Генерировать ключевую пару" кнопку "Генерировать" и водим мышкой в поле программы до того момента пока не завершится генерация ключа -- если для ключа нужен пароль, то вводим его в 2-х полях "Парольная фраза" и "Повторить пароль" (к примеру: ssh_123) -- нажимаем напротив "Сохранить сгенерированные ключи" на кнопку "Личный ключ", даем название (к примеру key.ppk) личному ключу и сохраняем где удобно -- нажимаем напротив "Сохранить сгенерированные ключи" на кнопку "Открытый ключ", даем название публичному ключу (к примеру key_pub) и сохраняем где удобно -- RunPuTTYgen не закрываем * заходим на сервер под тем пользователем, которому настраиваем доступ по SSH к серверу * создаем папку для хранения публичного ключа пользователя по след. пути: /home/test/.ssh Код (Text): mkdir /home/test/.ssh * изменяем права на созданную папку .ssh Код (Text): chmod 700 /home/test/.ssh * создаем в новом каталоге .ssh файл authorized_keys Код (Text): nano /home/test/.ssh/authorized_keys * копируем публичный ключ из окна RunPuTTYgen под надписью "Открытый ключ для вставки в файл authorized_keys формата OpenSSH", переходим в PuTTY и вставляем его в файл authorized_keys, нажав в окне PuTTY 1 раз ПКМ (Правую Кнопку Мыши), сохраняем и закрываем * изменяем права на файл authorized_keys Код (Text): chmod 600 /home/test/.ssh/authorized_keys * RunPuTTYgen можно закрыть * настраиваем удаленный доступ с помощью SSH в PuTTY, предварительно закрыв PuTTY: -- в "Управление сеансами" выбираем наш сеанс (к примеру ранее сохраненный test) и нажимаем "Загрузить" -- переходим "Соединение">>"SSH">>"Аутентификация" -- под "Файл с личным ключом для аутентификации" нажимаем "Обзор..." и выбираем путь к приватному ключу (к примеру key.ppk) -- возвращаемся в "Сеанс", в "Управление сеансами" выбираем наш сеанс и нажимаем "Сохранить", а потом "Соединиться" -- авторизация уже должна проходить с помощью пары ключей, а не обычного пароля пользователя (вводим теперь пароль от ключа: ssh_123). Это происходит из-за того, что мы привязали приватный ключ к сеансу "test" - если бы ключ не был привязан, то нужно было бы вводить пароль пользователя (Пароль пользователя: t_123) * включаем авторизацию только по ключам: -- открываем для редактирования конфигурационный файл SSH Код (Text): sudo nano /etc/ssh/sshd_config -- вносим изменения следующим образом: ** авторизация при помощи ключей по умолчанию включена - если не включена, то включаем Код (Text): PubkeyAuthentication yes ** путь, по которому находятся публичные ssh-ключи - для каждого пользователя свой файл в его директории (если строка закомментирована, то ее раскомментируем) Код (Text): AuthorizedKeysFile %h/.ssh/authorized_keys ** сохраняем и закрываем конфигурационный файл SSH ** перезагружаем SSH-сервер Код (Text): sudo service ssh restart ** отключаем аутентификацию по паролю (предварительно убедившись в возможности доступа по ключам, закрыв и заново открыв PuTTY – доступ должен быть по ключам) * открываем основной файл конфигурации SSH-сервера для редактирования Код (Text): sudo nano /etc/ssh/sshd_config * отключаем аутентификацию по паролю Код (Text): PasswordAuthentication no * сохраняем и закрываем конфигурационный файл SSH * перезагружаем SSH-сервер Код (Text): sudo service ssh restart * теперь можно работать удаленно с сервером через SSH-соединение - в нашем случае с помощью настроенной программы PuTTY.
6. Комплексная установка Apache+nginx+php+mysql+phpmyadmin: - устанавливаем apache Код (Text): sudo apt install apache2 - проверяем синтаксис конфигурационных файлов. Код (Text): sudo apache2ctl -t Синтаксис должен быть в порядке, только будет не определено доменное имя сервера - копируем на всякий случай конфиг сервера apache Код (Text): sudo cp /etc/apache2/apache2.conf /etc/apache2/apache2.conf.bak - открываем apache2.conf, Код (Text): sudo nano /etc/apache2/apache2.conf все из него удаляем и вставляем следующее: Код (Text): ServerName 127.0.1.1 Mutex file:${APACHE_LOCK_DIR} default PidFile ${APACHE_PID_FILE} Timeout 300 KeepAlive On MaxKeepAliveRequests 100 KeepAliveTimeout 5 User ${APACHE_RUN_USER} Group ${APACHE_RUN_GROUP} HostnameLookups Off ErrorLog ${APACHE_LOG_DIR}/error.log LogLevel warn IncludeOptional mods-enabled/*.load IncludeOptional mods-enabled/*.conf Include ports.conf <Directory /> Options FollowSymLinks AllowOverride None Require all denied </Directory> <Directory /usr/share> AllowOverride None Require all granted </Directory> <Directory /var/www/> Options Indexes FollowSymLinks AllowOverride None Require all granted </Directory> #<Directory /srv/> # Options Indexes FollowSymLinks # AllowOverride None # Require all granted #</Directory> AccessFileName .htaccess <FilesMatch "^\.ht"> Require all denied </FilesMatch> LogFormat "%v:%p %h %l %u %t \"%r\" %>s %O \"%{Referer}i\" \"%{User-Agent}i\"" vhost_combined LogFormat "%h %l %u %t \"%r\" %>s %O \"%{Referer}i\" \"%{User-Agent}i\"" combined LogFormat "%h %l %u %t \"%r\" %>s %O" common LogFormat "%{Referer}i -> %U" referer LogFormat "%{User-agent}i" agent IncludeOptional conf-enabled/*.conf IncludeOptional sites-enabled/*.conf - сохраняем и перезапускаем сервер apache Код (Text): sudo service apache2 restart - еще раз проверяем синтаксис конфигурационных файлов. Код (Text): sudo apache2ctl -t Должен быть OK - если в браузере запросим несуществующий файл к примеру «адрес/ararar», то получим сообщение об ошибке, в которой указана версия сервера - скрываем версию сервера apache: * откроем security.conf для редактирования Код (Text): sudo nano /etc/apache2/conf-available/security.conf * меняем Код (Text): ServerTokens OS ServerSignature On на Код (Text): ServerTokens Prod ServerSignature Off - сохраняем и перезапускаем сервер apache Код (Text): sudo service apache2 restart - устанавливаем php и некоторые модули к нему Код (Text): sudo apt install php7.0 php-pear libapache2-mod-php7.0 php7.0-mysql - открываем для редактирования php.ini Код (Text): sudo nano /etc/php/7.0/apache2/php.ini * проверяем скрыта или нет версия, найдя строку expose_php в php.ini, и если там, Код (Text): expose_php = On то делаем Код (Text): expose_php = Off * отключаем функцию phpinfo, если не планируете ее использовать, добавив в самое начало disable_functions, перед имеющимися там функциями. "..." - имеющиеся функции, которые там уже вписаны по умолчанию Код (Text): disable_functions = phpinfo,... - устанавливаем mysql с модулем для работы с php Код (Text): sudo apt install mysql-server php7.0-mysql * в процессе установки нужно будет придумать пароль администратора Mysql (это пароль не root системы, а root Mysql) (к примеру mysql_123) - устанавливаем phpmyadmin и некоторые модули к нему, Код (Text): sudo apt install phpmyadmin php7.0-mbstring php-gettext далее, в процессе установки: * выбираем сервер apache2 * отвечаем «ДА» на след. вопрос: «Настроить базу данных для phpmyadmin с помощью dbconfig-common?» * далее просят придумать пароль для автоматической создаваемой базы phpmyadmin - прячем нашу БД, изменив путь к phpmyadmin: * открываем apache.conf Код (Text): sudo nano /etc/phpmyadmin/apache.conf -- предоставляем доступ к phpmyadmin только по указанным IP-адресам, добавив в<Directory /usr/share/phpmyadmin> после DirectoryIndex index.php следующее: Код (Text): Order deny,allow Deny from all # ip-адрес, с которого разрешен доступ. Allow from 192.168.0.100 # ip-адрес, с которого разрешен доступ. Allow from 77.73.66.26 --- Добавлено --- - редактируем файл ports.conf Код (Text): sudo nano /etc/apache2/ports.conf - перебрасываем apache на другой порт и разрешаем принимать только локальные запросы: * меняем строку Код (Text): Listen 80 на Код (Text): Listen 127.0.0.1:81 - создаём в корневой директории сервера папку с названием сайта sitetest Код (Text): sudo mkdir /var/www/sitetest и в ней еще одну папку site Код (Text): sudo mkdir /var/www/sitetest/site - задаём пользователя и группу для папок Код (Text): sudo chown -R www-data:www-data /var/www/sitetest /var/www/sitetest/site - отключаем дефолтный конфиг apache Код (Text): sudo a2dissite 000-default.conf - создаём из дефолтного конфига apache конфиг своего сайта для apache Код (Text): sudo cp /etc/apache2/sites-available/000-default.conf /etc/apache2/sites-available/sitetest.conf - для теста создаем index.php, Код (Text): sudo nano /var/www/sitetest/site/index.php в котором пишем PHP: <?php echo " sitetest ";?> - открываем конфиг своего сайта, Код (Text): sudo nano /etc/apache2/sites-available/sitetest.conf удаляем все из него и вставляем следующее: Код (Text): <VirtualHost 127.0.0.1:81> ServerAdmin webmaster@localhost ServerName sitetest.ru ServerAlias www.sitetest.ru DocumentRoot /var/www/sitetest/site # <Directory /var/www/sitetest/> # Options Indexes FollowSymLinks # AllowOverride All # Require all granted # </Directory> LogLevel warn ErrorLog ${APACHE_LOG_DIR}/error.log CustomLog ${APACHE_LOG_DIR}/access.log combined #Include conf-available/serve-cgi-bin.conf # Если есть ошибка 404, то выводим свою страницу данной ошибки ErrorDocument 404 /er404.html </VirtualHost>
- активируем сайт Код (Text): sudo a2ensite sitetest.conf - проверяем синтаксис Код (Text): sudo apache2ctl -t - перезапускаем сервер apache Код (Text): sudo service apache2 restart - теперь сайт виден только по 127.0.0.1:81, Код (Text): curl 127.0.0.1:81 т.е. локально – удаленно он не виден - устанавливаем nginx Код (Text): sudo apt install nginx - перезапускаем сервер nginx Код (Text): sudo service nginx restart - копируем на всякий случай конфиг сервера nginx Код (Text): sudo cp /etc/nginx/nginx.conf /etc/nginx/nginx.conf.bak - открываем конфиг сервера nginx для редактирования Код (Text): sudo nano /etc/nginx/nginx.conf и приводим к след. виду: Код (Text): user www-data; worker_processes auto; pid /run/nginx.pid; events { worker_connections 768; } http { sendfile on; tcp_nopush on; tcp_nodelay on; keepalive_timeout 65; types_hash_max_size 2048; # разрешаем загружать указанный максимальный объем файла; влияет на заливку дампа БД на сервер client_max_body_size 10m; # скрываем версию сервера nginx server_tokens off; include /etc/nginx/mime.types; default_type application/octet-stream; access_log /var/log/nginx/access.log; error_log /var/log/nginx/error.log; gzip on; gzip_disable "msie6"; gzip_vary on; # Разрешить выдавать в ответе строку заголовка "Vary: Accept-Encoding" gzip_proxied any; # Разрешить сжатие для всех проксированных запросов gzip_comp_level 6; # Степень сжатия (от 1 до 9 цифра больше увеличивает степень сжатия и увеличивает нагрузку на ЦПУ) gzip_buffers 16 8k; # Размер буферов, в которые будет сжиматься ответ gzip_http_version 1.1; # Устанавливает минимальную HTTP-версию запроса для сжатия ответа gzip_types text/plain text/css application/json application/x-javascript text/xml application/xml application/xml+rss text/javascript; #include /etc/nginx/conf.d/*.conf; # Если папка conf.d пустая, то можно закомментировать include /etc/nginx/sites-enabled/*; } - создаём из дефолтного конфига nginx конфиг для своего сайта для nginx Код (Text): sudo cp /etc/nginx/sites-available/default /etc/nginx/sites-available/sitetest.conf Если у вас отсутствует каталог /etc/nginx/sites-available, не беда. Это зависит от сборки и настроения мэйнтейнеров. Возможно, конфиги хранятся в /etc/nginx/conf.d. А может, где-то еще. Для точного ответа вернитесь в дефолтный конфиг, но не в тот, что мы поправили, а в бекап - там, в последней строке идет инклуд каталога с виртуальными хостами. Используйте его здесь и далее. - редактируем конфиг своего сайта для nginx Код (Text): sudo nano /etc/nginx/sites-available/sitetest.conf и вставляем следующее: Код (Text): server{ listen 80; root /var/www/sitetest/site; index index.html index.php index.htm; server_name sitetest.ru www.sitetest.ru; # xrennaideshmyphpmyadmin - это ваш секретный путь к phpMyadmin, таким образом всё # что касается phpMyadmin, будет отдавать Apacheи страница будет корректно отображаться. # Картинки и прочее отдаёт Nginx location ~*^(?!/xrennaideshmyphpmyadmin/).+\.(jpg|jpeg|gif|png|css|zip|tgz|gz|rar|bz2|doc|xls|exe|pdf|ppt|tar|wav|b)$ { access_log off; expires 30d; } # запрет на доступ к .htaccess location ~/\.ht { deny all; } # Если есть ошибка 404, то выводим свою страницу данной ошибки. error_page 404 /er404.html; # передача запроса апачу location /{ proxy_pass http://127.0.0.1:81/; # Порт на котором висит Apache proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-for $remote_addr; proxy_set_header Host $host; proxy_connect_timeout 300; proxy_send_timeout 300; proxy_read_timeout 300; proxy_redirect off; proxy_set_header Connection close; proxy_pass_header Content-Type; proxy_pass_header Content-Disposition; proxy_pass_header Content-Length; } } - создаем ссылку на новый конфиг своего сайта для nginx Код (Text): sudo ln -s /etc/nginx/sites-available/sitetest.conf /etc/nginx/sites-enabled/sitetest.conf - перезапускаем сервер nginx Код (Text): sudo service nginx restart - чтобы apache получал в логах ip-адреса клиентов нужно установить модуль libapache2-mod-rpaf Код (Text): sudo apt-get install libapache2-mod-rpaf - если вышеуказанные настройки прошли удачно, то удаляем не нужные элементы: * удаляем папку/var/www/html Код (Text): sudo rm -rf /var/www/html * удаляем дефолтный конфиг сайта apache Код (Text): sudo rm /etc/apache2/sites-available/000-default.conf * удаляем дефолтный конфиг сайта nginx Код (Text): sudo rm /etc/nginx/sites-available/default и ссылку на него Код (Text): sudo rm /etc/nginx/sites-enabled/default * удаляем копию основного конфига apache Код (Text): sudo rm /etc/apache2/apache2.conf.bak * удаляем копию основного конфига nginx Код (Text): sudo rm /etc/nginx/nginx.conf.bak * удаляем проверочную страницу сайта Код (Text): sudo rm /var/www/sitetest/site/index.php - перезагружаем apache и nginx Код (Text): sudo service nginx restart sudo service apache2 restart - проверяем доступ к phpmyadmin, зайдя по —адрес/phpmyadmin/ (если не открывается, удаляем в адресной строке 81-ый порт, если появился) - проверяем как грузится свой сайт. Если есть какие-либо ошибки - исправляем. - КОНЕЦ! P.S. Из зала подсказывают, что ставить PMA на продакшен не обязательно. Работать с БД без проблем можно через консоль по ssh или, если вам больше нравится графический интерфейс, то через удаленные редакторы вроде MySQL WorkBench. Кроме того, многие IDE тоже могут выступать в роли удаленного клиента. А еще можно использовать пакетный деплой, чтобы скрипты на сервере сами ковыряли базу согласно инструкциям в патче и тд и тп. Вариантов уйма, но, главное, не забудьте правильно настроить пользователей БД, особенно привелегии, и, разумеется, адреса, с которых будет возможен доступ. --- Добавлено --- Что еще можно добавить для повышения безопасности к вышеописанному? Буду рад узнать.
прошу дополнить упоминание Putty такой программой как mremoteng, а то путти это совсем анахронизм и не слишком удобный, если серверов больше одного. сам я пользуюсь mobaxterm.
Дело в том, что я знаком только с PuTTY. Вот по этому только про нее и написал. Может ты сам расскажешь про ту программу, которой пользуешься?
Мимикрокодилю православный Xshell. И это, автор, выв выбрали хреновую площадку для факу и статей, вам на хабрач или какой-нить бложик. Но, спасибо.
Позже попробую - спс) Я до хабра еще не дорос) А на данном форуме я давно нахожусь - люди тут приятные и отзывчивые, если научиться правильно вопросы задавать (правда, у меня не всегда получается вопрос правильно задать из-за неопытности) p.s. И тебе спасибо за тесты))
На данный момент актуальна уже ветка php7.1, однако, 7.0 тоже не выброшена и развивается параллельно. Для нее тоже выходят патчи безопасности и багфиксы. Во всех командах в данном туторе, связанных с php7, можно смело писать php7.1, если нужна другая ветка.
Может кому пригодится, кого задолбало, что в дефолтных репах старье валяется. Годные репы: 1) Репа с папачем(+ модули); deb-only 2) Репа с пыхой(+ модули); deb-only 3) Репа с нжинксой, официальная, мультидистриб; 4) Репа мускуля. По ссылке deb-only, но рядом остальные лежат; Да прибудут с вами свежие стейблы.
А какой из 4 вариантов предыдущего поста мне брать и вообще как действовать, раз у автора темы дистрибутив на флэшке, а сам планирую брать VDS хостинг в интернете? Чего в этой теме не хватает, что ещё надо доустановить, может быть какой то дополнительный модуль полезный?
А какая разница? В репозиториях тысячи пакетов. Кто ж знает, что для вас полезно? Зависит от базы дистрибутива. Если deb-based, то все 4. Если rpm-based, то только два последних подойдут. Альтернативы для 1 и 2 надо искать самостоятельно.
Пробовал на днях предложение Fell-x27 и к сожалению в данном туторе чистая замена с "php7" на "php7.1" не пройдет, т.к. на данный момент времени в стандартных репозиториях ubuntu 16.04 лежит версия php7.0. Эксперимент ставил на виртуальной машине. Касаемо репозиториев. До недавнего времени я имел обобщенное понятие слова "репозиторий". Т.е. я в общем понимал, что где-то в ОС есть файл, в котором лежат ссылки на разные сервера. На этих серверах лежат разные версии разных программ для данной ОС. При загрузке ОС появляется информация о кол-ве доступных обновлений. Т.е. во время загрузки (на сколько я понял) ОС проверяет обновления в репозиториях и выдает инфу о кол-ве новых версий программ. Через update->upgrade обновляем. До недавнего времени мои знания о репозиториях на этом заканчивались. Т.е. я не знал как с ними правильно работать (как правильно добавлять, удалять, редактировать). Погуглив - узнал некоторую информацию по данной теме. Но у меня еще остались некоторые пробелы. Некоторые из них: 1. Каким репозиториям (не считая оф. сайты программ) можно доверять? Почему? 2. В ОС ubuntu есть файл (/etc/apt/sources.list) с ссылками на репозитории и есть папка (/etc/apt/sources.list.d), в которой лежат так же файлы с ссылками на репозитории. В чем их различие? К примеру, Fell-x27 предложил добавить 4 репозитория. С 3 и 4 пунктом в плане безопасности для меня ясно - оф. сайты. А как быть с предложенными в 1 и 2 пунктах? На сколько им можно доверять? И почему?
Тем, у которых широкая общественная поддержка. Ты такие вещи еще часто увидишь. Это для организации модульных списков. По факту, при проверке репозиториев, все, что лежит в list.d будет подцеплено к файлу list, а потом прочитано как единое целое. В линуксе так организовываются конфиги многие. Это очень удобно, когда вместо одной огромной простыни конфигов есть десяток мелких файлов, где в каждом описан только кусочек конфига. Их мэйнтейнер - Ondřej Surý. Человек, уважаемый и довольно широко известный в php-сообществе. Он стартовал кампанию по запиливанию альтернативных репозиториев для php и apache на патреоне, в свое время, и имеет с этого деньги в виде пожертвований стабильных. Других репозиториев для пыхи на deb-системах с такой оперативностью обслуживания лично я не встречал. Во всех мануалах на просторах интернетов "как подключить свежий пых к деб-системе", ты увидишь ссылки именно на репы Ондрея. Крч, ему можешь верить, он бро. Плюс...этот репозиторий выставлен на Launchpad - это официальная площадка для частных репозиториев от Canonical. Если чуть какой косяк или жалоба - репозиторий будет публично расстрелян. Плюс это таки опенсорс - ты всегда можешь взять исходники, проверить хэш-суммы, и собрать все сам, если не доверяешь Онджеевым бинарникам. --- Добавлено --- Стандартные репозитории - это всегда болото. Софта там много, мейнтейнеры все не успевают обновлять своевременно. То, что там 7.0 появилась - уже круто. Когда гайд писался, там только 5.5 была. Даже не 5.6.