Включение mod_rewrite в Nginx

При переносе сайта на свой хостинг столкнулся с такой проблемой, что не работает mod rewrite в связке nginx+apache, убил несколько часов на гугл, однако, решение как всегда оказалось банально и в принципе попадало мне на глаза ни один раз, но я с упорством достойным лучшего из твердолобых продолжал поиски решения на просторах этих ваших интернетов 🙂
В общем то все просто, как только мы прописываем в .htaccess Rewrite Rule (правила преобразования) и включаем их на сайте, то наш доблестный nginx сразу же выдает нам ошибку 404, лечим это очень просто в секцию «location /» добавляем try_files
В итоге получаем что-то вида:

        location / {
                root   /var/www/example.com;
                index  index.php;
                try_files $uri $uri/ /index.php;
        }

Для apache 2 это решается это при помощи добавления .htaccess в корень сайта.

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index.php$ - [L]
RewriteCond %{REQUESTFILENAME} !-f
RewriteCond %{REQUEST
FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>

Все работает, теперь можно использовать ЧПУ, например в WordPress, Joomla, Drupal, ну и пользоваться другими возможностями Rewrite Rules.

Перенос FreeBSD сервера с ZFS root файловой системой на новый pool

Попались мне под руку пара винтов побольше и еще один компьютер. Наслышан я о чудесах и простоте переноса ZFS и решил попробовать.

Задача перенести сервер под FreBSD, что уже работает, на новый сервер с помощью ZFS.

Ну и так сказать своеобразный бекап.

Бекап это сомнительно. Потому как на исходном тоже стоит всё на «мирроре»

Создаем ключ

# ssh-keygen

# cat /root/.ssh/id_rsa.pub | ssh root@127.0.0.1 ‘cat >> /root/.ssh/authorized_keys’

[root@server ~]# zpool list -v

NAME                                     SIZE  ALLOC   FREE    CAP  DEDUP  HEALTH  ALTROOT

Грузимся с CD и работаем в Live-режиме mfsBSD

# mkdir /root/.ssh

# camcontrol devlist

vi /etc/ssh/sshd_config 

В конфиге разрешаем root-у логиниться. 

Отключаем DNS проверку, чтобы побыстрее было немного. 

PermitRootLogin yes 

UseDNS no 

Задаем пароль для пользователя root: 

# passwd root 

Указываем интерфейсу нужный IP адрес 

ifconfig re0 add 127.0.0.0.1/24 

или dhclient re0

запускаем sshd: /etc/rc.d/sshd onestart

Далее создаём разделы…

# gpart create -s gpt ada0

# gpart add -b 40 -s 512k -t freebsd-boot ada0

# gpart add -s 8g -t freebsd-swap ada0

# gpart add -t freebsd-zfs ada0

[root@mfsbsd ~]# gpart show

=>        40  1953522976  ada0  GPT  (932G)

          40        1024     1  freebsd-boot  (512K)

        1064    16777216     2  freebsd-swap  (8.0G)

    16778280  1936744736     3  freebsd-zfs  (924G)

Создаем пул:

# zpool create -f tank /dev/ada0p3

Пул готов к приёму данных.

Переходим на сервер-источник. 

Создаем рекурсивный снапшот, который и будем передавать:

# zfs snapshot -r tank@21-04-13 

Передаем его на сервер приемник:

# screen

# zfs send -vR tank@21-04-13 | ssh 127.0.0.0.1 zfs recv -F tank

Ждем окончания передачи. У меня примерно 213 GB передавалось около 12 часов.

Переходим опять на сервер-приемник root@mfsbsd:~ 

# csh

# zfs list -t snapshot 

# zpool list

# mkdir /tmp/tank

# mount -t zfs tank/root /tmp/tank

# gpart bootcode -b /tmp/tank/boot/pmbr -p /tmp/tank/boot/gptzfsboot -i 1 ada0

# chroot /tmp/tank

Ввиду того, что с сервера-источника нам передалось всё, то поправим немного /etc/fstab. Дело в том, что своп на источнике подключен в fstab по меткам gpt. 

Настройка по меткам

# cat /etc/fstab

/dev/gptid/dadde41e-913d-11eb-92f9-ac1f6bd74a62 none swap sw 0 0

# gpart list

2. Name: ada0p2

   Mediasize: 8589934592 (8.0G)

   Sector Size: 512

   Stripe Size: 4096

   Stripe Offset: 0

   Mode: r0w0e0

   defimedia: HD(2,GPT,fffe5673-d7ad-11dd-a24d-50465d8ab2bb,0x428,0x1000000)

   rawuuid: fffe5673-d7ad-11dd-a24d-50465d8ab2bb

   rawtype: 516e7cb5-6ecf-11d6-8ff8-00022d09712b

   label: (null)

   length: 8589934592

   offset: 544768

   type: freebsd-swap

   index: 2

   end: 16778279

   start: 1064

# vi /etc/fstab 

/dev/gptid/dadde41e-913d-11eb-92f9-ac1f6bd74a62 none swap sw 0 0 >

fffe5673-d7ad-11dd-a24d-50465d8ab2bb

Второй вариант без меток

[root@msfbsd ~]# cat /etc/fstab 

# Device Mountpoint FStype Options Dump Pass#

### /dev/gpt/swap0 none swap sw 0 0

>

/dev/ada0p2 none swap sw 0 0

Правим файлы в скопированной системе.

[root@mfsbsd ~]#

# zfs umount -a

# exit

Скажем кто у нас bootfs и сделаем экспорт:

# zpool set bootfs=tank/root tank

# zpool export tank

# shutdown -r now

На источнике можно удалить ненужный снапшот: 

# zfs destroy -r tank@move

Взял на afabla немного подправил на свой лад. Автору респект!

FreeBSD изменение имени хоста без перезагрузки

Сегодня поговорим про изменение имени хоста в FreeBSD без перезагрузки.

А вы знаете, как изменить имя устройства в FreeBSD, используя параметр командной строки?

Вам нужно использовать команду hostname, чтобы отобразить имя текущего хоста. Пользователь root может задать имя хоста, предоставив аргумент команде hostname. Тем не менее, редактирование файла /etc/rc.conf является хорошим способом сохранить постоянное имя хоста при перезагрузке системы. Откройте приложение терминала и введите следующую команду.

Отобразите текущее имя хоста FreeBSD

Просто введите следующую команду:

$ grep hostname /etc/rc.conf

ИЛИ

$ hostname

FreeBSD-Show-Hostname

Пример вывода:

Команда смены имени хоста FreeBSD

Процедура изменения имени компьютера во FreeBSD:

  1. Введите следующую команду для редактирования /etc/rc.conf с помощью текстового редактора vi: sudo vi /etc/rc.conf
  2. Удалите старое имя и установите новое имя в переменной hostname:
    Далее отредактируйте файл /etc/hosts: sudo vi /etc/hosts
  3. Замените любое имя существующего компьютера новым.
  4. Обновите имя хоста для текущего сеанса, введя следующую команду: sudo hostname new-name-here
  5. Необязательно: перезагрузите систему для того чтобы изменений вступили в силу: sudo reboot

Как изменить имя хоста сервера FreeBSD без перезагрузки системы?

Введите следующие команды на сервере FreeBSD:

$ sudo hostname new-server-name-here

Затем отредактируйте файл /etc/rc.conf и измените имя хоста:

$ sudo vi /etc/rc.conf

Пример:

hostname=»new-server-name-here»

Сохраните и закройте файл. Наконец, отредактируйте файл /etc/hosts и обновите строки, которые читают ваше имя старого хоста:

$ sudo vi /etc/hosts

Из:

127.0.0.1 old-host-name

В:

127.0.0.1 new-server-name-here

Сохраните и закройте файл.

Параметры команды hostname

Включите информацию о домене в выводимое имя. Это поведение по умолчанию:

$ hostname -f

Отключите любую информацию о домене в выводимом имени:

$ hostname -s

Вывод информацию о домене:

$ hostname -d

Получение дополнительной информации

Прочтите следующие страницы руководства:

$ man 5 rc.conf$ man 1 hostname

Спасибо за уделенное время на прочтение статьи!

Источник