Tag: Apache

mbstring битрикс и jommla

Столкнулся с такой проблемой. Как известно для полноценной работы нужен

mbstring.func_overload 2
mbstring.internal_encoding UTF-8

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

php_admin_value mbstring.func_overload 2
php_admin_value mbstring.internal_encoding UTF-8

и все работает на УРА!!!

Использование Mod_wsgi с Django на Ubuntu с Apache

Ставим mod_wsgi

sudo apt-get install libapache2-mod-wsgi

Конфигурации виртуального хоста:

<VirtualHost *:80>

    ServerAdmin i@developtolive.com
    ServerName developtolive.com
    DocumentRoot /home/www

    # Django settings
    WSGIScriptAlias / /home/www/django_apps/developtolive_com/wsgi_handler.py
    WSGIDaemonProcess developtolive_com user=you group=you processes=1 threads=10
    WSGIProcessGroup developtolive_com

    # Non-Django directories
    Alias /static /home/www/django_apps/developtolive_com/static
    <Location "/static">
        SetHandler None
    </Location>

    # Non-Django directories
    Alias /media /home/www/django_apps/developtolive_com/media
    <Location "/media">
        SetHandler None
    </Location>

</VirtualHost>

Поместите файл с именем wsgi_handler.py в папке проекта:

import os, sys

sys.path.append(os.path.dirname(os.path.abspath(__file__)) + '/..')
os.environ['DJANGO_SETTINGS_MODULE'] = 'developtolive_com.settings'

import django.core.handlers.wsgi

application = django.core.handlers.wsgi.WSGIHandler()

Создание сайта Mac OS

Вчера все таки руки дошли до простого, написание скрипта для поднятия сайта на mac os, дабы как то надоело ручками прописывать в конфигах. Вот и собственно сам скрипт

# -*- coding: utf-8 -*-
import sys, os

server_name = raw_input('ServerName --> ')
if(not server_name):
	print 'Введите имя хоста'
	sys.exit(1)

doc_root_default = '/Users/%s/Sites/%s' % (os.getlogin(), server_name)
doc_root = raw_input('DocumentRoot ('+doc_root_default+') --> ')
if(not doc_root):
	doc_root = doc_root_default

file_httpd = '/etc/apache2/extra/httpd-vhosts.conf'
file_hosts = '/etc/hosts'

config_A = '''
########### START HOST %s #############
NameVirtualHost *:80
<Directory />
    Options ExecCGI FollowSymLinks
    AllowOverride all
    Allow from all
</Directory>
<VirtualHost *:80>
    DocumentRoot "%s"
    ServerName %s
</VirtualHost>
########### END HOST %s #############
''' % (server_name, doc_root, server_name, server_name)

config_H = '127.0.0.1 %s\n' % (server_name)

open_file_config = open(file_httpd, 'a')
open_file_config.write(config_A)

open_file_host = open(file_hosts, 'a')
open_file_host.write(config_H)

os.mkdir(doc_root)
create_index = open(doc_root+'/index.php', 'a')
create_index.write('<?php phpinfo();?>')

os.system('chown '+os.getlogin()+':staff '+doc_root)
os.system('chown '+os.getlogin()+':staff '+doc_root+'/index.php')
os.system('apachectl restart')

Это чудо запускаем от привилегированного пользователя, как ни как конфиги правим =)

>> sudo creaty_site.py

Создание виртуальных хостов в виртуальной машине Битрикс

