Настроить Apache для локальной разработки/тестирования?

Меня впечатлили скринкасты для Rails, демонстрирующие встроенный веб-сервер и базу данных, что позволяет проводить разработку и тестирование на локальном компьютере. Как я могу заставить экземпляр Apache выполнять каталог проекта в качестве его DocumentRoot и, возможно, обслуживать файлы через порт 8080 (или что-то подобное)?

Причина, по которой я спрашиваю, заключается в том, что я собираюсь опробовать CodeIgniter и хотел бы использовать его для нескольких проектов. Я бы предпочел не загромождать DocumentRoot моей машины каждым из них. Также приветствуются предложения по миграции баз данных.


Спасибо за ваши ответы. Я должен уточнить, что я на Mac OS X. Похоже, WAMP предназначен только для Windows. Кроме того, XAMPP выглядит как отличный способ установить Apache и многие другие веб-инструменты, но я не вижу способа загрузить экземпляр для обслуживания каталога проекта. В Mac OS X установлены как Apache, так и PHP - я просто ищу способ заставить его обслуживать проект на нестандартном порту.

Я только что нашел MAMP Pro, который делает то, что мне нужно, но более минималистский подход был бы лучше, если это возможно. У кого-нибудь есть файл httpd.conf, который можно отредактировать и поместить в каталог проекта?

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


person Kyle Cronin    schedule 23.09.2008    source источник


Ответы (8)


Ваш Mac поставляется с веб-сервером Apache и сборкой PHP. Это одна из главных причин, по которой веб-разработчики так любят эту платформу.

Поскольку вы используете Code Igniter, вам понадобится PHP 5, который является версией PHP по умолчанию, поставляемой с 10.5. Если вы используете предыдущую версию ОС, перейдите на entropy.ch и установите предоставленный пакет PHP5.

Затем вам нужно включить Apache. На панели настроек общего доступа включите личный веб-доступ. Это запустит apache на вашем локальном компьютере.

Затем вам нужно настроить некоторые поддельные URL-адреса разработки для использования на ваших сайтах. По давней традиции мы использовали для этого поддельный TLD .dev (например, stackoverflow.dev). Однако .dev теперь является фактическим TLD, поэтому вы, вероятно, не захотите этого делать — .localhost кажется новым стандартом де-факто. Отредактируйте файл /etc/hosts и добавьте следующие строки

127.0.0.1    www.example.localhost
127.0.0.1    example.localhost

Это указывает вышеуказанные URL-адреса на ваш локальный компьютер. Последний шаг — настройка apache. В частности, включение именованного виртуального хостинга, включение PHP и настройка нескольких виртуальных хостов. Если вы использовали пакет entropy PHP, включение PHP уже будет выполнено. Если нет, вам нужно отредактировать файл http.conf, как описано здесь. По сути, вы раскомментируете строки, которые будут загружать модуль PHP.

Всякий раз, когда вы вносите изменения в конфигурацию Apache, вам необходимо перезапустить Apache, чтобы изменения вступили в силу. В окне терминала введите следующую команду

sudo apachectl graceful

Это изящно перезапустит apache. Если вы допустили синтаксическую ошибку в конфигурационном файле, apache не перезапустится. Вы можете выделить проблемы с конфигурацией с помощью

sudo apachectl configtest

Итак, с включенным PHP вам нужно включить NamedVirtualHosts. Это позволит Apache отвечать на несколько URL-адресов. Найдите следующую (или аналогичную) строку в файле http.conf и раскомментируйте ее.

#NameVirtualHost *  

Наконец, вам нужно указать Apache, где он должен искать файлы для ваших новых виртуальных хостов. Вы можете сделать это, добавив следующее в файл http.conf. ПРИМЕЧАНИЕ. Я считаю, что рекомендуется выносить подобные правила конфигурации в отдельный файл и использовать директиву include для включения ваших изменений. Это предотвратит стирание ваших изменений автоматическими обновлениями.

<VirtualHost *>
    DocumentRoot /Users/username/Sites/example.localhost
    ServerName example.localhost
    ServerAlias www.example.localhost
</VirtualHost>

Вы можете указать любую папку в качестве DocumentRoot, но я считаю удобным использовать вашу личную папку Sites, так как она уже настроена с правильными разрешениями для включения файлов.

person Alan Storm    schedule 23.09.2008
comment
Я думаю, что это лучший подход, потому что вам не нужно возиться с DNS, беспокоиться о своем динамическом IP-адресе или чем-то еще. Вы можете запустить свой локальный веб-сервер и ввести свои URL-адреса «dev», как будто это настоящие веб-сайты. - person JayTee; 23.09.2008
comment
Это самый простой подход, который я также от всей души рекомендую :) - person Aeon; 24.09.2008
comment
Отличный ответ и все еще актуален почти десятилетие спустя. Спасибо, Алан. - person Leonard H. Martin; 25.11.2017
comment
Обратите внимание, что домен верхнего уровня .dev больше не является поддельным. Выберите другой или убедитесь, что ваши правила не мешают работе любого веб-сайта, который вы, возможно, захотите посетить. - person Morgan; 27.02.2019
comment
@flugga Спасибо! Несмотря на то, что .dev стал реальностью, у меня закатываются глаза, вы правы. Я обновил вопрос, чтобы отразить текущую реальность — 10 лет?! после исходного ответа. - person Alan Storm; 27.02.2019

