21 июля 2015 г.

Копируем таблицу MySQL из консоли

CREATE TABLE newtable LIKE oldtable;
INSERT newtable SELECT * FROM oldtable;

19 ноября 2013 г.

Как в Ubuntu запустить виртуальные хосты Apache под разными пользователями

Зачем нужно запускать виртуальные хосты под разными пользователями?
По-умолчанию Apache работает “от имени и по поручению” юзера www-data. Это значит что для веб-сервера будут доступны только те ресурсы (файли и каталоги), которые доступны для юзера www-data, соответственно и изменить он сможет только их. Как правило, на одном веб-сервере может располагаться сразу несколько виртуальных хостов (несколько сайтов), по-умолчанию все они будут доступны для юзера www-data и в случае взлома или поражения одного из ресурсов, остальные также могут быть поражены. Поэтому с целью обеспечения дополнительной безопастности существет возможность запуска виртуальных хостов от имени разных юзеров.
Как запустить виртуальные хосты от имени разных юзеров в Apache2?
Организовать работу виртуальных хостов под разными пользователями достаточно просто.
Для начала установим дополнительный модуль для апача apache2-mpm-itk. Так как этот модуль скомпилирован внутри apache2, во время установки появляется сообщение о том, чтотекущая версия apache и некоторые установленные модули могут быть удалени. Для установки запускаем следующую команду:
$ sudo apt-get install apache2-mpm-itk
В последующем перезапуске веб-сервера необходимости нет.
Теперь создадим новую группу
$ sudo addgroup GROUP_NAME
и юзера, под которыми будет работать один из наших виртуальных хостов
$ sudo useradd -g GROUP_NAME USER_NAME

$ sudo passwd USER_NAME
Далее открываем файл конфигурации виртуального хоста и добавляем туда диррективы:
<IfModule mpm_itk_module>

     AssignUserId USER_NAME GROUP_NAME

</IfModule>
Перед перезагрузкой apache установим соответствующие права на каталоги и файлы для нашего виртуального хоста
$ sudo chown USER_NAME:GROUP_NAME /var/www/some-virtualhost/ -R
Осталось только перезагрузить веб-сервер:
$ sudo service apache2 restart

Источник

10 декабря 2012 г.

Отключаем глобальное меню в Ubuntu 12.04

Наверно не я один задаюсь вопросом, зачем разработчики Unity Desktop создали глобальное меню. Возможно в этом было чтото глубокое и хорошее, но в результате очень не удобно постоянно переключаться между окнами и искать нужный тебе пункт меню, при этом не всегда очевидно к какому из окон это меню относится.

И скорее всего, не у меня одного, появилась мысль его отключить :)  Сделать это, к счастью, очень просто. Достаточно зайти в терминал и выполнить не хитрую комманду:

sudo apt-get autoremove appmenu-gtk appmenu-gtk3 appmenu-qt


В результате было:


стало:

1 ноября 2012 г.

Улучшаем производительность веб-ресурса. Установка mod_pagespeed в Ubuntu

Для начала загружаем пакет с сайта Google

wget https://dl-ssl.google.com/dl/linux/direct/mod-pagespeed-beta_current_amd64.deb

или для 32-битной системы

wget https://dl-ssl.google.com/dl/linux/direct/mod-pagespeed-beta_current_i386.deb


Терь устанавливаем пакет (обезательно с правами root):

dpkg -i mod-pagespeed-*.deb
apt-get -f install


Настройка модуля осуществляется в файле /etc/apache2/mod-available/peagespeed.conf



5 октября 2012 г.

Как сделать редирект черз .htaccess если браузер IE6

