Начну с того, что из всех cms joomla — моя любимая, поэтому решил написать вот такую статью. Для начала необходимо установить пакеты, которые понадобятся для установки joomla, выполните команду:
pkg install apache24 mysql56-server wget unzip
После того, как установка завершится, необходимо добавить apache и mysql в автозапуск командами:
sysrc apache24_enable="YES"
sysrc mysql_enable="YES"
Запустим apache и mysql:
service apache24 start
service mysql-server start
В mysql имеется полезный скрипт для настройки mysql, выполните:
mysql_secure_installation
В данном скрипте можно создать пароль на root доступ к mysql, удалить тестовые базы, удалить анонимных пользователей. После выполнения данного скрипта необходимо создать базу данных для joomla и создать права для неё, зайдите в mysql командой:
mysql -p -r
Введите пароль, который только что был создан. Создадим базу данных командой:
create database joomla;
Предоставим полный доступ к данной базе данных пользователю joomlauser, и создадим пароль для данного пользователя password:
GRANT ALL PRIVILEGES ON joomla.* TO 'joomlauser'@'localhost' IDENTIFIED BY 'password' WITH GRANT OPTION;
На этом настройка mysql завершена. Теперь скачаем непосредственно joomla, перейдите в каталог «вэб» сервера, командой:
cd /usr/local/www/apache24/data
Удалим файл index.html:
rm index.html
Joomla всегда можно скачать от сюда, скопируйте ссылку на архив с joomla и выполните:
wget --no-check-certificate https://github.com/joomla/joomla-cms/releases/download/3.5.1/Joomla_3.5.1-Stable-Full_Package.zip
На момент написания актуальная версия joomla 3.5.1. Обязательно укажите --no-check-certificate, если скачивание происходит через https. Распакуем содержимое архива в корень «вэб» сервера:
unzip Joomla_3.5.1-Stable-Full_Package.zip
Удалим архив:
rm Joomla_3.5.1-Stable-Full_Package.zip
А теперь самое главное — PHP. Если нет желания возиться с портами, установите следующие пакеты и переходите к редактированию httpd.conf:
pkg install php70 mod_php70 php70-curl php70-json php70-mysqli php70-opcache php70-openssl php70-session php70-simplexml php70-xml php70-zlib
Это желательный минимум для joomla(на мой взгляд). А теперь установим порты:
portsnap fetch extract
Данная команда скачает порты и распакует их в каталог /usr/ports, перейдём в каталог с портом php70(joomla начиная с версии 3.5 поддерживает php70):
cd /usr/ports/lang/php70
Из данного каталога выполните команду:
make install clean
После выполнения данной команды на экране появится «конфигуратор» php, при необходимости можно выключить CLI, CGI, IPV6, или наоборот что-то добавить. После установки php70 необходимо установить расширение mod_php70 из каталога:
cd /usr/ports/www/mod_php70
После перехода в данный каталог выполните:
make install clean
После того как установка будет завершена, необходимо внести в httpd.conf строки с скриншота ниже. Откройте файл httpd.conf командой:
ee /usr/local/etc/apache24/httpd.conf
Внесите данные строки, а так же добавьте index.php и замените AllowOverride None на AllowOverride All.
Удалите символ # на против строк:
LoadModule rewrite_module libexec/apache24/mod_rewrite.so
LoadModule ssl_module libexec/apache24/mod_ssl.so
LoadModule socache_shmcb_module libexec/apache24/mod_socache_shmcb.so
Удалите символ # напротив строки(если намереваетесь использовать SSL сертификат, об этом чуть ниже):
Include etc/apache24/extra/httpd-ssl.conf
Если подключаетесь через Putty, тогда нажмите F2 и два раза ENTER, а если непосредственно с компьютера, тогда ESC и два раза ENTER (эти действия сохранят изменения в редакторе ee). С php практически всё, осталось только установить некоторые дополнения для php, для этого необходимо перейти в папку с портом php70-extensions:
cd /usr/ports/lang/php70-extensions
Выполним:
make install clean
В конфигурации данного порта отметьте расширения:
curl json mysqli opcache openssl session simplexml xml zlib
После установки данного порта, настройка php законченна. Заблокируем доступ к каталогу administrator, выполните:
ee /usr/local/www/apache24/data/administrator/.htaccess
Введите строки:
order deny,allow
deny from all
allow from XXX.XXX.XXX.XXX
Вместо XXX.XXX.XXX.XXX введите ip, которому будет необходим доступ к данному каталогу. Также необходимо переименовать htaccess.txt в .htaccess командой:
mv /usr/local/www/apache24/data/htaccess.txt /usr/local/www/apache24/data/.htaccess
Теперь можно позаботиться о шифровании трафика между сайтом и посетителем, если в этом нет необходимости, тогда поставьте символ # перед строками в httpd.conf:
Include etc/apache24/extra/httpd-ssl.conf
LoadModule ssl_module libexec/apache24/mod_ssl.so
LoadModule socache_shmcb_module libexec/apache24/mod_socache_shmcb.so
Сертификат предпочитаю бесплатный от WoSign. По каким критериям определяется срок для сертификата, я не знаю, для домена ru мне был предоставлен сертификат на 1 год, а для домена su на три года. Всё, что необходимо, это зарегистрироваться, подтвердить владение доменом с помощью письма на админскую почту, или «заливки» файла в корень сайта. Метод получения не важен, после того, как архив будет скачан, откройте данный архив. В архиве будет вложенный архив «for Apache.zip», откройте его, используя пароль, который был создан на сайте. В данном архиве имеется три файла:
1_root_bundle.crt
2_mydomain.su.crt
3_mydomain.su.key
Данные файлы необходимо «залить» в папку /usr/local/etc/apache24 любым удобным способом, например, через протокол SFTP. После этого необходимо отредактировать файл /usr/local/etc/apache24/extra/httpd-ssl.conf, для этого введите:
ee /usr/local/etc/apache24/extra/httpd-ssl.conf
Удалите символ # напротив строки:
SSLCertificateChainFile "/usr/local/etc/apache24/server-ca.crt"
Приведите строки:
SSLCertificateFile "/usr/local/etc/apache24/server.crt"
SSLCertificateKeyFile "/usr/local/etc/apache24/server.key"
SSLCertificateChainFile "/usr/local/etc/apache24/server-ca.crt"
К виду:
SSLCertificateFile "/usr/local/etc/apache24/2_mydomain.su.crt"
SSLCertificateKeyFile "/usr/local/etc/apache24/3_mydomain.su.key"
SSLCertificateChainFile "/usr/local/etc/apache24/1_root_bundle.crt"
По умолчанию используются устаревшие методы шифрования, исправим это. Удалите символ # перед строками:
SSLCipherSuite HIGH:MEDIUM:!SSLv3:!kRSA
SSLProxyCipherSuite HIGH:MEDIUM:!SSLv3:!kRSA
А так же можно закомментировать строки:
SSLCipherSuite HIGH:MEDIUM:!MD5:!RC4
SSLProxyCipherSuite HIGH:MEDIUM:!MD5:!RC4
В этом случае будет использоваться только протокол TLS 1.2. Сохраните изменения в файле. На этом настройка SSL завершена.
Вернёмся к установке joomla. Для того, чтобы установка joomla прошла корректно, необходимо папке /usr/local/www/ и её содержимому выставить владельца группу www командой:
chown -R www:www /usr/local/www
После этих манипуляций открывайте интернет браузер, вводите ip-адрес вашего сервера.
На данной странице введите название сайта, email администратора, логин администратора, пароль администратора и нажимайте на кнопку «Далее».
На данной странице необходимо ввести данные к mysql, которые были созданы ранее. Имя пользователя joomlauser, пароль password, имя базы данных joomla.
Нажимайте кнопку «Установка».
Как только установка завершится, нажмите кнопку «Удалить директорию „installation“».
Давайте русифицируем Joomla. Для того, чтобы русифицировать Joomla, необходимо зайти в админ-панель сайта. В адресной строке браузера введите mysite.ru/administrator. На открывшейся странице введите ваш логин и пароль. Зайдите в меню extensions>Language(s). На открывшейся странице нажмите кнопку «Install Languages», введите rus в строке поиска. Поставьте галочку напротив Russian и нажмите кнопку «Install». Далее необходимо активировать русский язык. Опять заходим в меню extensions>Language(s), ставим точку напротив «Russian» и жмём кнопку «Deafult». Данные действия русифицируют только сайт, для того, чтобы русифицировать админ-панель, необходимо проделать действия, как показано на скриншоте.
Перейдя в данный пункт меню, также поставьте точку напротив «Russian» и нажмите «Default».
Удалим index.php из строки адреса. Для этого необходимо перейти в меню «Система»>«Общие настройки» и переключить «Перенаправление URL» на «Да» и нажать кнопку «Сохранить». Это сработает если строка:
LoadModule rewrite_module libexec/apache24/mod_rewrite.so
была раскомментирована. Строка:
AllowOverride None
была заменена на:
AllowOverride All
и файл htaccess.txt переименован в .htaccess.
На этом установка Jomla завершена, осталось только настроить firewall на основе ipfw. Следующие строки добавят ipfw в автозапуск и укажут скрипт с правилами, который необходимо использовать:
sysrc firewall_enable="YES"
sysrc firewall_script="/etc/firewall.sc"
Создадим файл firewall.sc командой:
ee /etc/firewall.sc
Внесите данные строки в файл firewall.sc
ipfw -q -f flush
c="ipfw -q add "
$c 00001 allow all from any to any via lo0
$c 00010 allow tcp from any to me 22,80,443 setup keep-state
$c 00020 allow tcp from me to any 443 setup keep-state
$c 00030 allow tcp from me to any 80 setup keep-state
$c 00040 allow tcp from me to any 21 setup keep-state
$c 00050 allow icmp from me to any keep-state
$c 00060 allow udp from me to any 53 keep-state
$c 40533 deny all from any to any frag
$c 40534 allow all from any to any established
$c 40535 deny all from any to any
Сохраните firewall.sc и запустите ipfw командой:
service ipfw start
После данных манипуляций сайт возможно открывать как через 80 (http) порт, так и через 443 (https).
Спасибо за внимание.
Автор: Nemets85