Извините, Кайл, у меня недостаточно доверия, чтобы ответить прямо на ваш комментарий. Но если вы хотите, чтобы каждый проект обслуживался на другом порту, попробуйте настроить конфигурацию вашего виртуального хоста точно так же, как Келли выше (за исключением dns), за исключением того, что вместо 80 дайте каждому виртуальному хосту свой собственный номер порта, предполагая, что вы добавил этот порт в ваш файл ports.conf.

NameVirtualHost *

<virtualhost *:80>
DocumentRoot /site1/documentroot
</virtualhost>

<virtualhost *:81>
DocumentRoot /site2/documentroot
</virtualhost>

<virtualhost *:82>
DocumentRoot /site3/documentroot
</virtualhost>

<virtualhost *:83>
DocumentRoot /site4/documentroot
</virtualhost>

Надеюсь, это поможет :/

person Jurassic_C    schedule 23.09.2008
comment
Не совсем то, на что я надеялся, но вполне достаточно. Я думаю, что воспользуюсь им, когда закончится моя пробная версия MAMP Pro. P.S. теперь у вас должно быть достаточно представителей, чтобы комментировать :) - person Kyle Cronin; 23.09.2008

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

На моем компьютере для разработки я установил apache с виртуальным хостингом на основе имени< /а>. У меня также есть учетная запись dyndns.org, которая сопоставляет мой домен разработки с моим локальным компьютером. DynDNS предоставляет подстановочный домен, и поэтому, используя виртуальные хосты на основе имени, я могу легко создать столько сайтов (с отдельными document root) для столько доменов разработки, сколько мне нужно, и все они работают на одном экземпляре Apache.

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

NameVirtualHost *:80

<virtualhost *:80>
ServerName site1.mydyndns.dyndns.org
DocumentRoot /site1/documentroot
</virtualhost>

<virtualhost *:80>
ServerName site2.mydyndns.dyndns.org
DocumentRoot /site2/documentroot
</virtualhost>

Для меня это был самый быстрый и простой способ легко поддерживать множество сайтов разработки на моей локальной машине.

Я надеюсь, что в этом есть смысл.

Здоровья, Келли.


person Bazman    schedule 23.09.2008
comment
Это хорошая идея и имеет смысл; однако моя машина для разработки представляет собой ноутбук и слишком часто переключает IP-адреса, чтобы DNS не отставал. Тем не менее, возможно, можно настроить собственный DNS-сервер на моем компьютере и использовать его вместо этого. - person Kyle Cronin; 23.09.2008

Я не использую Macos, но использую Apache. В моем файле конфигурации apache (в Linux это обычно /etc/apache2/apache2.conf) найдите ссылку на файл с именем ports.conf. Найдите этот файл и добавьте строку

Слушай 8080

Затем перезапустите процесс apache. После этого вы должны быть в бизнесе. Заранее извиняюсь, если это не работает на Mac :)

person Jurassic_C    schedule 23.09.2008
comment
Это будет работать и в Mac OS X, но изменит только порт, который обслуживает процесс httpd по умолчанию. Моя цель - иметь отдельный порт для каждого проекта. Я подозреваю, что для каждого проекта также потребуется отдельный httpd.conf. - person Kyle Cronin; 23.09.2008

Вы можете использовать пакет начальной установки, такой как XAMPP, и запустить его как отдельный пример. Есть и много других подобных проектов.

person phloopy    schedule 23.09.2008

Для PHP у вас есть несколько высококачественных пакетов для развертывания Apache+Mysql+PHP, таких как WAMP и XAMPP. Лично я загружаю последние бинарные файлы каждого и устанавливаю вручную, чтобы иметь более точный контроль. В Интернете есть множество руководств о том, как с этим справиться.

Миграция базы данных должна быть простой — выгрузите базу данных на сервер либо в командной строке, либо через такой интерфейс, как PHPMyAdmin и экспортируйте его обратно аналогичным образом (рекомендуется PHPMyAdmin, если у вас нет опыта работы с командной строкой Mysql).

person Eran Galperin    schedule 23.09.2008

Вы можете использовать MAMP pro, но бесплатная версия также является очень хорошим выбором. Получите его здесь: http://www.mamp.info/en/mamp.html

person rg88    schedule 23.09.2008

Я мог бы порекомендовать использовать отдельное виртуальное устройство LAMP для каждой среды разработки, с которой вы хотите поэкспериментировать. Запустите их на VMware Server или VirtualBox.

person EmmEff    schedule 23.09.2008