Apache (HTTP) 80 Process: System

После установки обновлений Visual Studiо (MVC3) через Microsoft Web Platform не стартовал Apache. Port check дал информацию: порт 80 занимает процесс system

Решение:
Win+R, services.msc, виноваты службы
— Служба удаленного агента для Microsoft Web Deploy 2.0;
— Служба агента веб-развертывания.

Выбор ноутбука для программиста

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

Обращайте внимание на качество изготовления клавиатуры. Для человека, работающего с текстом, важны большой энтер и клавиши управления курсором, которые можно найти наощупь, не отвлекаясь от экрана. Почему-то во многих обзорах маленькие курсорные клавиши заносят в минус, не задумываясь, что маленькие они неспроста. У большинства современных ноутов с диагональю больше 14 есть цифровая клавиатура, из-за которой стрелочки теперь не в углу, и быстро положить на них пальцы не так-то просто.

Клавиши островного типа — удобны, клавиши старого типа — удобны, но тут важно посетить крупные ТЦ и потыкать самостоятельно. Главное — выбрать модели, а нагуглить, где они продаются и почем — дело уже… Отвлекся, продолжаем.

Далее — процессор. В интернетах достаточно много холиваров тестов. Я никогда amd не пользовался, могу сказать лишь про intel — если планируется установка виртуальных машин, нужны i5. Если не планируется, берите i3, они достаточно производительны — быстрее Pentium Dual Core прошлого года, в тестах показывающих результаты, превышающие Core 2 Duo, за которыми все гонялись несколько лет назад. Главное не нарваться на процессор для нетбуков.

Экран. Тут опять выбор зависит от ваших индивидуальных предпочтений. 15 или 17, больше 18 брать не слишком рекомендуется — сделать достаточно прочный и большой корпус достаточно трудно, клавиатура наверняка будет прогибаться, а экран — трястись. Впрочем, большинство 15-17шек также дрожит при наборе текста, и дрожь более заметна благодаря глянцевому экрану. Модели прошлых лет и дорогие образцы этим не страдают. Но можно подложить за экран ненужную тяжелую книжку. Кстати, насчет глянца.  Про глянец могу сказать — если за вами нет яркой лампы, и вы не в полосатой майке — программировать не мешает.

Если же вы работаете с фотошопом, то сами знаете, что лучше присмотреться к десктопам и IPS матрицам, они покрывают полностью цифровое пространство sRGB, и бла бла бла…

Производительность видеокарты можно узнать через http://www.notebookcheck.net/Computer-Games-on-Laptop-Graphic-Cards.13849.0.html, а можно и не узнавать. Если вы не геймер и любите интел, могу посоветовать процессоры на Sandy Bridge — встроенная в них видяха (Intel-HD-Graphics-3000) гораздо лучше той, что была встроена в процессоры Core прежнего поколения. На уровне выделенных GeForce 310M и AMD HD 5450. Выбрать ноут с таким процессором и такими выделенными видяхами — это наверно, не самое логичное решение.

Порты. Через год уже станет популярен USB-3.0 — все побегут покупать быстрые флешки, внешние винты, менять ноутбуки. Есть переходники USB-3.0 <-> E-SATA, так что любой из этих портов подойдет, или вообще не думайте об этом. Некоторое внимание можно уделить расположению юсб портов и аудио-разъемов, но быстро убеждаешься, что почти все производители располагают их в абсолютно непредсказуемом порядке, и определенно можно сказать лишь одно: задняя панель будет пуста, к сожалению (кроме ноутбуков DEll). Нужно подумать сразу, куда вам удобнее запихивать колонки, наушники. Если выбираете 17, которая почти всегда будет на столе, обратите на это большее внимание.

Но помните — больной энтер важнее.

Слоты расширения почему-то предлагают либо в очень дешевых, либо в дорогих моделях, в сегменте от 20 до 30  — они редкость. Подумайте, так ли вам нужны модемы или дополнительные порты?

Теперь, что касается возможности обмена товара.

Вообще, ноутбук не входит в список товаров, которые можно обменивать в случае, если они не подошли по фасону или цвету. С другой стороны, если вы скажете, что при покупке вас ввел в заблуждение продавец, что в ноутбуке на жестком диске порнуха клавиатура прогибается, раскладку придумывал какой-то ***, который уже, вы надеесь, покончил с собой (не переборщите), а ноутбук будет в идеальном состоянии, в некоторых магазинах вам могут пойти навстречу. И главное — решить заранее — так ли уж неустраним обрануженный вами недостаток впринципе, и лично для вас.

