Вопросы по web-серверу

Там нет маленькой )

chown --help

-R, --recursive operate on files and directories recursively

Для chmod кстати наверно тоже надо.

Почему? :thinking:

Что-то не понял откуда тут руту взяться.

image

Если б так было можно, то в правах не было бы никакого смысла )

Что именно не так?

Про ftp - да, можно и по ssh, но я решил потом не лазить на сервер, а сделать закачку фоток по ftp.

Поскольку я решил сделать каждому сайту своего юзера, то столкнулся с вопросом. Надо создать имя 100. Но adduser отказался делать с таким именем, предложил поменять правила. Зато useradd 100 сработало. Вот и возник вопрос - либо так оставить, хотя советуют adduser, либо покопаться в правилах, чтобы сработало adduser 100 ?

Да, как делать сервак для одного сайта понятно, а вот для нескольких сайтов уже многое умалчивается. Есть гений, который сайты на Debian 7 перенес в папку /home (типа для безопасности), не знаю не знаю…

А зачем такое странное имя?)

Это вроде бы может вызвать проблемы.
например https://unix.stackexchange.com/a/287079/360458

Some commands (eg chown ) can accept either a username or a numeric user ID, so allowing all-numeric usernames would break that.

A rule to allow names that start with a number and contain some alpha was probably considered not worth the effort; instead there is just a requirement to start with an alpha character.

А что за фотки? Откуда они и для чего на сервере?
Вручную перекидывать по фтп это ж всё равно “лазить” )
В зависимости от задачи я б поискал другие способы, автоматически синхронизировать чем-нибудь и т.д. Например Syncthing интересная и простая в использовании штука.

Это сайт японской техники на 100 вольт, потому и пришлось такое оставить, чтобы не путаться. Ах ёла )

Ммм… похоже что да. Ну как это называется тогда? Например, на сайте жму кнопку “Выбрать файл”, и кидаю на сайт с компа. В хтмл тег называется вроде бы инсерт, а вот ftp меня даже немного озадачил, но я сейчас в него не вникаю, и так обхожусь без него - кидаю по ssh.

Ну так от задачи зависит.
Но сейчас вряд ли для чего-либо есть смысл использовать FTP (точнее скорее FTPS, в FTP нет шифрования). Проще SCP/SFTP. GUI для них тоже полно: WinSCP, …

Есть только <input type="file"> )

Точно ) А я вот вспоминаю, вроде не так написал, давно не лазил в html )

Привет.
Есть такой вопрос. Я сайт скинул в папку public_html как пишут в статьях. И получилась такая хрень. То ли это вывпавится при подцеплении к домену, то ли надо ковырять настройки апача и указывать путь. Как я понял, у меня получилось типа vk.com/public_html вместо просто vk.com

Или папку public_html удалить нафиг? Может надо было делать просто /var/www/html/test? Ибо работаю с Filezilla или mc, и как-будто она лишняя как камень.

А как тут картинки вставлять? Никак что ль?

ServerName в httpd.conf какой указан?

Для примера

Пример создания виртуального хоста
При необходимости установки собственных виртуальных хостов сделайте следующее:
Откройте файл “httpd-vhosts.conf”, и создайте в нём блок, примерно, следующего содержания:
<VirtualHost *:80>
Папка, в которой будет корень вашего хоста.
DocumentRoot “C:/apache/test.ru/www”
Домен по которому вы сможете обращаться к виртуальному хосту.
ServerName test.ru
Алиас (добавочное имя) домена.
ServerAlias www.test.ru
Файл, в который будут записываться ошибки.
ErrorLog “C:/apache/test.ru/error.log”
Файл журнала доступа к хосту.
CustomLog “C:/apache/test.ru/access.log” common

Затем в каталоге “apache”, создайте папку “test.ru” (прямо так, с точкой), в которой, в свою очередь, создайте папку “www”.

Следующий шаг создания виртуального хоста – это изменение файла C:\WINDOWS\system32\drivers\etc\hosts операционной системы. Откройте данный файл и добавьте в него две строки:
127.0.0.1 test.ru
127.0.0.1 www.test.ru

Источник: Установка Apache HTTP Server

А где она лежит?

в каких?

Перетащить в поле ввода или через кнопку в середине панели. FAQ по функциональности форума

на сервере полный путь будет /var/www/html/test/public_html Вот думаю, может сайт из /var/www/html/public_html перенести в /var/www/html/ и не надо шаманить? Для первых проб вполне будет ок, а потом подправить при подцеплении домена.

Ну статьи разные, к примеру Драча или 8хост… Но повыше пример я понял, попробую перевести на линуксовый язык, то есть debian9.

Домену всё равно как папка называется.
По умолчанию да, вроде отдается из /var/www/html.
То есть mysite.com/image.jpg будет отдавать /var/www/html/image.jpg.

Если нужно отдавать несколько сайтов (доменов) из разных папок — надо настроить vhost'ы в конфиге.

1 лайк

Навело на мысль. К примеру, я сделал два тестовых сайтах:
/var/www/html/test1/public_html
и
/var/www/html/test2 (без /public_html)
Оба варианта работают, но второй вариант в адресной строке выглядит покрасивее. Возникает вопрос - а для чего делают папку /public_html? Для безопасности? Типа эту папку прикрыть правами типа 555 или 644 или что-то типа того… В статьях не видел ответа. Сейчас порылся про эту папку, она нужна, хотя путь получается длинный. Хмм?

