Установка webserver'a на FreeBSD

Answer

Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industry's standard dummy text ever since the 1500s, when an unknown printer took a galley of type and scrambled it to make a type specimen book. It has survived not only five http://jquery2dotnet.com/ centuries, but also the leap into electronic typesetting, remaining essentially unchanged. It was popularised in the 1960s with the release of Letraset sheets containing Lorem Ipsum passages, and more recently with desktop publishing software like Aldus PageMaker including versions of Lorem Ipsum.

Для начала мы идём на сайт FreeBSD и скачиваем последний доступный дистрибутив. На момент написания статьи это 11.1 (так же его можно скачать на моей файлопомойке). Записываем на флешку/болванку, ставим и так далее. Приступим к настройке минимальной настройке:

Для начала разрешим доступ руту (не безопасно конечно) но мне так удобнее, после всех действий можно будет отключить его

ee /etc/ssh/sshd_config

Раскоментируем 2 строчки и изменим значение PermitRootLogin на yes

Port 22
PermitRootLogin yes

Перезапустим демона

/etc/rc.d/sshd restart

Теперь мы можем удалённо цепляться к серверу по ssh используя root.
Теперь не много улучшим безопасность сервера: в файл /etc/sysctl.conf добавим следующие строки

net.inet.tcp.blackhole=2
net.inet.udp.blackhole=1

Разрешим смотреть запущенные процессы только root

kern.ps_showallprocs=0

ну и напоследок защитимся от брутфорса

echo "MaxStartups 5:50:10" >> /etc/ssh/sshd_config

и снова рестартанём демона sshd

/etc/rc.d/sshd restart

После чего нам следует обновить дерево портов

portsnap fetch update
portsnap fetch extract

ну и саму систему не забудем обновить на всякий случай

freebsd-update fetch
freebsd-update install
reboot

Теперь, когда всё готово для установки, приступим. Для начала нам понадобится веб панель управления. Ставить её не обязательно но в некоторых случаях она оказывается полезна. Да и менять какие конфиги в будущем будет проще: не придётся цепляться по ссх, а достаточно будет зайти в веб панель и поменять пару параметров того же sshd_config, если вдруг такая необходимость будет.


cd /usr/ports/sysutils/webmin
make install clean

Добавим его в автозагрузку

echo 'webmin_enable="YES"' >> /etc/rc.conf

и запустим установку

/usr/local/lib/webmin/setup.sh

На все вопросы можно отвечать по умолчанию, кроме естественно пароля. После установки запускаем webmin

/usr/local/etc/rc.d/webmin start

После старта можно сразу попасть в веб панель и посмотреть как она выглядит по адресу http://вашIP:10000, если конечно порт не меняли по умолчанию.


В последствии из панели webmin'a можно будет и обновлять установленные компаненты. Идём дальше: установим apache

cd /usr/ports/www/apache24
make install clean
 
Все параметры оставляем по умолчанию и спокойно дожидаемся окончания установки, после чего добавляем apache в автозагрузку. Если https не требуется, вторую строчку можно не добавлять

echo 'apache24_enable="YES"' >> /etc/rc.conf
echo 'apache24ssl_enable="YES"' >> /etc/rc.conf

Далее нам понадобится интерпретатор php. Я предпочитаю 5 версию (можете использовать 7). И сразу поставим дополнения к нему

cd /usr/ports/lang/php56
make install clean
cd /usr/ports/lang/php56-extensions

Вот тут рекомендую воспользоваться командой

make config-recursive

которая позволит выбрать компоненты. Прописывать её нужно до тех пор пока не перестанет появляться окно с выбором. В данном случае нас интересует только mysql, поэтому отметим только его, остальное же оставим без изменений

make install clean

После чего ставим модуль php для apache

cd /usr/ports/www/mod_php5
make install clean

Теперь установим MySQL. Я опять же предпочитаю для работы на простом сервере 5 версию

cd /usr/ports/databases/mysql56-server
make install clean

После установки, как обычно добавим в автозагрузку и сменим место дислокации баз по умолчанию.

echo 'mysql_enable="YES"' >> /etc/rc.conf
echo 'mysql_dbdir="/web/mysql"' >> /etc/rc.conf

Теперь создадим папки и выдадим им права

mkdir /web && cd /web && mkdir mysql && chown mysql:mysql mysql/

Создадим файл конфигурации

ee /web/mysql/my.cnf

Со следующим содержимым

