Правильный хостинг для MODX Revolution
Топик рассказывает о настройке быстрого и недорогого хостинга для MODx Revolution. В принципе, вещи тут описаны общие, так что информация подойдет для любой CMS.
На всякий случай, приложу видео, как должна работать админка MODx Revo.
Для быстрой и комфортной работы желательно:
— Быстрый браузер — Google Chrome. Админка Revo работает в нем молниеносно
— Хороший интернет-канал. Тут без вариантов, нужно всем и всегда.
— Качественный хостинг — про него и пишу.
В итоге у меня вообще получились скрипты автоматической установки для серверов, настроенных по этой статье. И даже видео-инструкция.
Я работал с разными хостингами. Начинал на Peterhost, затем переехал на Clodo, потом Selectel и параллельно Scalaxy. Также немного поработал с Hetzner.
Хорошие все, но по совокупности субъективных вещеймне больше нравится облако Selectel я выбираю Linode.
Для установки я беру Ubuntu x32 (меньше кушает памяти, чем х64). Установка ОС идет минут 15, после нее в свойствах машины ищем «Пароль при установке». Это пароль root.
На сервер идем через Putty. В настройках Translation ставим UTF-8.
User: root
Password: из панели
Первым делом создаем нового юзера и добавляем его в группу sudo:
Перезапускаем ssh:
Первым делом
На этом месте большинству не-Linux юзеров изрядно похорошело при виде синих окошек, вместо черной консоли. А консоль по-прежнему можно быстро увидеть, нажав Ctrl+O.
С этого момента команды можно вводить и без sudo — вы уже работаете в нем из mc.
Немного настроим firewall.
Создаем файл iptables (touch /root/iptables), вносим в него такие строки:
Делаем его исполняемым — sudo chmod +x /root/iptables
И вносим вызов этого файла в /etc/rc.local — и скрипт будет вызываться при запуске. Вообще, все что вы хотите запускать при старте — пишем сюда.
Можно еще установить sendmail для отправке почты с сайта, но Revo позволяет работать напрямую с smtp сервером для отправки почты — что я вам и советую настроить. Лучше сразу подключить почту для домена от Яндекс или Google.
Полдела сделано.
Это дает нам 2 преимущества: меньшее потребление памяти и запуск разных сайтов от разных юзеров. То есть, при взломе одного сайта — остальные не пострадают.
FTP на сервер мы вообще не установили, потому что заливать файлы сайта мы будем через SFTP (используем WinCSP для этого), а редактировать через Notepad++ (там есть плагин для sftp).
Создаем группу sftp (addgroup sftp) и настраиваем для нее доступ через ssh.
Добавляем в конец /etc/ssh/sshd_config
Рядом в /etc/nginx/fastcgi_params комментим строку про https, а не то потом будет ругаться:
Наш конфиг подгружает сайты из директории /etc/nginx/sites-enabled/, а рядом есть /etc/nginx/sites-available/.
В первой директории лежат симлинки активных сайтов на файлы конфигов из второй директории. Такой подход позволяет быстро включать\отключать виртуальные хосты без редактирования — а просто удалив\создав symlink.
Стандартный конфиг сайта /etc/nginx/sites-available/site1.conf
Следующий сайт можно создать просто скопировав конфиг этого и поменяв site1 на site2.
После создания конфига не забываем создать символическую ссылку на конфиг:
Основную конфигурацию /etc/php5/fpm/php-fpm.conf мы трогать не будем, просто удостоверимся, что внизу файла есть строчка
Мы настроили быстрый, недорогой сервер на облаке, с платой за потребление, который очень экономично кушает ресурсы. Для добавления сайтов нужно:
1. Создать директории и юзера сайта, юзера добавить в группу sftp.
2. Создать 2 конфига для Nginx и php5-fpm по образу предыдущих.
3. Установить сайт и назначить юзера хозяном файлов.