Иногда приходится разрабатывать проекты, работающий с ограниченным количеством браузеров, либо же без потдержки старых версий (IE6 к примеру). В таких случаях логично организовать редирект на страницу с соответствующим текстом. Сделать это можно как при помощи Javasript-а, так и на стороне PHP. Но как по мне, более элегантным решением будет редирект на стороне веб-сервера Apache, а точнее при помощи фала .htaccess. Создаем файл .htaccess в корне сайта либо же открываем существующий, и добписываем следующие директивы:
RewriteCond %{REQUEST_FILENAME} !^.png [nc]
RewriteCond %{REQUEST_FILENAME} !^.css [nc]
RewriteCond %{REQUEST_FILENAME} !^.jpg [nc]
RewriteCond %{REQUEST_FILENAME} !^.js [nc]
RewriteCond %{REQUEST_FILENAME} !^.gif [nc]
RewriteCond %{HTTP_USER_AGENT} "Firefox/2" [or]
RewriteCond %{HTTP_USER_AGENT} "Firefox/1" [or]
RewriteCond %{HTTP_USER_AGENT} "Flock/1" [or]
RewriteCond %{HTTP_USER_AGENT} "Camino/1" [or]
RewriteCond %{HTTP_USER_AGENT} "Opera/9" [or]
RewriteCond %{HTTP_USER_AGENT} "Opera/8" [or]
RewriteCond %{HTTP_USER_AGENT} "Opera/7" [or]
RewriteCond %{HTTP_USER_AGENT} "Opera/6" [or]
RewriteCond %{HTTP_USER_AGENT} "Opera/5" [or]
RewriteCond %{HTTP_USER_AGENT} "Opera/4" [or]
RewriteCond %{HTTP_USER_AGENT} "Opera/3" [or]
RewriteCond %{HTTP_USER_AGENT} "Opera/2" [or]
RewriteCond %{HTTP_USER_AGENT} "Opera/1" [or]
RewriteCond %{HTTP_USER_AGENT} "Safari/4" [or]
RewriteCond %{HTTP_USER_AGENT} "Safari/3" [or]
RewriteCond %{HTTP_USER_AGENT} "Safari/2" [or]
RewriteCond %{HTTP_USER_AGENT} "Safari/1" [or]
RewriteCond %{HTTP_USER_AGENT} "Navigator/" [or]
RewriteCond %{HTTP_USER_AGENT} "MSIE 6" [or]
RewriteCond %{HTTP_USER_AGENT} "MSIE 5" [or]
RewriteCond %{HTTP_USER_AGENT} "MSIE 4" [or]
RewriteCond %{HTTP_USER_AGENT} "MSIE 3" [or]
RewriteCond %{HTTP_USER_AGENT} "MSIE 2" [or]
RewriteCond %{HTTP_USER_AGENT} "MSIE 1"
RewriteRule . upgrade.html [L]
Конечно же работать все это будет только при условии подключеного модуля mod_rewrite.

20 августа 2012 г.

Как правильно установить NetBeans на Ubuntu 12.04

Я конечно не претендую, что описанный ниже метод асболютно правильный, но он простой и обеспечивает мне стабильную работу приложения уже достаточно долгое время...

Если устанавливать NetBeans сразу после установки системы, а я именно так всегда и делаю, то для начала понадобится установить JDK. Я много встречал негативных комментариев и "камней" в сторону дефолтного JDK, что решил воспользоваться альтернативным, а точнее Oracle JDK.

Порядок установки Oracle JDK следующий:

1. Удаляем OpenJDK:

sudo apt-get purge openjdk*

2. Открываем терминал и запускаем следующую последовательность комманд:

sudo add-apt-repository ppa:webupd8team/java
sudo apt-get update
sudo apt-get install oracle-java7-installer
 
3. После успешной установки проверяем версию JDK

java -version
  

Теперь идем на сайт NetBeans и качаем последнюю версию IDE:
http://netbeans.org/downloads/index.html

Находим сохраненный файл (я обычно сохраняю его на Рабочий стол), открываем свойсва файла, находим вкладку Permissions и ставим галочку в поле Allow executing file as programm. Закрываем окно, запускаем файл и устанавливаем NetBeans.

Если после первого запуска IDE вы заметили что главное меню сливается с заголовком окна, то необходимо еще выполнить следующее: ищем файлик /usr/share/themes/Ambiance/gtk-2.0/gtkrc, открываем его для редактирования от имени админа

 sudo gedit /usr/share/themes/Ambiance/gtk-2.0/gtkrc