Предположим, у нас есть вебсервер с настроенной связкой Apache — Nginx, например, Bitrix Virtual Appliance, и мы хотим сделать на этом сервере дополнительный виртуальный хост (или несколько хостов).

  1. Заведём папку для нашего будущего виртуального хоста. Где она будет находиться — не принципиально. Мне удобнее держать виртуальные хосты в папке /var/vhosts. Допустим, мы создаём хост с именем virtualka1, это значит, что нам надо создать папку /var/vhosts/virtualka1. Внутри нам понадобятся еще 2 папки: www — содержимое этой папки будет доступно из браузера, и log — в этой папке будем держать логии нашей виртуалки. Разумеется все манипуляции делаются от root’а.
  2. Теперь созданную нами папку надо сделать доступной для пользователя bitrix, от которого обычно и осуществляется вся работа с сайтом. Для этого, находясь в папке /var/vhosts, мы выполняем команду
    chown –R bitrix:bitrix virtualka1/

    Теперь пользователь bitrix может делать с этой папкой всё. Для большего удобства, создадим символическую ссылку на эту папку в домашней директории пользователя:

    ln –s /var/vhosts/virtualka1 /home/bitrix
  3. Переходим к настройке серверов Nginx и Apache. Конфиги будем располагать таким образом, что насторйка каждого виртуального хоста будет храниться в отдельном файле в папке sites-available. А в папке sites-enabled будут лежать симлинки на конфиги тех виртуалок, которые нам нужны. Таким образом можно будет легко разобраться где какой конфиг лежит и, при необходимости, отключить ненужные путём удаления симлинка.Nginx

    Находим файл /etc/nginx/nginx.conf и добавляем в самый конец перед закрывающей скобкой } такую строчку:

    include /etc/nginx/sites-enabled/*;

    Это заставит nginx грузить конфиги из папки sites-enabled. Разуемеется папки sites-available и sites-enabled должны существовать в директории /etc/nginx, если их нет, то надо создать. Теперь в папке sites-available создаём файл virtualka1 с таким содержимым:

    server {
      listen 80;
      server_name virtualka1;
      server_name_in_redirect off;
      access_log /var/vhosts/virtualka1/log/nginx_access.log common;
      index index.php;
      error_page 500 502 503 504 /500.html;
      error_page 404 = /404.php;
      proxy_set_header X-Real-IP $remote_addr;
      proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
      proxy_set_header Host $host:80;
      client_max_body_size 1024M;
      client_body_buffer_size 4M;
      root /var/vhosts/virtualka1/www;
    
      location / {
        expires 3d;
        proxy_pass http://127.0.0.1:8888;
      }		
    
      location ~ (/|\.php)$ {
        proxy_pass http://127.0.0.1:8888;
      }
    
    }    

    Всё, осталось сделать симлинк на наш конфиг в папку /etc/nginx/sites-enabled/.

    Apache

    Проконтролируем, чтобы в конце файла /etc/apache2/apache2.conf была строчка Include /etc/apache2/sites-enabled/, а так же, чтобы были папки /etc/apache2/sites-available и/etc/apache2/sites-enabled. Если все хорошо, то в папке /etc/apache2/sites-available создаём файлvirtualka1 с таким содержимым:

    <VirtualHost *:8888>
    
      ServerName virtualka1
    
      ServerAdmin webmaster@localhost
    
      DocumentRoot /var/vhosts/virtualka1/www
    
      ErrorLog /var/vhosts/virtualka1/log/apache2_error.log
      CustomLog /var/vhosts/virtualka1/log/apache2_access.log combined
    
    </VirtualHost>
    

    Делаем симлинк на созданный конфиг в папку /etc/apache2/sites-enabled/.

  4. Осталось перезапустить сервера:
    /etc/init.d/nginx restart
    /etc/init.d/apache2 restart
    

Всё, виртуалка должна работать. Проверялось на BVA 1.6.

Есть один нюанс: исходные конфиги виртуалок битрикса намного больше, потому что заточены специально под него (например, там есть специальная настройка для HTML-кэшa). Я повыкидывал из них всё, на мой взгляд, не нужное, ведь у меня на этих виртуалках далеко не всегда крутиться битрикс :)

Для тех, кому лень вручную всё это делать

Мне вот лень, поэтому я написал себе скриптик. В качестве единственного параметра он принимает название виртуалки, оно же название БД, оно же логин к БД и пароль к БД. Да, скрипт автоматически создаёт и базу тоже.

Способ применения:

crSite.sh virtualka1

Не забываем разрешить скрипту исполняться.

crSite

(с)