Отсюда получаются простые выводы.

Важно

  • клавиатура с большим enteroм, стандартным расположением клавиши delete, находимым на ощупь стрелочным блоком
  • usb 3
  • 2-х ядерный процессор с частотой не ниже 1,8 ГГц
  • крепление экрана (чтобы не качался при наборе текста).
  • расположение портов (хотя бы часто используемых: audio, lan, vga/hdmi) не должно мешать мышке.
Не слишком важно
  • e-sata
  • крутая видеокарта
  • оперативная память, объем жесткого диска (можно докупить)
  • количество usb-портов
  • вход для микрофона
  • слоты расширения
  • наличие dvd

Ноутбуки, не обладающие вышеперечисленными параметрами, вовсе не являются чем-то ужасным. Но важно понимать — все модели разводятся маркетологами.  В дешевом ноутбуке приятные (usb 3, хорошая клавиатура), и неприятные (нестандартное расположение клавиши delete, невнятный блок стрелок, малое количество юсб-портов, слабый процессор, отсутствие usb 3) фичи — данность. При ограниченных финансах с определенными недостатками придется смирится.

apache 1.3 suexec freebsd

SUEXEC — модуль apache, который позволяет запускать CGI скрипты из под имени пользователя. Насколько мне сейчас известно, невозможно одновременно использовать mod_php и suexec, поэтому мы будем использовать mod_fastcgi для запуска скриптов.

Устанавливать просто из портов.

1) Соберем (и будем автоматически каждый раз собирать) апач с поддержкой suexec

Для этого:

в /etc/make.conf добавить:

.if ${.CURDIR} == /usr/ports/www/apache13
WITH_APACHE_SUEXEC=yes
APACHE_SUEXEC_DOCROOT= /home
.endif

В “APACHE_SUEXEC_DOCROOT” следует задавать директорию в которой располагаются пользователи и их DocumentRoot директории, например /usr/hosting
Для другой версии Apache измените название папки соответственно.

После этого:

# cd /usr/ports/www/apache13
# make install clean

 2) Установим PHP5

Для начала убедимся, что существует бинарный файл php-cgi, что он скомпилирован с поддержкой fastcgi:

# /usr/local/bin/php-cgi -v

Output

PHP 5.2.6 with Suhosin-Patch 0.9.6.2 (cgi-fcgi) (built: Sep 10 2008 19:07:02)
Copyright (c) 1997-2008 The PHP Group
Zend Engine v2.2.0, Copyright (c) 1998-2008 Zend Technologies
with XCache v1.2.2, Copyright (c) 2005-2007, by mOo

Если вы не видите слово cgi-fcgi, перекомпилируйте php с поддержкой fastcgi:

# cd /usr/ports/lang/php5
# make config
# make install clean

3) Сконфигурируем FreeBSD Apache mod_fastcgi

Установим mod_fastcgi:

# cd /usr/ports/www/mod_fastcgi
# make install clean

Откроем файл /usr/local/etc/apache/httpd.conf и убедимся, что в нем есть следующие строки:

LoadModule fastcgi_module     libexec/apache22/mod_fastcgi.so

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

Например, исходные данные такие:

Доменное имя: andreyko.ru
Папка DocumentRoot: /usr/hosting/andreyko.ru/html
Папка для логов Log: /usr/hosting/andreyko.ru/logs
Папка PHP cgi-bin: /usr/hosting/andreyko.ru/cgi-bin/
Владелец папки папки /usr/hosting/andreyko.ru: andreykoru

Добавим пользователя andreykoru

# adduser

Создадим структуру папок

# mkdir -p /usr/hosting/andreyko.ru/{html,logs,cgi-bin}
# chown -R andreykoru:andreykoru /usr/hosting/andreyko.ru/

Добавим следующие строки в секцию виртуальных хостов файла httpd.conf:

<VirtualHost *:80>
User andreykoru
Group andreykoru
ServerAdmin webmaster@andreyko.ru
DocumentRoot "/usr/hosting/andreyko.ru/html"
ServerName andreyko.ru
ServerAlias www.andreyko.ru
AddHandler php-script .php
Action php-script /cgi-bin/php.cgi
ScriptAlias /cgi-bin/ "/usr/hosting/andreyko.ru/cgi-bin/"
ErrorLog "/usr/hosting/andreyko.ru/logs/error.log"
CustomLog "/usr/hosting/andreyko.ru/access.log" combined

<Directory "/usr/hosting/andreyko.ru/html">
Options -Indexes FollowSymLinks +ExecCGI
AllowOverride AuthConfig FileInfo
Order allow,deny
Allow from all
</Directory>

</VirtualHost>

Создадим php.cgi скрипт

Создадим шелл-скрипт в директории /usr/hosting/andreyko.ru/cgi-bin/php.cgi

#!/bin/sh
# Shell Script To Run PHP5 using mod_fastcgi under Apache
# Tested under FreeBSD 6.x and 7.x
### Set PATH ###
PHP_CGI=/usr/local/bin/php-cgi
PHP_FCGI_CHILDREN=4
PHP_FCGI_MAX_REQUESTS=1000
### no editing below ###
export PHP_FCGI_CHILDREN
export PHP_FCGI_MAX_REQUESTS
exec $PHP_CGI

Сохраним приведенный скрипт в папке /usr/hosting/andreyko.ru/cgi-bin/ под именем php.cgi. Установим права на выполнение:

# chmod +x /usr/hosting/andreyko.ru/cgi-bin/php.cgi

Перезапустим Apache

# /usr/local/etc/rc.d/apache22 restart
или
# apachectl restart


Проверка

Проверка FAST_CGI

Создайте любой php файл в директории /usr/hosting/andreyko.ru/html/

Проверка SUEXEC

В папке /var/log/apache-suexec.log должны появиться следующие записи:

[2011-09-09 02:51:46]: info: (target/actual) uid: (andreykoru/andreykoru) gid:(andreykoru/andreykoru) cmd: php-cgi

proftpd from ports

Иногда при установке proftpd на freebsd из портов возникает ошибка, вроде:

error: #error «Controls support required (use —enable-ctrls)» error: #error «Controls support required (use —enable-ctrls)»

Причина: неправильная конфигурация установки.

Решение:
cd /usr/ports/ftp/proftpd
make clean
make config
установить галочку на CTRLS Include controls
make all install
make clean

Установка VisualSVN Server + Trac 0.12 под Windows

UPDATE. Руководство потеряло актуальность, новая версия плагина Trac для VisualSVN Server устанавливает Trac версии 0.12 по-умолчанию. См. http://www.visualsvn.com/server/trac

 

Если же у вас старая версия, вы по-прежнему можете обновиться, руководствуясь этой статьей:

1) скачать и установить Trac для VisualSVN Server, используя инструкцию http://www.visualsvn.com/server/trac/. Пакет включает Trac версии 0.11.

Если не заработало, проверьте, что у пользователя Network Service есть полные права на папку C:\Program Files\VisualSVN Server.

Необязательно
2.1) добавить в Path C:\Program Files\VisualSVN Server\trac\python (чтобы удобнее было работать с командной строкой из любой папки)
2.2) если имя вашего виндового пользователя включает русские буквы:
добавить в Path переменную PYTHON_EGG_CACHE = D:\Program Files\App Data\Python-Eggs (папка указана для примера, её нужно создать в любом удобном месте)

3) перезагрузиться.

4) В файлах VisualSVN Server\trac\python\Scripts\*-script.py заменить строку C:\Ivan\server-trunk\trac\dist\python\python.exe на путь к экзешнику питона, например "C:\Program Files\VisualSVN Server\trac\python\python.exe" (кавычки потребуются, если путь содержит пробелы)

Если у вас Windows XP
5) установить свежий Trac (easy_install-2.5 Trac==0.12) и установить Babel (easy_install-2.5 Babel)
Если у вас Семерка
5) установить свежий Trac (easy_install-2.5 --always-unzip Trac==0.12) и установить Babel (easy_install-2.5 Babel)

Если что-то пошло не так, можно удалить яйца (egg) Genshi или Trac из папки VisualSVN Server\trac\python\Lib\site-packages и переустановить их заново.

6) обновить проект (trac-admin.bat %PathToProjectName% upgrade)

Связь новых проектов с svn теперь устанавливается через конфигурирование файла trac.ini или через интерфейс, про особенности синхронизации читаем в мануале.

7) Бонус. Добавляем себя в админы.
trac-admin.bat %PathToProjectName% permission add %username% TRAC_ADMIN

В результате имеем локализованный Trac, связанный с удобным svn сервером.

visualsvn сервер в службах лучше останавливать во время всех действий.

svn deploy windows

