Проксирование запросов на другой сервер

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

server {
    listen 80;
    server_name www.example.com example.com;
    reset_timedout_connection  on;
    location / {
        proxy_pass http://XXX.XXX.XXX.XXX:80/;
        proxy_set_header X-Forwarded-For $remote_addr;
        proxy_set_header Host $host;
        proxy_set_header  X-Forwarded-For  $proxy_add_x_forwarded_for;
        proxy_redirect off;
        proxy_connect_timeout 60;
    }
}
Рубрика: Сервер | Метки: | Добавить комментарий

WordPress вместо кнопки «Опубликовать» показывает «Отправить на утверждение»

Довольно странная на первый взгляд проблема возникла у знакомого. Как оказалось просто при восстановлении из бэкапа базы потерялись директивы для ключей  AUTO_INCREMENT. Самый простой способ починить — зайти в phpMyAdmin и добавить для полей ID нужных таблиц auto_increment.

Надеюсь кому-то сбережет время.

Рубрика: wordpress | Метки: | Добавить комментарий

INSERT INTO tmp SELECT. Выборка во временную таблицу в MySQL

Бывает необходимо удалить из одной таблицы данные по критериям, которые завязаны на других таблицах (умри, вордпресс). В таком случае может пригодиться временная таблица.

# создаем временную таблицу с одним полем для id
CREATE TEMPORARY TABLE tmp_ids (id INT);
 
 
 
# вставляем в нее результаты выборки
INSERT INTO tmp_ids (id)
 
  SELECT p.ID FROM `wp_posts` p
 
    JOIN `wp_term_relationships` tr ON tr.object_id=p.ID
 
   WHERE tr.term_taxonomy_id = 10 AND p.post_type="post" AND p.post_status="publish" AND p.post_date < '2010-09-01';
 
 
 
# теперь удаляем нужные нам записи
DELETE FROM `wp_posts` WHERE ID IN (SELECT id FROM tmp_ids);

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

Рубрика: MySQL | Метки: | Добавить комментарий

Замена подстроки в поле БД

Полезная функция:

REPLACE(str,from_str,to_str);

Например, поменяем поддомен в значениях столбца url в нашей базе:

UPDATE `files` SET url = REPLACE(url, 'http://test', 'http://www') WHERE url LIKE 'http://test.%';
Рубрика: MySQL, PostgreSQL | Метки: | 1 комментарий

IDE для Ruby on Rails

Многих интересует вопрос о хорошей IDE для Ruby on Rails под Linux.
Если нужно много-много всего, встроеный браузер, консоль и т.п., то могу порекомендовать Aptana RadRails, мне понравилась.

Но сегодня хотел рассказать о другой клевой штуке. Читать далее

Рубрика: Linux, Ruby on Rails | Метки: , , | Комментарии (4)

Создание пользователя в PostgreSQL для Ruby on Rails проекта

После установки postgresql сервера, можно зайти под дефолтовым пользователем и создать для проекта пользователя.

$ sudo -u postgres psql
postgres=# CREATE ROLE username WITH LOGIN PASSWORD 'userpassword' CREATEDB;

Здесь «CREATEDB» означает, что этот пользователь сможет создавать объекты базы.

Чтобы созданные пользователи могли контактировать с сервером БД, открываем им доступ по паролю. Для этого идем в /etc/postgresql/8.4/main/pg_hba.conf и ищем строку:

local    all    all    ident

меняем ее на

local    all    all    md5

Перезапускаем postresql:

$ sudo service postgresql restart

Теперь меняем настройки в config/database.yml и делаем:

$ rake db:create

чтобы создать нужные базы данных.

Рубрика: Linux, PostgreSQL, Ruby on Rails | Метки: , , , | Добавить комментарий

Ошибка при установке гема для Postgresql

Если при установке гема pg вылезают подобные строки:

...
Installing pg (0.11.0) with native extensions /home/user/.rvm/rubies/ruby-1.9.2-p290/lib/ruby/site_ruby/1.9.1/rubygems/installer.rb:552:in `rescue in block in build_extensions': ERROR: Failed to build gem native extension. (Gem::Installer::ExtensionBuildError)
 
        /home/user/.rvm/rubies/ruby-1.9.2-p290/bin/ruby extconf.rb 
checking for pg_config... no
No pg_config... trying anyway. If building fails, please try again with
 --with-pg-config=/path/to/pg_config
checking for libpq-fe.h... no
Can't find the 'libpq-fe.h header
*** extconf.rb failed ***
Could not create Makefile due to some reason, probably lack of
necessary libraries and/or headers.  Check the mkmf.log file for more
details.  You may need configuration options.
...

Спасает установка dev-пакета для postresql сервера.
Например так:

$ sudo apt-get install postgresql-server-dev-8.4
Рубрика: PostgreSQL, Ruby on Rails | Метки: , , | Добавить комментарий

Поднимаем на одном сервере несколько Ruby on Rails проектов под разными версиями ruby (Nginx + Unicorn)

Хочу поделиться с вами способом разворачивания нескольких приложений Ruby on Rails на одном сервере. Поможет нам в этом RVM, Unicorn и Nginx.

Недавно заказчик попросил поставить Redmine к ним на сервер, на котором уже крутился проект на Ruby on Rails и использующий версию руби 1.9.2. А redmine работает максимум с ruby-1.8.7. Так как других проектов на сервер размещать не предполагалось, то там изначально поставили Nginx + mod_passenger. Как известно, используя mod_passenger на одном сервере не запустишь два приложения с разными версиями руби.
Читать далее

Рубрика: Linux, Ruby on Rails | Метки: , , , , | Добавить комментарий

Как секунды перевести в строку времени

Столкнулся с задачкой, нужно перевести секунды в часы:минуты:секунды, ну т.е. в обыкновенную строку времени.
Оказывается в стандартной библиотеке PHP есть встроеный класс DateTime, который легко с этим справится.

$seconds = 1652;
$datetime = new DateTime();
$datetime->setTime(0, 0, $seconds);
echo $datetime->format('H:i:s');

На выводе получаем красивую строку в формате времени: 02:24:12
Удобно и без велосипедов.

Рубрика: php | Метки: , | 1 комментарий

Свой шаблон для одиночной записи определенной категории

В файл single.php вашей темы добавляем в самое начало следующий код:

<?php
	$this_category = reset(get_the_category());
 
	$cat_file = get_theme_root() . '/название_темы/single-' . $this_category->slug . '.php';
	if (file_exists($cat_file)) {
		include ($cat_file);
		exit();
	}
?>

Это даст возможность использовать свой шаблон для страницы одиночного материала для каждой категории.
Например для отображения одиночных записей в категории с алиасом «news» создаем шаблон single-news.php

Рубрика: php, wordpress | Метки: | Добавить комментарий