Процесс установки новостного движка DataLife Engine 10.4 на CentOS7, от установки операционной системы до полной готовности системы к работе.
Установка и подготовка операционной системы:
Устанавливаем CentOS в редакции Minimal:
Во время установки обязательно настроить сеть (IP, Gateway):
Размечаем диск вручную, указав использование LVM:
(кто не хочет заморачиваться может пропустить)
Отключаем SElinux:
$ setenforce 0
$ vi /etc/sysconfig/selinux
SELINUX=disabled
Установить Net-Tools:
yum -y install net-tools
(чтобы можно было выполнить ifconfig и прочие команды по сети)
Установить VMware Tools (опционально, для виртуальной машины):
Отключаем FirewallD:
systemctl stop firewalld
systemctl disable firewalld
Устанавливаем и настраиваем IPtables:
yum -y install iptables-services
Добавляем IPtables в автозагрузку и запускаем:
systemctl enable iptables
systemctl start iptables
Прописываем нужные правила в IPtables:
$ vi /etc/sysconfig/iptables
# SSH
-A INPUT -m state --state NEW -m tcp -p tcp --dport 22 -j ACCEPT
# HTTP
-A INPUT -m state --state NEW -m tcp -p tcp --dport 80 -j ACCEPT
# HTTPs
-A INPUT -m state --state NEW -m tcp -p tcp --dport 443 -j ACCEPT
$ service iptables restart
$ setenforce 0
$ vi /etc/sysconfig/selinux
SELINUX=disabled
Установить Net-Tools:
yum -y install net-tools
(чтобы можно было выполнить ifconfig и прочие команды по сети)
Установить VMware Tools (опционально, для виртуальной машины):
Отключаем FirewallD:
systemctl stop firewalld
systemctl disable firewalld
Устанавливаем и настраиваем IPtables:
yum -y install iptables-services
Добавляем IPtables в автозагрузку и запускаем:
systemctl enable iptables
systemctl start iptables
Прописываем нужные правила в IPtables:
$ vi /etc/sysconfig/iptables
# SSH
-A INPUT -m state --state NEW -m tcp -p tcp --dport 22 -j ACCEPT
# HTTP
-A INPUT -m state --state NEW -m tcp -p tcp --dport 80 -j ACCEPT
# HTTPs
-A INPUT -m state --state NEW -m tcp -p tcp --dport 443 -j ACCEPT
$ service iptables restart
Установка и настройка NGINX
Подключаем нужные репозитории:yum -y install epel-release wget
wget http://rpms.famillecollet.com/enterprise/remi-release-7.rpm
rpm -Uvh remi-release-7.rpm
Устанавливаем, запускаем и добавляем в автозагрузку nginx:
yum install nginx
systemctl start nginx.service
systemctl enable nginx.service
Выключаем "Буферизация вывода" NGINX для DataLife Engine (DLE)
$ echo 'fastcgi_param PHP_VALUE output_buffering=Off;' >> /etc/nginx/fastcgi_params
Создаём 2 рабочие директории для конфигураций
$ mkdir /etc/nginx/off (для всего конфигураций)
$ mkdir /etc/nginx/sites (для включенных конфигураций)
Указываем nginx откуда подгружать конфиги
$ vi /etc/nginx/nginx.conf
вставляем в конце include /etc/nginx/sites/*.conf;
должно выйглядеть так:
# Load modular configuration files from the /etc/nginx/conf.d directory.
# See http://nginx.org/en/docs/ngx_core_module.html#include
# for more information.
include /etc/nginx/conf.d/*.conf;
include /etc/nginx/sites/*.conf;
}
Создаём VirtualHost
$ vi /etc/nginx/off/river.ru
server {
listen 80;
server_name river.ru www.river.ru;
root /var/www/river;
access_log /var/www/river/logs/access.log main;
error_log /var/www/river/logs/error.log;
location ~ \.php$ {
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
}
Включаем конфиг river.conf:
$ ln -s /etc/nginx/off/river.conf /etc/nginx/sites/river.conf
Добавляем "реврайты" (rewrite) в конфиг файл (чтобы работал ЧПУ)
Должно получиться так:
server {
listen 80;
server_name river.ru www.river.ru;
root /var/www/river;
access_log /var/www/river/logs/access.log main;
error_log /var/www/river/logs/error.log;
location ~ \.php$ {
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
# Редиректы
rewrite "^/page/([0-9]+)(/?)$" /index.php?cstart=$1 last;
# Сам пост
rewrite "^/([0-9]{4})/([0-9]{2})/([0-9]{2})/page,([0-9]+),([0-9]+),(.*).html(/?)+$" /index.php?subaction=showfull&year=$1&month=$2&day=$3&news_page=$4&cstart=$5&news_name=$6&seourl=$6 last;
rewrite "^/([0-9]{4})/([0-9]{2})/([0-9]{2})/page,([0-9]+),(.*).html(/?)+$" /index.php?subaction=showfull&year=$1&month=$2&day=$3&news_page=$4&news_name=$5&seourl=$5 last;
rewrite "^/([0-9]{4})/([0-9]{2})/([0-9]{2})/print:page,([0-9]+),(.*).html(/?)+$" /engine/print.php?subaction=showfull&year=$1&month=$2&day=$3&news_page=$4&news_name=$5&seourl=$5 last;
rewrite "^/([0-9]{4})/([0-9]{2})/([0-9]{2})/(.*).html(/?)+$" /index.php?subaction=showfull&year=$1&month=$2&day=$3&news_name=$4&seourl=$4 last;
rewrite "^/([^.]+)/page,([0-9]+),([0-9]+),([0-9]+)-(.*).html(/?)+$" /index.php?newsid=$4&news_page=$2&cstart=$3&seourl=$5&seocat=$1 last;
rewrite "^/([^.]+)/page,([0-9]+),([0-9]+)-(.*).html(/?)+$" /index.php?newsid=$3&news_page=$2&seourl=$4&seocat=$1 last;
rewrite "^/([^.]+)/print:page,([0-9]+),([0-9]+)-(.*).html(/?)+$" /engine/print.php?news_page=$2&newsid=$3&seourl=$4&seocat=$1 last;
rewrite "^/([^.]+)/([0-9]+)-(.*).html(/?)+$" /index.php?newsid=$2&seourl=$3&seocat=$1 last;
rewrite "^/page,([0-9]+),([0-9]+),([0-9]+)-(.*).html(/?)+$" /index.php?newsid=$3&news_page=$1&cstart=$2&seourl=$4 last;
rewrite "^/page,([0-9]+),([0-9]+)-(.*).html(/?)+$" /index.php?newsid=$2&news_page=$1&seourl=$3 last;
rewrite "^/print:page,([0-9]+),([0-9]+)-(.*).html(/?)+$" /engine/print.php?news_page=$1&newsid=$2&seourl=$3 last;
rewrite "^/([0-9]+)-(.*).html(/?)+$" /index.php?newsid=$1&seourl=$2 last;
# За день
rewrite "^/([0-9]{4})/([0-9]{2})/([0-9]{2})(/?)+$" /index.php?year=$1&month=$2&day=$3 last;
rewrite "^/([0-9]{4})/([0-9]{2})/([0-9]{2})/page/([0-9]+)(/?)+$" /index.php?year=$1&month=$2&day=$3&cstart=$4 last;
# За весь месяц
rewrite "^/([0-9]{4})/([0-9]{2})(/?)+$" /index.php?year=$1&month=$2 last;
rewrite "^/([0-9]{4})/([0-9]{2})/page/([0-9]+)(/?)+$" /index.php?year=$1&month=$2&cstart=$3 last;
# Вывод за весь год
rewrite "^/([0-9]{4})(/?)+$" /index.php?year=$1 last;
rewrite "^/([0-9]{4})/page/([0-9]+)(/?)+$" /index.php?year=$1&cstart=$2 last;
# вывод отдельному тегу
rewrite "^/tags/([^/]*)(/?)+$" /index.php?do=tags&tag=$1 last;
rewrite "^/tags/([^/]*)/page/([0-9]+)(/?)+$" /index.php?do=tags&tag=$1&cstart=$2 last;
# поиск по доп полям
rewrite "^/xfsearch/([^/]*)(/?)+$" /index.php?do=xfsearch&xf=$1 last;
rewrite "^/xfsearch/([^/]*)/page/([0-9]+)(/?)+$" /index.php?do=xfsearch&xf=$1&cstart=$2 last;
# вывод для отдельного юзера
rewrite "^/user/([^/]*)/rss.xml$" /engine/rss.php?subaction=allnews&user=$1 last;
rewrite "^/user/([^/]*)(/?)+$" /index.php?subaction=userinfo&user=$1 last;
rewrite "^/user/([^/]*)/page/([0-9]+)(/?)+$" /index.php?subaction=userinfo&user=$1&cstart=$2 last;
rewrite "^/user/([^/]*)/news(/?)+$" /index.php?subaction=allnews&user=$1 last;
rewrite "^/user/([^/]*)/news/page/([0-9]+)(/?)+$" /index.php?subaction=allnews&user=$1&cstart=$2 last;
rewrite "^/user/([^/]*)/news/rss.xml(/?)+$" /engine/rss.php?subaction=allnews&user=$1 last;
# вывод всех последних новостей
rewrite "^/lastnews(/?)+$" /index.php?do=lastnews last;
rewrite "^/lastnews/page/([0-9]+)(/?)+$" /index.php?do=lastnews&cstart=$1 last;
# вывод в виде каталога
rewrite "^/catalog/([^/]*)/rss.xml$" /engine/rss.php?catalog=$1 last;
rewrite "^/catalog/([^/]*)(/?)+$" /index.php?catalog=$1 last;
rewrite "^/catalog/([^/]*)/page/([0-9]+)(/?)+$" /index.php?catalog=$1&cstart=$2 last;
# вывод непрочитанных статей
rewrite "^/newposts(/?)+$" /index.php?subaction=newposts last;
rewrite "^/newposts/page/([0-9]+)(/?)+$" /index.php?subaction=newposts&cstart=$1 last;
# вывод избранных статей
rewrite "^/favorites(/?)+$" /index.php?do=favorites last;
rewrite "^/favorites/page/([0-9]+)(/?)+$" /index.php?do=favorites&cstart=$1 last;
rewrite "^/rules.html$" /index.php?do=rules last;
rewrite "^/statistics.html$" /index.php?do=stats last;
rewrite "^/addnews.html$" /index.php?do=addnews last;
rewrite "^/rss.xml$" /engine/rss.php last;
rewrite "^/sitemap.xml$" /uploads/sitemap.xml last;
if (!-d $request_filename) {
rewrite "^/([^.]+)/page/([0-9]+)(/?)+$" /index.php?do=cat&category=$1&cstart=$2 last;
rewrite "^/([^.]+)/?$" /index.php?do=cat&category=$1 last;
}
if (!-f $request_filename) {
rewrite "^/([^.]+)/rss.xml$" /engine/rss.php?do=cat&category=$1 last;
rewrite "^/page,([0-9]+),([^/]+).html$" /index.php?do=static&page=$2&news_page=$1 last;
rewrite "^/print:([^/]+).html$" /engine/print.php?do=static&page=$1 last;
}
if (!-f $request_filename) {
rewrite "^/([^/]+).html$" /index.php?do=static&page=$1 last;
}
}
Перезагружаем nginx
systemctl start nginx.service
Установка и настройка SQL-сервера
$ yum -y install mariadb-server
$ systemctl start mariadb.service
$ systemctl enable mariadb.service
Настраиваем:
$ mysql_secure_installation
Enter current password for root (enter for none): PRESS ENTER
Set root password? [Y/n] Y
New password: ENTER YOUR NEW PASSWORD
Re-enter new password: RE-ENTER YOUR NEW PASSWORD
Password updated successfully!
Remove anonymous users? [Y/n] Y
... Success!
Disallow root login remotely? [Y/n] Y
... Success!
Remove test database and access to it? [Y/n] Y
- Dropping test database...
... Success!
- Removing privileges on test database...
... Success!
Reload privilege tables now? [Y/n] Y
... Success!
Thanks for using MariaDB!
Создаём базу данных:
$ mysql -u root -p
CREATE DATABASE river CHARACTER SET cp1251;
GRANT ALL PRIVILEGES ON river .* TO root@localhost IDENTIFIED BY 'ROOT PASSWORD';
FLUSH PRIVILEGES;
exit;
Установка и настройка DLE
Копируем содержимой папки upload из скачанного дистрибутива DLE на веб-сервер в целевую директорию (в нашем случае /var/www/river) при помощи программы WinSCP
Прописываем права на файлы и директории в DLE
Прописываем права на файлы и директории в DLE
http://dle-news.ru/extras/online/index.html?overview.html
Для упрощения создаём небольшой скрипт
vi /root/dlerights.sh
find ./templates/ -type d -exec chmod 777 {} +
find ./templates/ -type f -exec chmod 666 {} +
find ./backup -type d -exec chmod 777 {} +
find ./uploads -type d -exec chmod 777 {} +
find ./engine/data -type d -exec chmod 777 {} +
find ./engine/cache -type d -exec chmod 777 {} +
find ./engine/cache/system -type d -exec chmod 777 {} +
chmod 444 ./.htaccess
chmod 444 ./templates/.htaccess
Переходим в директорию сайта и запускаем скрипт для установки прав
cd /var/www/river
sh /root/dlerights.sh
Для упрощения создаём небольшой скрипт
vi /root/dlerights.sh
find ./templates/ -type d -exec chmod 777 {} +
find ./templates/ -type f -exec chmod 666 {} +
find ./backup -type d -exec chmod 777 {} +
find ./uploads -type d -exec chmod 777 {} +
find ./engine/data -type d -exec chmod 777 {} +
find ./engine/cache -type d -exec chmod 777 {} +
find ./engine/cache/system -type d -exec chmod 777 {} +
chmod 444 ./.htaccess
chmod 444 ./templates/.htaccess
Переходим в директорию сайта и запускаем скрипт для установки прав
cd /var/www/river
sh /root/dlerights.sh
Перезагружаем nginx
systemctl restart nginx.service
Открываем брайзер и заходим на страницу http://river.ru
Прописываем, всё что нас спрашивают
По завершении установки получите уведомление, что нужно удалить файл install.php.
Удалите его и перезагрузите страницу http://river.ru
Готово.
Спасибо, за ЧПУ, на других сайтах кривые, а тут все ок =)
ОтветитьУдалить