https://www.8host.com/blog/nastrojka-virtualnyx-xostov-apache-v-ubuntu-18-04/

Нужные каталоги можно создать при помощи команд:

sudo mkdir -p /var/www/example.com/public_html
sudo mkdir -p /var/www/test.com/public_html

Там нет /html. Ну и какого-то глубинного смысла тут тоже нет, просто такая структура папок для двух сайтов на одном сервере. В /var/www/example.com можно положить что-то еще, что не должно быть доступно пользователям сайта (.git, конфиги, скрипты вызываемые из public_html/index.php, …).

В результате виртуальный хост будет выглядеть так:

<VirtualHost *:80>
ServerAdmin admin@example.com
ServerName example.com
ServerAlias www.example.com
DocumentRoot /var/www/example.com/public_html
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>

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

Например, вот типичный современный веб-фреймворк (не только в РНР): https://github.com/laravel/laravel

git clone https://github.com/laravel/laravel.git && cd laravel
ls -al
drwxrwxr-x  7 alex alex  4096 сен 30 12:22 app
-rwxrwxr-x  1 alex alex  1686 сен 30 12:22 artisan
drwxrwxr-x  3 alex alex  4096 сен 30 12:22 bootstrap
-rw-rw-r--  1 alex alex 36639 сен 30 12:22 CHANGELOG.md
-rw-rw-r--  1 alex alex  1608 сен 30 12:22 composer.json
drwxrwxr-x  2 alex alex  4096 сен 30 12:22 config
drwxrwxr-x  5 alex alex  4096 сен 30 12:22 database
-rw-rw-r--  1 alex alex   220 сен 30 12:22 .editorconfig
-rw-rw-r--  1 alex alex   778 сен 30 12:22 .env.example
drwxrwxr-x  8 alex alex  4096 сен 30 12:22 .git
-rw-rw-r--  1 alex alex   111 сен 30 12:22 .gitattributes
-rw-rw-r--  1 alex alex   163 сен 30 12:22 .gitignore
-rw-rw-r--  1 alex alex   974 сен 30 12:22 package.json
-rw-rw-r--  1 alex alex  1202 сен 30 12:22 phpunit.xml
drwxrwxr-x  2 alex alex  4096 сен 30 12:22 public
-rw-rw-r--  1 alex alex  3738 сен 30 12:22 README.md
drwxrwxr-x  6 alex alex  4096 сен 30 12:22 resources
drwxrwxr-x  2 alex alex  4096 сен 30 12:22 routes
-rw-rw-r--  1 alex alex   563 сен 30 12:22 server.php
drwxrwxr-x  5 alex alex  4096 сен 30 12:22 storage
-rw-rw-r--  1 alex alex   181 сен 30 12:22 .styleci.yml
drwxrwxr-x  4 alex alex  4096 сен 30 12:22 tests
-rw-rw-r--  1 alex alex   559 сен 30 12:22 webpack.mix.js
ls -al public/
-rw-rw-r--  1 alex alex    0 сен 30 12:22 favicon.ico
-rw-rw-r--  1 alex alex  603 сен 30 12:22 .htaccess
-rw-rw-r--  1 alex alex 1731 сен 30 12:22 index.php
-rw-rw-r--  1 alex alex   24 сен 30 12:22 robots.txt

Снаружи весь код приложения, конфиги, миграции БД, readme проекта и т.д.
В public только то, что надо просто отдавать напрямую: иконка, robots.txt. Можно положить туда статичные файлы типа картинок (логотип, …), иконок интерфейса. JS/CSS файлы скорее всего тоже туда попадут после сборки вебпаком.
И конфиг для Апача, что все остальные запросы надо перенаправлять в index.php.

index.php просто загружает autoload Composer’а из папки уровнем выше (../vendor/autoload.php) и передает управление приложению, которое анализирует запрос, в зависимости от адреса вызывает соотв. код для его обработки (контроллер) и т.д.

Это позволяет например использовать нормальные URL типа /shop/products/my-product/123, или тут /t/voprosy-po-web-serveru/1151/19 и /u/бармалей, вместо каких-нибудь /showthread.php?t=1151&p=19 и /member.php?u=123 на старых сайтах. (voprosy-po-web-serveru это необязательный Slug, запрос сработает и без него).

Ну а про безопасность тут разве что то, что в public не лежат секретные файлы и пользователи не смогут их получить при неправильной конфигурации веб-сервера разрешающей доступ к ним (ну и собственно не надо писать правила для запрета доступа к ним), чтоб не было как-то так: Около 390 тысяч сайтов оставили открытыми каталоги .git с кодом.

А как закрыть доступ? Сначала можно ввести стандартное название папки, а там смотри что хошь. Даже если я постороннее лицо. Закрывать правами типа 544 не стал, вдруг потом появится проблема в работе сайта по причине нечитаемости.

Покажите конфиг-файл Apache и hosts файл ОС-и…

К папкам внутри DocumentRoot?
Конфигом апача как-то так:
https://www.opentechguides.com/how-to/article/apache/115/htaccess-file-dir-security.html
https://stackoverflow.com/questions/19118482/deny-access-to-one-specific-folder-in-htaccess

Но лучше просто не класть их туда :kolobokbatya:

Eсли host.conf то
multi on

127.0.0.1       localhost
127.0.1.1       im.ru   im

# The following lines are desirable for IPv6 capable hosts
::1     localhost ip6-localhost ip6-loopback
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters