среда, 12 декабря 2012 г.

Правильные права доступа на фалы и папки для SugarCRM


все папки 755 файлы 644
#find . -type d -exec chmod 755 {} \;
#find . -type f -exec chmod 444 {} \;

775 на все папки и под папки
cache/
custom/
data/
modules/

#find ./cache/ -type d -exec chmod 775 {} \;
#find ./custom/ -type d -exec chmod 775 {} \;
#find ./data/ -type d -exec chmod 775 {} \;
#find ./modules/ -type d -exec chmod 775 {} \;


664 на все файлы в этих папках
cache/
custom/
data/
modules/

#find ./cache/ -type f -exec chmod 664 {} \;
#find ./custom/ -type f -exec chmod 664 {} \;
#find ./data/ -type f -exec chmod 664 {} \;
#find ./modules/ -type f -exec chmod 664 {} \;



640 на config.php и  config_override.php 
#chmod 640 config.php config_override.php


664 на sugarcrm.log 
#chmod 664 sugarcrm.log

четверг, 1 ноября 2012 г.

Ограничение пропускной полосы для ProFTPd

Добавляем в proftpd.conf  две строчки

TransferRate RETR 1024.0
TransferRate STOR 512.0

В данном случае мы задали лимит для всех 1Mbite на скачивание и 512Kbit на закачивание.


пятница, 26 октября 2012 г.

PHP 5.3.3 + MySQLi ошибка во время компиляции my_global.h:1008: error: duplicate 'unsigned'

У меня возникла такая ошибка во время компиляции PHP 5.3.3 для DirectAdmin
Для решения этой проблемы нужно пропатчить исходники PHP вот этим патчем

Патч:

Index: ext/mysqli/php_mysqli_structs.h
===================================================================
--- ext/mysqli/php_mysqli_structs.h (revision 301474)
+++ ext/mysqli/php_mysqli_structs.h (working copy)
@@ -54,6 +54,7 @@
 #define WE_HAD_MBSTATE_T
 #endif
 
+#define HAVE_ULONG 1
 #include 
 
 #if !defined(HAVE_MBRLEN) && defined(WE_HAD_MBRLEN)


Сохраняем этот текст в файл php_mysqli_structs.patch
и в папке с исходниками выполняем patch <  php_mysqli_structs.patch

ImageMagick для PHP 5.3.3 + DirectAdmin

Подключение модуля ImageMagick для PHP 5.3.3 под DirectAdmin

Все дополнения для PHP что поставляется вместе с DirectAdmin вкомпиливаются в сам интерпретатор и не идут отделенными модулями.

Что бы включить такое расширение нам необходимо добавить строчку, например --with-gd, в конец конфигурационного файла /usr/local/directadmin/custombuild/configure/ap2/configure.php5
(ap2 означает Apache20 или apache22)

если вы используете suPHP то тогда вам необходимо отредактировать этот файл
/usr/local/directadmin/custombuild/configure/suphp/configure.php5

и после этого пересобрать PHP
cd /usr/local/DirectAdmin/custombuild
./build php n

Но нам этот способ не подходит так как расширения ImageMagick нет в поставке с PHP которое идет вместе с DirectAdmin.
Нам необходимо подключить его как внешний модуль.

Для этого качаем исходники и компилим его
wget http://pecl.php.net/get/imagick-2.3.0.tgz
tar -zxf imagick-2.3.0.tgz
cd imagick-2.3.0
/usr/local/php5/bin/phpize
./configure --with-imagick=/usr/local --with-php-config=/usr/local/php5/bin/php-config
make
make install

после этого расширение скомпилируется под версию PHP что мы используем для DirectAdmin
После установки расширение с копируется примерно вот в эту папку /usr/local/php5/lib/php/extensions/no-debug-non-zts-20090626/

Уточните название папки и подставте его как значение для параметра extension_dir в php.ini
Так как я используею suPHP то для меня используется вот этот файл
/usr/local/etc/php5/cgi/php.ini
добавляем в него - extension_dir = "/usr/local/php5/lib/php/extensions/no-debug-non-zts-20090626/"

и так же добавляем загрузку нашего дополнения
extension=imagick.so

После этого перезапускаем Apache и дополнение должно активироваться.




понедельник, 15 октября 2012 г.

Amazon CloudFront + Nginx + gzip

Что бы Amazon CloudFront отдавал ваши файлы сжатые в gzip, он должен и у вас забрать их сжатыми в gzip.
Но для этого вам нужно правильно настроить ваш web-сервер.
Вот настройки для Nginx


    gzip on;
    gzip_min_length 1000;
    gzip_types text/plain application/xml text/css text/xml text/javascript application/x-javascript;
    gzip_http_version 1.0;
    gzip_vary on;
    gzip_proxied any;

http://www.tcnj.edu/~bush/uftp.html
Мультикаст FTP 
http://zlib.net/pigz/
Параллельное сжатие на многопроцессорных серверах.

среда, 18 июля 2012 г.

перенос Wordpress на новый url

При переносе Wordpress на новый url  не достаточно просто изменить все пути.
Настройки в таблице wp_options хронятся как php массив и для каждого значения указывается его длинна.  Для изменения этого значение и используется скрипт Serialization-fixer.zip
http://davidcoveney.com/575/php-serialization-fix-for-wordpress-migrations/

среда, 23 мая 2012 г.

Закрытие сайта подписанными сертификатами

Переходи в нужную нам папку где буду находиться наши файлы и сертификаты

#openssl req -new -newkey rsa:2048 -keyout ca.pem -x509 -days 3650 -out ca.pem

Задаем пароль и запоминаем его

#/usr/lib/ssl/misc/CA.pl -newca
вводим имя созданого ранее сертификата - ca.pem

Сохраняем запомненный пароль в ./demoCA/private/cakey.passwd

#openssl x509 -noout -text -in ca.pem
Находим строчку которая начинается с serial:  и сохраняем сам серийный номер в файл ./demoCA/serial
удаляем ca.pem

Создаем список отзыва сертификатов
#openssl ca -gencrl -out cacrl.pem
(отозвать сертификат можно будет командой #openssl ca -revoke client01.crt)

Подключяем его к виртуал-хосту  директивой SSLCARevocationFile
далее подключяем cacert.pem  директивой SSLCACertificateFile

Разархивируем архив ssl_suite.zip
 ssl_gen.sh - генерит и отправляет сертификат клиенту
 ssl_renew.sh - обновляет сертификат когда истекает время работы сертификата
 ssl_send.sh - отправляет архив с сертификатами клиенту

Обратите внимание на файл exp_ssl_gen
В нем нужно подставить значения которые будут задаваться для сертификата, такие как Country Name, State or Province Name ...

четверг, 17 мая 2012 г.

bash: проверка правильного ввода email

#Check format of email address xxx@xxx.xx
verify=`echo $email |grep -E "[[:alnum:]]+@[[:alnum:]]+\.{1}([A-Za-z]+)$"`
if [ -z $verify ]; then.
echo "Error: Wrong format of email address  $email !!!"
exit 1
fi

bash: проверка пользователя root ли он

if [[ ${EUID} != "0" ]] && ! [[ $2 == "status" && $# -eq 2 ]] ; then
        echo "Error $0: must be root to run script , try to use sudo "
        exit 1
fi

понедельник, 23 апреля 2012 г.

Проблемы с обновлением SugarCRM с версии 5.5.0 до 6.0.4

Во время обновления Upgrade Wizard  зависает на одном из этапов.
Для решения нужно немного подправить исходники
В файле  modules/UpgradeWizard/systemCheck.php  находим строчку foreach($files as $file)
и в конце этого цикла вписываем  break; 

После этих изменения обновление проходит нормально.

четверг, 19 апреля 2012 г.

Добавление пользователя в SugarCRM из командной строки

Этот метод подходит в тех случаях когда вам нужно получить доступ к SugarCRM  имя доступ только к базе данных.
Для начала сохраняем хеш пароля администратора

mysql> select user_name,user_hash from users where user_name = 'admin';
+-----------+---------------------------------------------------+
| user_name | user_hash                                            |
+-----------+---------------------------------------------------+
| admin     | 58b4e67f66bacfr42380845d6af27187 |
+-----------+---------------------------------------------------+

Изменяем пароль на свой
mysql> update users set user_hash = md5('пароль') where user_name = 'admin';

Заходим в SugarCRM в раздел Admin > Create New User
И создаем нового пользователя под себя.

После всех этих действий  возвращаем старый пароль для администратора используя сохраненный хеш
mysql> update users set user_hash = '58b4e67f66bacfr42380845d6af27187' where user_name = 'admin';




понедельник, 26 марта 2012 г.

Проблема с загрузкой/отображением 24-битных bmp-файлов загружаемых через Apache

Столкнулся с проблемой когда не возможно загрузить 24-битные bmp-файлы через Apache, именно 24-битные, 8-битные отображаются нормально.
Пробовал обновлять Apache но безрезультатно.

> CentOS release 5.6 (Final)
> Apache/2.2.22

Решение:
Использовать модуль mod_deflate.
Он архивирует на лету все файлы указанных типов.
При этом мы выигрываем в количестве трафика, так как bmp хорошо архивируется.

<IfModule mod_deflate.c>
  AddOutputFilterByType DEFLATE image/bmp
  <IfModule mod_setenvif.c>
    BrowserMatch ^Mozilla/4 gzip-only-text/html
    BrowserMatch ^Mozilla/4\.0[678] no-gzip
    BrowserMatch \bMSIE !no-gzip !gzip-only-text/html
  </IfModule>
</IfModule>


четверг, 1 марта 2012 г.

bash - несколько приемов

# x="/foo/fizzbuzz.bar.quux"
# y=${x%.*}
# echo $y
   /foo/fizzbuzz.bar

# y=${x%%.*}
# echo $y
   /foo/fizzbuzz

# x="/foo/b/g/fizzbuzz.bar"
# echo ${x##*/}
   fizzbuzz.bar
 

Установка php53-mcrypt в Centos 5.6

В Centos 5.6 больше не поддерживается модуль mcrypt для php53, так что придется ставить его вручную

 # yum install php53-devel libmcrypt-devel

Качаем с сайта http://php.net/releases/ архив с исходниками необходимой нам версии php и распаковываем его.

Далее по плану:
# cd /path/to/src/php5.3.*/ext/mcyrpt/
# phpize
# aclocal
# ./configure
# make
# make install

После добавляем файлик /etc/php.d/mcrypt.ini  с содержимым extension=mcrypt.so
Перезапускаем apache

среда, 29 февраля 2012 г.

apache2-mpm-itk

apache2-mpm-itk - MPM (Многопроцессорный Модуль http://www.peruser.org/) для Апача 2 веб-сервера. mpm-itk позволяет Вам выполнять каждый из своих vhost под отдельным пользователем.

-  Пример:

<VirtualHost *:80>
  ServerName    www.domain.net
  DocumentRoot  /var/www/domain

  <Directory "/var/www/domain">
     Options Indexes FollowSymLinks
     AllowOverride all
     Order allow,deny
     Allow from all
     AssignUserId user group
  </Directory>

</VirtualHost>

понедельник, 30 января 2012 г.

Обработка параметров командной строки в скриптах bash

while getopts lrd:p:h: name
   do
      case $name in
           l)    lflag=1;;
           r)    rflag=1;;
           d)    dbname=$OPTARG;;
           h)    host=$OPTARG;;
           p)    port=$OPTARG;;
           ?)    printf "Usage: %s: [-lr] [-d dbname] [-h hostname] [-p dbport]\n" $0
                        exit 2;;
       esac
done