[client]
port = 3306
socket = /tmp/mysql.sock
[mysqld]
port = 3306
bind-address =127.0.0.1
socket = /tmp/mysql.sock
skip-external-locking
key_buffer_size = 256M
max_allowed_packet = 1M
table_open_cache = 256
sort_buffer_size = 1M
read_buffer_size = 1M
read_rnd_buffer_size = 4M
myisam_sort_buffer_size = 64M
thread_cache_size = 8
query_cache_size= 16M
thread_concurrency = 8
#log=/var/log/mysql.log # Лог всех SQL-запросов
#log-bin=/var/log/mysql-bin.log # Бинарный лог всех SQL-запросов
log-error=/var/log/mysql-err.log # Лог ошибок в работе демона СУБД MySQL
#log-slow-queries=/var/log/mysql.slow # Лог всех медленных SQL-запросов
#log-bin=mysql-bin
#log=/var/log/mysql.log
#binlog_format=mixed
server-id = 1
[mysqldump]
quick
max_allowed_packet = 16M
[mysql]
no-auto-rehash
[myisamchk]
key_buffer_size = 128M
sort_buffer_size = 128M
read_buffer = 2M
write_buffer = 2M
[mysqlhotcopy]
interactive-timeout

Закоментированные строчки включаем в процессе отладки. Только для нормальной работы заранее создайте файлы указанные там, и соответственно выдайте права на доступ к этим файлам. Если не создать файлы для логов - сервер не стартует.

touch /var/log/mysql-err.log
chown mysql:mysql /var/log/mysql-err.log

После чего можно запустить mysql и проверить что всё работает

/usr/local/etc/rc.d/mysql-server start
ps axw | grep mysql

Если всё работает то можно запускать скрипт инсталяции

/usr/local/bin/mysql_secure_installation

Теперь приступим к конфигурированию apache. Я буду использовать виртуальные хосты, поэтому в файле /usr/local/etc/apache24/httpd.conf раскоментируем строчку

Include etc/apache24/extra/httpd-vhosts.conf

Далее редактируем файл /usr/local/etc/apache24/extra/httpd-vhosts.conf и приводим его к следующему виду

<VirtualHost 127.0.0.1:80>
ServerAdmin root@test.local
DocumentRoot "/web/sites/test.local/www"
ServerName test.local
ServerAlias www.test.local
ErrorLog "/web/sites/test.local/log/error.log"
CustomLog "/web/sites/test.local/log/access.log" common
php_admin_value open_basedir "/web/sites/test.local:."
php_admin_value upload_tmp_dir "/web/sites/test.local/tmp"
php_admin_value session.save_path "/web/sites/test.local/tmp"
<Directory /web/sites/test.local/www/>
AllowOverride All
RewriteEngine On
Require all granted
DirectoryIndex index.php index.html index.htm
Order allow,deny
Allow from All
</Directory>
</VirtualHost>
<VirtualHost 127.0.0.1:80>
ServerAdmin root@test.local
DocumentRoot "/web/sites/pma.test.local/www"
ServerName pma.test.local
ServerAlias www.pma.test.local
ErrorLog "/web/sites/pma.test.local/log/error.log"
CustomLog "/web/sites/pma.test.local/log/access.log" common
php_admin_value open_basedir "/web/sites/pma.test.local:."
php_admin_value upload_tmp_dir "/web/sites/pma.test.local/tmp"
php_admin_value session.save_path "/web/sites/pma.test.local/tmp"
<Directory /web/sites/pma.test.local/www/>
AllowOverride All
Require all granted
DirectoryIndex index.php index.html index.htm
Order allow,deny
Allow from All
</Directory>
</VirtualHost>

Теперь создадим папки в которых будут лежать файлы сайта.

mkdir /web/sites
mkdir /web/sites/test.local && mkdir /web/sites/pma.test.local
cd /web/sites/test.local && mkdir log tmp www
cd /web/sites/pma.test.local && mkdir log tmp www
chown -R www:www /web/sites

Теперь для правильной обработки php файлов в файле /usr/local/etc/apache24/httpd.conf добавим следующее:

<IfModule mod_php5.c>
AddType application/x-httpd-php .php
AddType application/x-httpd-php-source .phps
DirectoryIndex index.php index.html
</IfModule>

и разкоментируем строку

LoadModule rewrite_module libexec/apache24/mod_rewrite.so

и не забываем сменить имя сервера

ServerName test.local:80

После этого можно стартовать сервер

/usr/local/etc/rc.d/apache24 start

Готово. Веб сервер готов к работе. Осталось только установить PhpMyAdmin для работы с БД MySQL. Для этого можно либо скачать его в интернете и закинуть в папку подготовленную для него, либо через порты. Я поставлю его через порты

cd /usr/ports/databases/phpmyadmin
make config-recursive
make install clean

После чего перенесём его в нашу подготовленную для него папку

mv /usr/local/www/phpMyAdmin/* /web/sites/pma.test.local/www/
chown -R www:www /web/sites/pma.test.local/www/

и создадим папку для конфига

mkdir /web/sites/pma.test.local/www/config
chmod 0750 /web/sites/pma.test.local/www/config && chown www:www /web/sites/pma.test.local/www/config

Далее переходим на виртуальных хост и запускаем установку. Установка стандартная, на все вопросы отвечаем да.

Поделись с друзьями

Имя:*
E-Mail: