Найти в Дзене

Опёнок, часть четвёртая, заключительная. OpenBSD и Samba4 - Shared Folders

Итак, у нас есть вебсервер - но как на него добавлять сайты? Нет, конечно можно по scp/sftp - но это не очень удобно, ведь наш основной компьютер под виндой. Конечно лучше бы нам использовать протокол SMB/CIFS - но для этого надо настроить самбу. Итак, ставим. pkg_add samba Правим файл конфигурации. Напомню, нам надо расшарить папку /var/www/web Итак: cd /etc/samba && mv smb.conf smb.conf.orig && mcedit smb.conf wwwx# cat smb.conf [global] workgroup = MYHOME server string = Вебсервер unix extensions = No wide links = yes follow symlinks = yes getwd cache = yes security = user create mask = 0777 directory mask = 0777 map to guest = Bad Password guest account = nobody guest ok = yes hide dot files = yes server min protocol = SMB3 server max protocol = SMB3 ntlm auth = ntlmv2-only log file = /var/log/samba/smbd.%m max log size = 50 [web] comment = Общая папка path = /var/www/web hide unreadable = yes writable = yes printable = no guest ok = yes force user = www force group = www testpar

Итак, у нас есть вебсервер - но как на него добавлять сайты? Нет, конечно можно по scp/sftp - но это не очень удобно, ведь наш основной компьютер под виндой. Конечно лучше бы нам использовать протокол SMB/CIFS - но для этого надо настроить самбу. Итак, ставим.

pkg_add samba

Правим файл конфигурации. Напомню, нам надо расшарить папку /var/www/web Итак:

cd /etc/samba && mv smb.conf smb.conf.orig && mcedit smb.conf

-2

wwwx# cat smb.conf

[global]
workgroup = MYHOME
server string = Вебсервер
unix extensions = No
wide links = yes
follow symlinks = yes
getwd cache = yes
security = user
create mask = 0777
directory mask = 0777
map to guest = Bad Password
guest account = nobody
guest ok = yes
hide dot files = yes
server min protocol = SMB3
server max protocol = SMB3
ntlm auth = ntlmv2-only
log file = /var/log/samba/smbd.%m
max log size = 50
[web]
comment = Общая папка
path = /var/www/web
hide unreadable = yes
writable = yes
printable = no
guest ok = yes
force user = www
force group = www

testparm

Ой, ещё некоторые папки не созданы! Создаём их и выставляем права.

mkdir /var/run/samba

chmod -R 755 /var/samba

chmod -R 755 /var/cache/samba

И проверяем снова.

Не забудьте сделать

chown -R www:www /var/www/web

chmod -R 777 /var/www/web

(правим права доступа к папке)

Если всё верно, правим /etc/rc.conf

pkg_scripts="mysqld php82_fpm nginx smbd nmbd"

И стартуем самбу - два демона: smbd и nmbd

rcctl start smbd && rcctl start nmbd

Проверяем. Облом. Разумеется, современные версии Windows запрещают доступ под гостем и без пароля. Но! Мы всегда на компьютере с Windows сидим под пользователем и у него всегда есть пароль.

Переименовываем пользователя (пусть это будет user) и на нашем вебсервере пишем команду:

smbpasswd -a user

и задаём ему пароль. Рестартуем самбу и пробуем снова.

Доступ к папке \\wwwx\web есть. Создаём (из винды) в ней папку и смотрим права:

-3
-4

Проверка прошла успешно. Удаляем папку и создаём новую - mysite

Теперь в ней надо разместить основную страницу нашего сайта - файл index.html (если честно, я просто скопировал файл nginx и немного его отредактировал)

снова заходим в командную строку от имени администратора, открываем файл hosts (мы рассматривали это в первой статье) и добавляем ещё одну запись:

192.168.137.160 mysite.myhome.local mysite

и точно такую же запись добавляем в /etc/hosts на вебсервере

mcedit /etc/hosts

-5

теперь переходим в папку /etc/nginx/conf.d и создаём там файл mysite.conf следующего содержания:

-6
server {
listen mysite:80;
server_name mysite mysite.myhome.local;
access_log logs/mysite.access.log main;
location / {
root /var/www/web/mysite;
index index.php index.html index.htm;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root /var/www/web/mysite;
}
location ~ \.php$ {
root /var/www/web/mysite;
fastcgi_pass unix:run/php82-fpm.sock;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
location ~ /\.ht {
deny all;
}
}

Перечитаем конфигурацию (для этого есть более мягкий способ, но пока так)

rcctl restart nginx

И проверяем

-7

Всё. Мы получили доступ с винды к папке вебсервера. Можем даже подключить её как сетевой диск, выполнив в командной строке Windows

net use w: \\wwwx\web

А ещё мы на сетевой шаре (Shared Folder) создали папку с нашим сайтом и подключили его. Да, можно было и conf.d вынести в общую папку, но...

  1. Как вы удалённо рестартуете службу nginx?
  2. А если в конфиге ошибка и сервер nginx ляжет - как её искать?
  3. Потом вам захочется прозрачную миграцию сайтов с сохранением баз данных (экспорт-импорт SQL) и в итоге это выльется в монструозное решение. То что я показал вам - более лайтово.

Всем кто дочитал статью до конца - спасибо.

А всем кто осилил все четыре статьи - респект и уважуха.