Вот так я сделал развертывание веб-приложения.

Имеется:
1) машина разработчика (Windows)
2) сервер SOURCE, где хранится исходный код (Windows + VisualSVN)
3) сервер SITE.RU с сайтом, и есть ftp

Что делаем на сервере SOURCE

  1. создаем структуру папок, типа
    D:\code\deploy\project\svn_export — сюда будет экспортироваться код из svn
    D:\code\deploy\project\replace — в этой папке хранятся файлы, которые нужно заменить перед отправкой на сайт (типа паролей к базе и т.д.)

  2. Устанавливаем Core FTP, создаем и сохраняем в нем профиль siteru для доступа к сайту
  3. Кладем на сервер батник примерно следующего содержания:

    set TMP_DIR=D:\code\deploy\project\svn_export
    set OVERWRITE_DIR=D:\code\deploy\project\replace

    set REPO=http://SOURCE/svn/project/trunk/
    set REPO_USER=user
    set REPO_PASS=pass

    set PROD_SERVER=siteru
    set PROD_DIR=/html/

    set FTP_CLIENT="c:\program files\coreftp\coreftp.exe"

    :::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
    : очистить временную папку экспорта
    del "%TMP_DIR%\*" /Q
    rmdir "%TMP_DIR%" /S /Q

    : залить head ревизию из репозитория во временную папку
    svn export --username "%REPO_USER%" --password "%REPO_PASS%" "%REPO%" "%TMP_DIR%"

    : перезаписать некоторые файлы
    xcopy /Y /E %OVERWRITE_DIR% %TMP_DIR%

    : загрузить по ftp
    %FTP_CLIENT% -s -O -site %PROD_SERVER% -u %TMP_DIR%\ -p %PROD_DIR%

Теперь можно, потестировав батник, прописать путь к нему в post-commit репозитория, и после каждого коммита в репозиторий изменения будут загружаться на сервер.
Но даже, если вы тщательно тестируете код перед отправкой, то проблемы могут возникнуть в результате случайной отправки ненужных данных, поэтому я всякое копирование изменений осуществляю вручную, удаленно запуская батник на сервере с рабочей машины.
Для этого используется PsExec:
psexec \\SOURCE d:\code\deploy\project\deploy_project.bat

установка phpunit на Windows с XAMPP.

Имеем установленный XAMPP, а в PATH есть путь к XAMPP\php.

Запускаем командную строку.

  1. Для установки phpUnit требуется версия PEAR Installer > 1.9.2. Посмотреть свою версию можно при помощи команды pearinfo (раздел PEAR). Обновление, если нужно, произведите командами pear upgrade или pear сhannel-update pear.php.net
  2. выполните pear channel-discover pear.phpunit.de
  3. pear channel-discover components.ez.no
  4. pear channel-discover pear.symfony-project.com
  5. раскомментируйте строку extension=php_curl.dll в php.ini, если она закомментирована.
  6. выполните pear install phpunit/PHPUnit (если тут возникнет ошибка, и потребуются какие-то дополнительные каналы, нужно добавить их, как сделано в п. 2)
  7. иногда требуется pear install XML_RPC2 (pear install —nodeps XML_RPC2)

Теперь команда phpunit доступна.

extension=php_curl.dll

Elasticfox Firefox 4

Чтобы установить Elasticfox в Mozilla 4.0.1 и старше, выполните шаги:

  1. Откройте elasticfox.xpi своим любимым архиватором (7zip, например)
  2. Извлеките из архива файл install.rdf. Он представляет собой обычный XML файл, замените в нем атрибут <em:maxVersion>4.0</em:maxVersion> на <em:maxVersion>5.0</em:maxVersion>
  3. Сохраните и поместите файл обратно.
  4. Перетащите elasticfox.xpi в окно мозиллы.

Formwizard Tip

Если вы используете Formwizard для jQuery, обязательно подключайте яваскрипт файл jquery.form.wizard.js ПОСЛЕ всех остальных (типа bbq.js, jquery.form.js), что нужны для его работы.

Клонирование битрикса

Понадобилось сделать копию сайта на битриксе, чтобы студия натянула на неё новый дизайн.

Скопировал базу и файлы, отредактировал конфиг веб-сервера — сайт запустился. Чтобы не сбрасывалась авторизация, нужно прописать кастомный session.save_path, отличающийся от основной установки. Сделать это можно в .htaccess или, как в моем случае, через php.ini в директории php-cgi