У меня на таком сервере висит 7 небольших сайтов. Он потребляет 250-300mb ОЗУ (это настраивается в панели selectel) и стоит около 8-10 рублей в день. Когда я переживал небольшой хабраэффект я платил всего 20 рублей в сутки.
Сайты изолированы друг от друга, каждый работает от своего юзера, с ограниченными правами. Этот же юзер ходит через sftp — нет проблемы с редактированием файлов залитых через ftp в админке.
Для упрощенного управления сайтами и их конфигами через веб-интерфейс отлично подходит Ajenti. Ну и вообще, оно много чего умеет.
В общем, я попытался доступно написать, как можно за 300 рублей в месяц сделать себе хостинг для приятной работы с MODx Revolution.
Если что-то не так — поправьте меня в комментариях.
P.S. Скрипт для назначения прав для директорий\файлов. Рекомендую хранить в /var/www/site1/chmod
Updated.
Сделал скрипты автоматической установки для серверов, настроенных по этой статье.
Updated 2
Написал статью по подключению MemCached к MODX.
Updated 3
Крайне рекомендую ознакомиться со статьей по настройке резервного копирования вашего сервера.
Update 4
После разных аварий на Selectel и веселых изменений у Scalaxy я переехал на Linode. Как говорится, настроил и забыл.
На всякий случай, приложу видео, как должна работать админка MODx Revo.
Для быстрой и комфортной работы желательно:
— Быстрый браузер — Google Chrome. Админка Revo работает в нем молниеносно
— Хороший интернет-канал. Тут без вариантов, нужно всем и всегда.
— Качественный хостинг — про него и пишу.
В итоге у меня вообще получились скрипты автоматической установки для серверов, настроенных по этой статье. И даже видео-инструкция.
Я работал с разными хостингами. Начинал на Peterhost, затем переехал на Clodo, потом Selectel и параллельно Scalaxy. Также немного поработал с Hetzner.
Хорошие все, но по совокупности субъективных вещей
Установка ОС и настройка ssh
Регистрируемся на selectel.ru, заходим в панель, там «Облако» и создаем машину.Для установки я беру Ubuntu x32 (меньше кушает памяти, чем х64). Установка ОС идет минут 15, после нее в свойствах машины ищем «Пароль при установке». Это пароль root.
На сервер идем через Putty. В настройках Translation ставим UTF-8.
User: root
Password: из панели
Первым делом создаем нового юзера и добавляем его в группу sudo:
adduser user
adduser user sudoЗатем отрубаем вход на сервер под рутом.nano /etc/ssh/sshd_configВыставляем PermitRootLogin no, здесь же можно перевешать ssh на другой порт, но я этого не делаю.Перезапускаем ssh:
service ssh restartТеперь можно перелогиниться, как user и работать через sudo.Первым делом
sudo apt-get install mc, после установки sudo mc — этим вы будуте работать на сервере через sudo до выхода из Midnight Commander.На этом месте большинству не-Linux юзеров изрядно похорошело при виде синих окошек, вместо черной консоли. А консоль по-прежнему можно быстро увидеть, нажав Ctrl+O.
С этого момента команды можно вводить и без sudo — вы уже работаете в нем из mc.
Немного настроим firewall.
Создаем файл iptables (touch /root/iptables), вносим в него такие строки:
iptables -F INPUT
iptables -Z INPUT
iptables -P INPUT ACCEPT
iptables -A INPUT -p tcp -m state --state NEW --dport 22 -m recent --update --seconds 30 -j DROP
iptables -A INPUT -p tcp -m state --state NEW --dport 22 -m recent --set -j ACCEPTЭто защита 22го порта от переборщиков паролей. При каждой неудачной попытке повторно попробовать они смогут только через 30сек (можно увеличить) — на таких скоростях ничего не подобрать. К тому же, нужно угадать еще имя пользователя (root то мы отключили).Делаем его исполняемым — sudo chmod +x /root/iptables
И вносим вызов этого файла в /etc/rc.local — и скрипт будет вызываться при запуске. Вообще, все что вы хотите запускать при старте — пишем сюда.
Репозитории
Ставим python-software-properties для удобного добавления репозиториевapt-get install python-software-propertiesДабавляем репоитории Nginx и php5-fpm:add-apt-repository ppa:nginx/stable
apt-get update
apt-get install nginx php5-fpm mysql-server php5-mcrypt php5-mysql php5-curl php-db php5-gd unzip zipПри установке потребуется ввести административный пароль для Mysql — придумываем посложнее, запоминаем и вводим.Можно еще установить sendmail для отправке почты с сайта, но Revo позволяет работать напрямую с smtp сервером для отправки почты — что я вам и советую настроить. Лучше сразу подключить почту для домена от Яндекс или Google.
Полдела сделано.
Подготовка окружения
Как вы уже могли догадаться, наш сервер будет запускать php через php5-fpm, без участия Apache2.Это дает нам 2 преимущества: меньшее потребление памяти и запуск разных сайтов от разных юзеров. То есть, при взломе одного сайта — остальные не пострадают.
FTP на сервер мы вообще не установили, потому что заливать файлы сайта мы будем через SFTP (используем WinCSP для этого), а редактировать через Notepad++ (там есть плагин для sftp).
Создаем группу sftp (addgroup sftp) и настраиваем для нее доступ через ssh.
Добавляем в конец /etc/ssh/sshd_config
Subsystem sftp internal-sftp
Match Group sftp
ChrootDirectory %h
AllowTCPForwarding no
ForceCommand internal-sftpИ комментируем там же#Subsystem sftp /usr/lib/openssh/sftp-serverСоздаем новую директорию для будущего сайта (и директорию для временных файлов), создаем юзера для него, добавляем его в группу sftp и назначаем домашнюю директорию:mkdir /var/www
mkdir /var/www/site1
mkdir /var/www/site1/www
mkdir /var/www/site1/tmp
adduser site1
adduser site1 sftp
usermod -d /var/www/site1 site1Есть директория, есть пользователь, есть доступ для него через sftp.Настройка сервисов
Для настройки php нужно редактировать /etc/php5/fpm/php.ini.post_max_size = 100M
upload_max_filesize = 100M
disable_functions = exec,passthru,shell_exec,system,proc_open,popen,curl_multi_exec,parse_ini_file,show_source
cgi.fix_pathinfo = 0
open_basedir = /var/www/Основной конфигурационный файл Nginx (/etc/nginx/nginx.conf) приводим к такому виду (старый бэкапим):user www-data;
worker_processes 8;
error_log /var/log/nginx/error.log;
pid /var/run/nginx.pid;
events {
worker_connections 1024;
}
http {
include /etc/nginx/mime.types;
client_max_body_size 100m;
access_log /var/log/nginx/access.log;
sendfile on;
keepalive_timeout 65;
tcp_nodelay on;
gzip on;
gzip_min_length 1000;
gzip_proxied any;
gzip_types text/plain text/html text/xml application/xml application/x-javascript text/javascript text/css text/json;
gzip_disable "msie6";
gzip_comp_level 8;
charset utf-8;
include /etc/nginx/conf.d/*.conf;
include /etc/nginx/sites-enabled/*;
}Обратите внимание на параметр worker_processes — здесь нужно указать количество ядер процессора для распараллеливания работы. У облака Селектел их 8.Рядом в /etc/nginx/fastcgi_params комментим строку про https, а не то потом будет ругаться:
#fastcgi_param HTTPS $server_https;Nota Bene! Создаем виртуальный хост.Наш конфиг подгружает сайты из директории /etc/nginx/sites-enabled/, а рядом есть /etc/nginx/sites-available/.
В первой директории лежат симлинки активных сайтов на файлы конфигов из второй директории. Такой подход позволяет быстро включать\отключать виртуальные хосты без редактирования — а просто удалив\создав symlink.
Стандартный конфиг сайта /etc/nginx/sites-available/site1.conf
upstream backend-site1 {server unix:/var/run/php5-site1.sock;}
server {
listen 80;
server_name site1.domain.ru;
root /var/www/site1/www;
access_log /var/log/nginx/site1-access.log;
error_log /var/log/nginx/site1-error.log;
index index.php;
rewrite_log on;
location /core/ {
deny all;
}
location / {
try_files $uri $uri/ @rewrite;
}
location @rewrite {
rewrite ^/(.*)$ /index.php?q=$1;
}
location ~ \.php$ {
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_pass backend-site1;
}
location ~* ^.+\.(jpg|jpeg|gif|css|png|js|ico|bmp)$ {
access_log off;
expires 10d;
break;
}
location ~ /\.ht {
deny all;
}
}Здесь сразу включены friendly urls, отдача статики и обработка php через php5-fpm, для которого объявляется backend (1 строка конфига).Следующий сайт можно создать просто скопировав конфиг этого и поменяв site1 на site2.
После создания конфига не забываем создать символическую ссылку на конфиг:
ln -s /etc/nginx/sites-available/site1.conf /etc/nginx/sites-enabled/site1.confNota Bene! Создаем процесс php5-fpm для сайта.Основную конфигурацию /etc/php5/fpm/php-fpm.conf мы трогать не будем, просто удостоверимся, что внизу файла есть строчка
include=/etc/php5/fpm/pool.d/*.confЭто подключает из директории конфигурации процессов php5-fpm. В конфигурации сайта мы уже указали, что *.php он будет отдавать на обработку по адресу /var/run/php5-site1.sock, а теперь создаем конфиг /etc/php5/fpm/pool.d/site1.conf:[site1]
listen = /var/run/php5-site1.sock
listen.mode = 0666
user = site1
group = site1
chdir = /var/www/site1
php_admin_value[upload_tmp_dir] = /var/www/site1/tmp
php_admin_value[soap.wsdl_cache_dir] = /var/www/site1/tmp
php_admin_value[date.timezone] = Europe/Moscow
# тут значения можно поменять, в зависимости от нагрузки на сайт
pm = dynamic
pm.max_children = 10
pm.start_servers = 2
pm.min_spare_servers = 2
pm.max_spare_servers = 4Внимательно проверяем везде правильность путей и перезапускаем сервисы:service nginx restart
service php5-fpm restartЗаключение
Портянка текста получилась знатная, поэтому про установку сайта почитайте вот здесь, а я немного расскажу, что у нас вышло.Мы настроили быстрый, недорогой сервер на облаке, с платой за потребление, который очень экономично кушает ресурсы. Для добавления сайтов нужно:
1. Создать директории и юзера сайта, юзера добавить в группу sftp.
2. Создать 2 конфига для Nginx и php5-fpm по образу предыдущих.
3. Установить сайт и назначить юзера хозяном файлов.

У меня на таком сервере висит 7 небольших сайтов. Он потребляет 250-300mb ОЗУ (это настраивается в панели selectel) и стоит около 8-10 рублей в день. Когда я переживал небольшой хабраэффект я платил всего 20 рублей в сутки.
Сайты изолированы друг от друга, каждый работает от своего юзера, с ограниченными правами. Этот же юзер ходит через sftp — нет проблемы с редактированием файлов залитых через ftp в админке.
Для упрощенного управления сайтами и их конфигами через веб-интерфейс отлично подходит Ajenti. Ну и вообще, оно много чего умеет.
В общем, я попытался доступно написать, как можно за 300 рублей в месяц сделать себе хостинг для приятной работы с MODx Revolution.
Если что-то не так — поправьте меня в комментариях.
P.S. Скрипт для назначения прав для директорий\файлов. Рекомендую хранить в /var/www/site1/chmod
#!/bin/bash
user=site1
dir=/var/www/$user/www
chown -R $user:$user "$dir";
find "$dir" -type d -exec chmod 0755 '{}' \;
find "$dir" -type f -exec chmod 0644 '{}' \;Updated.
Сделал скрипты автоматической установки для серверов, настроенных по этой статье.
Updated 2
Написал статью по подключению MemCached к MODX.
Updated 3
Крайне рекомендую ознакомиться со статьей по настройке резервного копирования вашего сервера.
Update 4
После разных аварий на Selectel и веселых изменений у Scalaxy я переехал на Linode. Как говорится, настроил и забыл.
Комментарии: 226
Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
Запускать нужно из консоли, от суперюзера. Для этого зайдите на сервер по ssh, через Putty.
Если не разберетесь как запустить скрипт — просто наберите в консоли вот это:
sudo chown -R site1:site1 /var/www/site1/www
sudo find /var/www/site1/www -type d -exec chmod 0755 '{}';
sudo find /var/www/site1/www -type f -exec chmod 0644 '{}';
После этого проблем быть не должно. Если что — пишите, разберемся.
Справа доступные конфиги, слева — симлинки на них.
К примеру — у меня есть bezumkin.ru и я могу неограниченно создавать site1.bezumkin.ru, site2.bezumkin.ru и т.д., все на одном ip. Это называется «виртуальный хост».
Почитайте про основы DNS, например тут — ru.wikipedia.org/wiki/DNS
revo 2.2.4 Чистая.
Про комментируйте…
У моего телефона 800 MHz
Видимо, моя инструкция не такая уж и хорошая =(
на амазоне бесплатный micro и тот мощнее, у меня там немного другая конфигурация, стоит простенькая панелька которая потянула за собой все сервисы. Работает отлично, крутятся несколько сайтов (про скорость не скажу т.к. инет у меня тормозной), cейчас проблема настроить почтовый сервер. По умолчанию все нормально уходило через внешний smtp на gmail, но в результате экспериментов, записи в dns прописан Pdd yandex (по мануалу как тут maxidrom.net/archives/657) mail.site.com ведет на почту, но внешний smtp перестал работать даже не знаю почему, боюсь придется отменять все. Интересно, Василий, как Вы с поступили с почтой?
С почтой я поступаю просто — настраиваю, чтобы работала. Для моих нужд хватает Sendmail. Баг с отправкой почты самому себе лечу так — serverfault.com/questions/102647/sendmail-to-local-domain-ignoring-mx-records-part-2
Возможно, пора написать заметку про настройку почты на сервере.
Заметку поставил в план.
Единственный вопрос, который недопонял — а как поковырять базу?
Обычно использовал phpmyadmin, но вроде для него нужнен апач, а тут он не устанавливается.
внес в конфиг следующие строки, предварительно установив phpmyadmin
#Работа с phpMyAdmin
location /phpmyadmin {
root /usr/share/;
index index.php index.html index.htm;
location ~ ^/phpmyadmin/(.+\.php)$ {
try_files $uri =404;
root /usr/share/;
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $request_filename;
include /etc/nginx/fastcgi_params;
}
location ~* ^/phpmyadmin/(.+\.(jpg|jpeg|gif|css|png|js|ico|html|xml|txt))$ {
root /usr/share/;
}
}
location /phpMyAdmin {
rewrite ^/* /phpmyadmin last;
}
но выдает чистую страницу.
Что я делаю не так подскажите пожалуйста.
добавил в php.ini
open_basedir = /usr/share/phpmyadmin/
Я проделал всё, как в инструкции и все вроде получилось, Modx установился нормально, но при попытке сделать service nginx restart и service php5-fpm restart я получаю ошибки следующего характера. При этом веб-сервер работает нормально. Помогите, пожалуйста разобраться. Спасибо.
piccy.info/view3/3404685/3d676a4c7c3fddac07eee80b08e575e7/
piccy.info/view3/3404690/401508c2e2b5b0ea5e5b14945eef47ef/
В заметке копия этого файла — сверьте с ней.
Эта директива больше нигде не встречается (в другом файле)?
Пришлите данные от ssh мне на почту.
https://bugs.launchpad.net/nginx/+bug/1033856
Надо было просто сделать
sudo apt-get install nginx-common, чтобы обновить пакет — и все ок.
server_name site1.domain.ru site2.domain.ru;
Ну и в вашем ДНС сервере эти имена должны ссылаться на новый сервер, чтобы он мог ответить на запросы.
У меня домен зарегистрирован на nic.ru. Мне нужно там прописать поддомены?
Почитайте, что ли, про DNS.
Используйте бесплатный от яндекса https://pdd.yandex.ru/help/section9/
В nic.ru указываете сервера Яндекс, на Яндексе — соотношение своих доменов и ip сервера.
Потом ждете полдня\день, пока все обновится.
Проверять состояние можно тут whois7.ru/
Раньше modx-test.com был на Selectel? Каким образом Вы делали создание поддоменом?
Если nginx им ответит — то получат нужный сайт.
Почему я могу зайти на site.com, но на www.site.com получаю отлуп? Что поменять в филармонии, чтобы заработали www. поддомены автоматически для всех создаваемых сайтов?
Спасибо за ответ и еще раз спасибо за такой полезный мануал.
server_name site1.domain.ru;
У вас должно быть что-то типа
server_name site1.domain.ru www.site1.domain.ru;
Так что у вас в статье и в скрипте все без ошибок.
Перезапустил nginx — ничего.
Потом догадался — начал пинговать. На www.site.com дает «cannot resolve www.site.com: Unknown host»
Гугл в помощь. Директива CNAME, как синоним для доменов. Управление доменами в облаке Селектел. Смотрю, A-запись есть, NS-ы есть. Прописываю CNAME.
Жду.
Василий, правильно ли я жду или надо копать в другом месте? :)
Доменные записи можно проверять вот тут — whois7.ru/?s=ip. Оба ваши имени должны указывать на ip вашего сервера.
Может стоит написать в статью, как добавлять доменные имена в Селектел? ) А то будут мучаться, как я, бедняга ))
Каждый должен сам разобраться в этой азбуке — кому надо, конечно.
rutracker.org/forum/viewtopic.php?t=4189339
позже обновлю версию, сейчас пропущена архивация и memcached…
Попробую сделать такую машину, только на Ubuntu. Спасибо!
apt-get install language-pack-ru-base
По моему мнению, работать в консоли сервера на русском — извращение. Мало того, что перевод не всегда верный, так и в критических ситуациях кодировка сбивается. Кракозябры в режиме восстановления вас не обрадуют.
Все мои сервера работают строго на родном для них языке — английском.
При использовании даты в модексе все месяца будут отображаться в английском формате. Хоть в php.ini и установишь intl.default_locale в русский — всё равно его не будет.
По крайней мере я сейчас с этим боролся. как только установил русские локали — на сайте всё гуд — по русски месяца
Возможно заблудился гдето.
Это ж не диетический Debian.
До этого не выводились.
Ни дня без сюрприза =)
Linode, по твоему совету.
взято отсюда: bugs.debian.org/cgi-bin/bugreport.cgi?bug=619104 а конкретнее git.debian.org/?p=pkg-php/php.git;a=commitdiff_plain;h=0210cec984a6c97e1e9166cb5ac60d751f57ec9f
Сделал все по инструкции, только пока не устанавливал MODX. Решил зайти по IP, увидел приветствие Welcome to nginx!, потом создал в /var/www/site1/www файл index.html, перезагрузил браузер в надежде увидеть содержимое index.html, а увидел снова приветствие Nginx.
Подскажите, пожалуйста, в чем может быть причина?
Можно сделать так:
2. Судя по тому, что Nginx вас приветствует, а не говорит 403 Forbidden — вы попадает на дефолтный сайт, а не на свой. Значит, нужно разбираться с ДНС.
Первый способ проблему не решил.
Скажите, а где этот ДНС находится, нужно писать в супорт Селекту?
Мой IP 37.200.68.117, который отдает приветствие Nginx.
Если вы открываете сайт не по имени, а по ip — то всегда и будет открываться стандартный. Для работы разных сайтов на одном ip и придумали доменные имена.
В общем, гуглите. Это азбука, дальше объяснять — время терять.
Открываю site1 и вижу вывод скрипта как и ожидается site1. Но стоит жать F5 несколько раз как начинает выводиться site2. Два раза site1 и два раза site2 и так по кругу. На втором сайте все точно также. Причем если /etc/php5/fpm/pool.d/site2.conf переименовать чтобы при запуске не подхватывался, то оба сайта все равно работают, но показывают site1 постоянно (без переключения пользователя). Что это и как с этим бороться?
Спасибо за ваш труд — мануал отличный!
Вы не могли бы подсказать, как правильно настроить сам MODx для корректной работы с Яндекс? В сети детальной информации по этому вопросу не нашел, и с наскоку настроить тоже не удалось.
Прописываете mx записи для домена. Ждете пока они обновятся.
В настройках MODX раздел Почта:Этого должно быть достаточно!
, 'mail_smtp_auth' => 1
, 'mail_smtp_hosts' => 'smtp.yandex.ru'
, 'mail_smtp_pass' => 'password'
, 'mail_smtp_port' => '465'
, 'mail_smtp_prefix' => 'ssl'
, 'mail_smtp_user' => 'login@yandex.ru'
, 'mail_use_smtp' => 1
Работает по обеим версиям :)
Подскажите пожалуйста какое значение &from нужно укзать для Formit?
Никак он у меня работать не хочет :(
-как модуль Apache;
-как CGI.
Я так понял, устанавливать следует «как CGI»?
Она вам такого наконфигурирует, во век не разгребёте.
Не знаю, что тут может быть сложного.
В любом случае, эти знания очень пригодятся в будущем. Навыки администрирования GNU/Linux никому не мешают.
Но времени на него нет, а ньюансов там много.
Пока в любом случае времени нет, это было бы логичное продолжение текущих настроек сервера.
Когда память на сервере заканчивается, он что — падает, глючит, виснет? Или работает как надо, просто показывая, что вся память занята?
Если второе — волноваться не о чем, если первое — попробуй добавить памяти на сервер (если можно) или перезапускать процесс раз в сутки.
У меня на linode 768 ОЗУ, только 200 из них обычно свободно.
У меня ни разу такого не было, чтобы аж ssh переставал работать.
На Linode у меня был тариф 512 — всё летало, никаких утечек. Ubuntu 10.04.4, все пакеты из репозитория.
Ну а собственно теперь вопрос — чем пользуетесь, при добавлении сайтов в рамках своей VPS?(если есть что-то кроме шела так же расскжаите о нагрузке на ресурсы)
С трудом верится что все руками — как то не юзабилити.А подозреваю покупать cPanel или ISPManager нет смысла, все таки это Dedic для не большой аудитории…
Ajenti безусловно мастхэв — но все же автоматизации он особо не добавляет…
Заранее, благодарен за ответ.
С нагрузкой полный порядок — треть ресурсов всегда свободны.
Эту заметку перепишу под linide, давно в планах.
Залил 4-й — при попытке открыть фронт енд выдает ошибку 403 Forbidden.
Права на файлы все проверил, конфиги тоже, обновил Модкс через Setup — не помогло.
Сайты с нулевой нагрузкой.
Может ли быть, что надо что-то подправить в /etc/php5/fpm/pool.d/site1.conf?
Высчитывать что-то желания нет, извини.
Получаю ошибку -bash: sudo: command not found
(юзера создала и перезалогинилась) Выбран Debian 6, может надо Ubuntu? Простите за ламерские вопросы, только начинаю осваивать что-либо другое, отличное от ISP-панели((
Подскажите что делать? Спасибо!
Если ты пока не разбираешься в GNU/Linux — было бы проще поставить Ubuntu, а не Debian. Проблемы с sudo, например, не было бы.
и после, введя пароль рута все дейтсвия будете делать от его имени (аналог su в Debian).
Удобно при работе с скриптами и первичной настройкой системы в рамках SSH сессии
Как минимум не удобно в случае, когда в nano скажем сохраняешь файл -это хоткей Ctrl+О, соответственно если nano был запущен из MC -то на этот же хоткей он тоже забинден, и в итоге получается что приоритет у MC, и nano сворачивается, вместо записи.
Понимаю что не проблема, но все же-)
Полезным оказалась воспроизведение скрипта при входе посредством вот такой незатейлевой команды:
если есть ошибки-они выведутся…
В моем случае я просто не заметил, что слетел chmod
1. user так и не стал sudo
2. набор в консоли директивы отсюда: habrahabr.ru/post/116614/ — не срабатывал. Сработал с гитхаба, но только на скачивание, не анзипило почему-то (это про прямые ссылки, через view raw вынутые). Правда потом выдало это:
3. не смог разобраться, как запускать скрипты автоустановки из консоли. Как я понял надо создавать файл, копировать туда код и потом его запускать из консоли, но где файл сохранять, как запускать итд не смог найти в нете
4. при перезапуске сервера вот чего смущает (см скрин)
5. не было никаких сигналов о том, что символическая ссылка создалась (в строке набирал, через sudo и стартовал её)
6. /etc/nginx/nginx.conf бэкапим, вроде нашёл в нете, как, но тоже так и не понял, забэкапил или нет
7. По sftp через WinSCP увидел, что директория /www в ./var не создалась, а архив MODX скачан в ./home/user/ (всё ли тут норм?)
П.С.
пользовал консоль а не MC
Так же хотел бы узнать, где и как на Линоде итд делать адрес сайту, что бы запускать его, устанавливать итд. вроде бы Вы не упоминали об этом ещё.
АП
Почистил кеш WinSCP — папка с MODX появилась! Правда modx.zip так и не наблюдается, хотя MC его показывает.
4. Смотри конфиги nginx, у тебя дублируется где-то директива.
6. Тут бэкапим — это просто копируем куда-нить, на всякий случай.
7. В чем трудность создать директорию?
Зачем тебе хостинг, если у тебя нет доменного имени? Как на твой сайт люди будут попадать?
На всякий случай проясню, что bezumkin.ru — это доменное имя, которое ведёт на сервер с сайтом. На одном сервере может быть куча сайтов с разными именами, но с одним ip.
А я пока всё по новому кругу переустановил и почти всё Ок. Есть совсем мелочи, но их позже уточню.
Так я прописывал это, наверное, что-то не так пошло.
А, не, это я знаю, просто привык, что Петерхост техническое имя сразу даёт, надеялся, что буржуи ещё щедрее :0)
Или, может, по ip моему Линодному можно, по которому я через ssh на сервак прибегаю, например? Мне то сейчас, по сути, запустить /setup MODX интересно-нужно, а для этого же юрла нужна — вот о ней пока речь.
— Пропиши любое имя у себя на компе в hosts и укажи ему твой ip.
— В nginx, соответственно, укажи отзываться на это имя и будет работать.
Кстати, там есть технич. имя, похоже: типоличныйномер.members.linode.com (там тоже Welcome to nginx! болтается, кнш).
Итого, 2 сайта на одном ip. Либо удали дефолтный, либо настрой домен, как я написал.
Ну, а глобальный корень был в том, что после выполнения инструкций поста я применял скрипт автоустановки, тогда как его применять можно-нужно сразу после команд mkdir /var/www и
mkdir /var/www/site1.
1. Рекомендую хранить /var/www/site1/chmod — можно поподробнее об этой строчке и непосредственно работе и вызове?
2. addsite.sh — его в «совсем-совсем» корень кидать и он сам всё расфасует, или таки в корень который корень site1?
п.2 ещё и к тому, чтобы не плодить сейчас сайтов больше одного.
Закачивать их на сервер вот так:
update.sh, remove.sh
Потом прописываешь пароль от Mysql в начале файла и можно ставить сайты.
Вот я потому некими кривоокольными путями я БД какую-то как-то наварганил (вот такую мануалину нарыл, вроде даже небесполезная: www.ithowto.ru/32-sozdanie-bazy-mysql-i-naznachenie-privelegij.html), но при создании базы и имя юзера и базы и пароль ставил, а при установке MODX оно всё не понадобилось и даже вредило (не коннектило к базе), а в итоге 500.
wget gist.github.com/raw/2179479/5b626bc233a2baf70b3e1b40aed04816a28f67d2/addsite.sh -O /root/modx/addsite.sh && chmod +x /root/modx/addsite.sh — no such file говорит.
Всё, дальше сам — я устал помогать.
Взглянул на логи за последние дни, и появилось желание просто наглухо перекрыть доступ для этой страны.
Естественно, так можно защищать любой порт, не только 22, Запретить конкретно одной стране что-то нельзя, только если ты не укажешь все её айпишники в правила файрвола.
П.С.
Надеюсь, я нигде не ошибся в файле, ну и, что он пригодится.
Только что, возможно, справился с «nginx: [warn] duplicate MIME type „text/html“ in /etc/nginx/nginx.conf:18»
Оказывается, gzip_types по-умолчанию gzip-ит text/html по MIME-типу, а в /etc/nginx/mime.types он уже описан и потому выскакивает алерт о дублировании. Нужно или удалить text/html из списка gzip_types файла nginx.conf или не добавлять при формировании файла или игнорить алерт.
1. После долгих исканий и пары ребутов серва обнаружил, что php.ini подгружается из /etc/php5cgi/php.ini, а не из /etc/php5/fpm/php.ini. Подскажите, почему так и чем это чревато?
2. По поводу мод_реврайт: целесообразно ли перевести конструкцию вида location ~ account/([0-9]+) { rewrite ^/account/([0-9]+)/ /index.php?q=account/&userid=$1; } на событие OnPageNotFound?
3. как узнать какой php.ini использует крон?
2. Да, конечно.
3. Свой, консольный, php5-cli.
Дело в том, что изначально серв собирал не я, собрать с нуля пока возможности нет. cgi уже было тут. подскажи плиз что терь сделать, чтобы всё не паламалось :)
Это остановит cgi, если он еще пашет, удалит полностью fpm, с конфигами и установит заново.
переустановил и всё равно путь до ini: /etc/php5cgi/php.ini
Честно, не знаю где переменную прописать, надо гуглить.
Fixed: М-да, сам же и начудил) Убрал свои приписки и все заработало)
Хорошо, что сам разобрался.
Заранее благодарен
FIXED: Странно, но исправилось после апдейта локалей и часового пояса. Стояло американское время (часовой пояс).
В модх настройка чпу, наиболее гибкая по моему не вижу смысла что то мутить со слешами.
А по поводу слеша для сео гланую страницу главное склеить, а внутряки индексируются через меню, если с сылкми не напортачить(роботу не светануть оба адреса с / и без то все ок и без подпрыгиваний и кто муже есть meta каноникл он считывается и гуглом и яндексом и внем указывается страница для индексации это помогает)
И вообще если уж нато пошло каталоги надо наоборот со слешем давать — наоборот переадресацию делать с пустого окончания на / если адрес не заканчивается .html .php или не содержет гет запроса.
Нужно указать все правила для этой директории до реврайта. Почитай, как nginx выбирает location для обработки запроса.
По идее просто пишу
но идея зацикливается по прежнему
Ты плохо понимаешь, как работает nginx, нужно почитать литературу.
Я как-то давно пытался почитать мануалы Сысоева — дохлый номер: написано программистом для программистов. Судя по всему очень мало кто знает, как работает nginx тк ответа на мой вопрос нет нигде. Под апач полно решений, а тут тишина.
Собственно все сайты на разных движках успешно переехали с говнохостинга на linode, один evo отличился как всегда. Даже dle с правилами рерайта на 2 страницы перенесся без потерь, а тут такой сюрприз.
Там черным по белому написано, что предпочтение отдается регулярным выражениям — а ты пишешь обычное.
Nginx его просто игнорирует и выбирает более интересное.
Держи:
Первое правило у меня давно работает, это запрет на вход в админку всем, кроме меня — то есть, это отдельная обработка служебных директорий.
А вот во втором не уверен — только что его придумал, но тоже должно работать, ибо вес имеет тот же, что и первое, но идёт за ним.
В общем, удачи.
Рабочий результат
Либо делай так, чтобы он ничего не возвращал, либо направляй его вывод в /dev/null
clip2net.com/s/53PEFb
На все, что не существует физически выдает 500 и дальше работает как надо.
Вот такой вот конфиг
Т.к. я не шибко админ, то чет туплю и немного не понимаю. Я так понимаю косяк где-то в настройках реврайта для nginx?
Вот еще немного инфы.
Включение отображения ошибок позволило избавится от 500 ошибки, но никакой ошибки не появилось. Странно это.
После переноса сыплет 500 ошибками. Я намучался с правами — сил нет. Люблю бубунту, но иногда от нее мозг кипит. Права выставлять на директорию пользователь: пользователь и для начала 775? При таких, рекурсивно назначенных, правах должно работать нормально? Отчего в админке он показывает замки на файлах?
Создавай ручками и мучайся с глюками.
Но есть одна проблема — иногда наблюдаются странные глюки с передачей файлов по sftp через FileZilla (через другие клиенты не пробовал). При попытке скачать или загрузить файл на хостинг получаю ошибку — "Превышено время ожидания соединения", и так может быть несколько раз подряд. Потом через какое-то время опять все работает. И так регулярно. Какой либо закономерности возникновения этой ошибки не заметил.
У кого нибудь была похожая проблема?
Однако pdoResources такого подхода не понимает. Как сделать динамического родителя, не используя конкретный id? Возможно я упустил что-то в документации?
Твой кэп.
Какие права на саму директорию — юзер её владелец, или рут?
Захожу под юзером, заливаю файл
Захожу на сервере — проверяю
Захожу в админку — проверяю
Как видишь, проблем нет.
Заливаю под пользователем:
Проверяю права:
Смотрю в админке:
И пытаюсь открыть в браузере:
1. Файл заливается правильно
2. Владалец у него верный, но посмотри разрешения — там чтение только для владельца!
3. Nginx открыть файл не сможет, ибо он запущен не от юзера dengi и прав к файлу не имеет.
4. PHP видимо тоже запущен не от dengi, если не может его открыть.
Так что, разбирайся, почему у тебя выставляются такие разрешения на загруженный файл. Скорее всего, чудит сам FileZilla.
Сейчас буду копать Filezilla
У меня в инструкции работа с файлами идёт через SFTP, а не отдельный FTP сервер. Ты бы уж писал сразу, что наворотил там что-то еще, а то только время зря тратим.
для проброса порта mysql для phpstorm?
Ты хочешь, чтобы сервер говорил «юзер не найден» и злоумышленник мог точно подобрать имя существующего, чтобы дальше подбирать уже пароль?
Подскажите в какую сторону копать((((
Из настроек только как в статье
Возможно тебе уже пароль поменяли, или есть какая-то защита от частых входов.
Логи /var/log/auth.log:
Я так понял типо пароль не подходит. Но он верный. Подскажите, куда копать.
сделал вот так:
Может это поможет еще подсказать?
Вот эта строка:
Меняет права на www директорию. Если по ней то все ок. Но в таком случае не загружает файлы с админки modx. Я делал без www с админки все грузит но не работает sftp так как директория выше www уже не root. Получается я просто запускаю скрипт с www и сам вручную меняю директорию сайта на root и все ок все работает. Может я где не прав, подскажите?
На данный момент перешел на Яндекс.Диск, использую его официальный клиент — работает быстро и нетребователен к ресурсам.
Один недостаток — надо переодически заходить на сам сервис и чистить корзину.
От Dropbox отказался полностью.
Хочу еще апгрейдить и сами бэкапы, в связи с этим вопрос: duplicity может создавать инкрементальные архивы баз данных mysql?
В любом случае, сейчас меня Яндекс полностью устраивает, менять не хочу.
Хочу по твоей инструкции настроить очередной сервер на digitalocean.com
Так как твоя инструкция для Ubuntu (а я ставил ранее Centos 6. x64), то подскажи что из предлагаемого выбрать:
Ubuntu 14.04 x64
Ubuntu 14.04 x32
Ubuntu 12.04.4 x64
Ubuntu 12.04.4 x32
Ubuntu 10.04 x64
Ubuntu 10.04 x32
И отдельный вопрос по Ajenti: ее ставить на каком этапе, сразу после создания нового sudo пользователя? (до этого я пользовался панелью vestacp.com/, теперь хочу отказаться от нее)
Спасибо.
Ajenti можно ставить когда угодно — влияет только на удобство управления сервером.
Modx Evo 1.0.15.
Есть страница. Назовем ее Новости. Дочерними ресурсами в ней выступают другие страницы собственно с телом новостей.
На странице Новости подключен скрипт
Страница Новости сделана Первой страницей сайта (Инструменты — Конфигурация- Введите ID ресурса, который вы хотите использовать как стартовую (домашнюю) страницу. )
Сервер NGINX выводит код сниппета как Сервер Apache выводит код сниппета как Проблема в том, что NGINX если сделать страницу Главной, съедает префикс index.php?
Причем проблема наблюдается, если сделать страницу Главной. Если Главной сделать другую страницу, то генерация ссылки происходит нормально.
Я так понимаю проблема где то в настройка NGINX mod_rewrite…
Если уж совсем плохо с языком вероятного противника — просто перезагрузи сервер, должно помочь.
Эх, понимаю достали вас нубские вопросы, но вчера весь вечер сидел, пытался решить проблему, лишь бы тут лишний раз не писать.