... находим строку 338 с текстом

 style "menu" {

 и меняем ее на

 style "menu" = "dark" {

 Сохраняем и перезапускаем NetBeans (если он был запущен)...

9 августа 2012 г.

Велосипеды на Javascript и jQuery

Интересная статья с habra. Полезно знать каждому.

"В очередной раз открыв код коллег и ужаснувшись, я решил написать эту статью. Надеюсь для кого-нибудь это будет полезным, заодно и мне будет проще новичкам объяснять что у них в коде не так, просто кинув ссылку на эту статью.
Безусловно количество таких вещей очень и очень велико, поэтому в статье ограничусь лишь некоторыми."

http://habrahabr.ru/post/149237/

6 августа 2012 г.

Elgg: mod-rewrite для NGINX

Сегодня развернул Elgg на веб-сервере NGINX, и первая проблема с которой столкнулся - это небходимость замены mod-rewrite директив, которые содержатся в файле .htaccess, на соответсвующие правила для NGINX (rewrite-rules).

И первый вопрос, который у меня возник: куда нужно писать эти правила?
Rewrite-rules для Nginx указываются внутри секции server в файле настройки виртуального хоста, например /etc/nginx/sites-available/default.

Следующий вопрос был: что же туда писать?
Если подумать логически, то задача не совсем сложная, необходимо всего лишь конвертировать директивы из htaccess в соответвующие правила для nginx. Спасибо Томасу Делингу, который уже провел иследования в этом вопросе и успешно конвертировал директивы файла htaccess для Elgg 1.8.2. Все что мне осталось, это скопировать набор правил и обновить файл настройки виртуального хостинга, в результате он выглядел приблизительно так:

server {
 listen     80;
 server_name elgg.domain.com;
 root        /var/www-nginx/elgg/htdocs/;

 error_log /var/log/nginx/error.log;
 access_log /var/log/nginx/access.log;

 index         index.php index.html;
 fastcgi_index index.php;
 
 client_max_body_size      8M;
 client_body_buffer_size 256K;

 rewrite ^/pg\/([A-Za-z0-9\_\-]+)$ /engine/handlers/page_handler.php?handler=$1&$args;
 rewrite ^/pg\/([A-Za-z0-9\_\-]+)\/(.*)$ /engine/handlers/page_handler.php?handler=$1&page=$2&$args;
 rewrite ^/tag\/(.+)\/?$ /engine/handlers/page_handler.php?handler=search&page=$1;
 rewrite ^/action\/([A-Za-z0-9\_\-\/]+)$ /engine/handlers/action_handler.php?action=$1&$args;
 rewrite ^/cache\/(.*)$ /engine/handlers/cache_handler.php?request=$1&$args;
 rewrite ^/services\/api\/([A-Za-z0-9\_\-]+)\/(.*)$ /engine/handlers/service_handler.php?handler=$1&request=$2&$args;
 rewrite ^/export\/([A-Za-z]+)\/([0-9]+)\/?$ /engine/handlers/export_handler.php?view=$1&guid=$2;
 rewrite ^/export\/([A-Za-z]+)\/([0-9]+)\/([A-Za-z]+)\/([A-Za-z0-9\_]+)\/$ /engine/handlers/export_handler.php?view=$1&guid=$2&type=$3&idname=$4;
 rewrite /xml-rpc.php /engine/handlers/xml-rpc_handler.php;
 rewrite /mt/mt-xmlrpc.cgi /engine/handlers/xml-rpc_handler.php;
 rewrite ^/rewrite.php$ /install.php;
 if (!-d $request_filename){
  set $rule_11 1$rule_11;
 }
 if (!-f $request_filename){
  set $rule_11 2$rule_11;
 }
 if ($rule_11 = "21"){
  rewrite ^/([A-Za-z0-9\_\-]+)$ /engine/handlers/page_handler.php?handler=$1;
 }
 if (!-d $request_filename){
  set $rule_12 1$rule_12;
 }
 if (!-f $request_filename){
  set $rule_12 2$rule_12;
 }
 if ($rule_12 = "21"){
  rewrite ^/([A-Za-z0-9\_\-]+)\/(.*)$ /engine/handlers/page_handler.php?handler=$1&page=$2;
 }
 
 location ~ \.php$ {
  include fastcgi_params;

  # Assuming php-fastcgi running on localhost port 9000
  fastcgi_pass 127.0.0.1:9000;
  fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;

  fastcgi_connect_timeout 60;
  fastcgi_send_timeout 180;
  fastcgi_read_timeout 180;
  fastcgi_buffer_size 128k;
  fastcgi_buffers 4 256k;
  fastcgi_busy_buffers_size 256k;
  fastcgi_temp_file_write_size 256k;
  fastcgi_intercept_errors on;
 }
 
 # Do not put CSS there or it will break simplecache
 location ~* \.(bmp|js|gif|ico|jpg|jpeg|png)$ {
  expires max;
  # log_not_found off;
 }
}

Как установить и настроить NGINX+PHP+XDebug на Ubuntu 12.04

1. Установка NGINX-сервера:
sudo add-apt-repository ppa:nginx/stable 
sudo apt-get update 
sudo apt-get install nginx 


2. Установка PHP:

Если на вашем сервере php еще не установлен, то необходимо выполнить следующее:
sudo apt-get install php5-cli php5-cgi php5-fpm php5-mcrypt php5-mysql

В противном же случае достаточно установить пакет php5-fpm:
sudo apt-get install php5-fpm


3. Настройка виртуального хоста в NGINX

Открываем и редактируем файл  /etc/nginx/sites-available/default:

sudo gedit  /etc/nginx/sites-available/default

Для начала поменяем параметры root и index в секции server:

server{
...
    root: /var/www;
    index: index.php
...
}

Если вы уже пользуетесь веб-сервером apache, то для правильной работы nginx нужно будет поменять номер порта с 80 на 8000:

server{ 
 listen: 8000;
...
}

Убираем комментарии со следующих строк:

 location ~ \.php$ {
 fastcgi_pass 127.0.0.1:9000;
 fastcgi_index index.php;
 include fastcgi_params;
  }


4. Запускаем NGINX

sudo service nginx start

Также запускаем сервис, отвечающий за работу php:

sudo service php5-fpm start


5. Установка и настройка XDebug

Устанавливаем точно так же как описано в первой части статьи "Как настроить NetBeans для работы с XDebug"

Далее небходимо отредактировать файл /etc/php5/fpm/php.ini.
sudo gedit /etc/php5/fpm/php.ini


Перед тегом Date добавляем следующий код:
zend_extension="/usr/lib/php5/20090626/xdebug.so"

xdebug.default_enable = On
xdebug.var_display_max_depth=6
xdebug.remote_enable=on
xdebug.remote_host=127.0.0.1
xdebug.remote_port=9900
xdebug.remote_handler=dbgp
xdebug.idekey=netbeans-xdebug
xdebug.remote_autostart=1
xdebug.remote_log=/tmp/xdebug.log
xdebug.profiler_enable_trigger=1
xdebug.profiler_enable=0
xdebug.profiler_output_dir=/tmp/profiler
xdebug.show_local_vars=1
xdebug.overload_var_dump=1

... перезагружаем сервер


sudo service nginx restart


так как при перезагрузке сервера параметры php.ini автоматически не обновляются, необходимо также перезагрузить сервис php5-fpm:


sudo service php5-fpm restart


6. Настройка NetBeans

Открываем NetBeans Tools>Options>PHP>Debugging и в строке Debugger Port вводим значение 9900, нажимаем Ok.

На этом настройка завершена.

Осталось только поместить в /var/www тестовый файл index.php с кодом:

   

echo phpinfo();



26 июня 2012 г.

NetBeans: Что делать если цвет меню сливается с заголовком окна в Ubuntu 12.04

В Ubuntu 12.04 столкнулся с проблемой, когда меню моей любимой идешки сливается с цветом заголвка окна. Изза этого очень не удобно стало работать. Нашел простое решение данной проблемы, достаточно отредактировать файл netbeans.conf, который находится в директории установки netbeans (например: /home/user/netbeans7.2/etc)

 В конец файл добавляем следующую диррективу:

 -J-Dswing.aatext=true -J-Dawt.useSystemAAFontSettings=lcd --laf Metal 

Более детальную информацию о решении проблмемы см:

http://hanynowsky.wordpress.com/2012/04/27/netbeans-ide-look-feel-under-ubuntu-12-04/

Не помогло?

Тогда ищем файлик  /usr/share/themes/Ambiance/gtk-2.0/gtkrc, открываем его для редактирования от имени админа

sudo gedit /usr/share/themes/Ambiance/gtk-2.0/gtkrc

Находим строку 338 с текстом 

style "menu" {

и меняем ее на

style "menu" = "dark" {


Сохраняем и перезапускаем NetBeans (если он был запущен)...