Настроить Apache для локальной разработки / тестирования?
-
02-07-2019 - |
Вопрос
Я был впечатлен скринкастами для Rails, которые демонстрируют встроенный веб-сервер и базу данных, позволяющие осуществлять разработку и тестирование на локальном компьютере.Как я могу заставить экземпляр Apache выполнять каталог проекта в качестве его DocumentRoot и, возможно, передавать файлы на порт 8080 (или что-то подобное)?
Причина, по которой я спрашиваю, заключается в том, что я собираюсь опробовать CodeIgniter, и я хотел бы использовать его для нескольких проектов.Я бы предпочел не загромождать DocumentRoot моей машины каждым из них.Предложения о том, как выполнить миграцию базы данных, также приветствуются.
Спасибо вам за ваши ответы на данный момент.Я должен уточнить, что я использую Mac OS X.Похоже, что WAMP доступен только для Windows.Кроме того, XAMPP выглядит отличным способом установки Apache и многих других веб-инструментов, но я не вижу способа загрузить экземпляр для обслуживания каталога проекта.В Mac OS X установлены как Apache, так и PHP - я просто ищу способ заставить его обслуживать проект на нестандартном порту.
Я только что нашел MAMP Pro который делает то, что я хочу, но более минималистичный подход был бы лучше, если это возможно.У кого-нибудь есть файл httpd.conf, который можно отредактировать и перенести в каталог проекта?
Кроме того, извините, что я только что задал этот вопрос о миграции базы данных.То, что я надеюсь найти, - это то, что позволит мне перенести изменения схемы на действующий сервер без потери существующих данных.Я подозреваю, что это сложно и сильно зависит от факторов окружающей среды.
Решение
Ваш Mac поставляется как с веб-сервером Apache, так и со сборкой PHP.Это одна из главных причин, по которой платформа так любима веб-разработчиками.
Поскольку вы используете Code Igniter, вам понадобится PHP 5, который является версией PHP по умолчанию, поставляемой с 10.5.Если вы используете предыдущую версию операционной системы, перейдите на entropy.ch и установите прилагаемый пакет PHP5.
Далее вам нужно будет включить Apache.На панели настроек общего доступа включите личный веб-доступ.Это запустит apache на вашем локальном компьютере.
Далее вам нужно будет настроить несколько поддельных URL-адресов разработчиков для использования на ваших сайтах.Давняя традиция заключалась в том, что мы использовали для этого поддельный TLD .dev (напр.stackoverflow.dev).Однако, .dev
теперь это действующий TLD, так что вы, вероятно, не захотите этого делать -- .localhost
похоже на формирующийся стандарт defacto.Отредактируйте ваш файл /etc/hosts и добавьте следующие строки
127.0.0.1 www.example.localhost
127.0.0.1 example.localhost
Это указывает вышеуказанные URL-адреса на ваш локальный компьютер.Последний шаг - настройка apache.В частности, включение именованного виртуального хостинга, включение PHP и настройка нескольких виртуальных хостов.Если вы использовали PHP-пакет entropy, включение 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, но я считаю удобным использовать вашу папку personal Sites, поскольку для нее уже настроены правильные разрешения на включение файлов.
Другие советы
Извини, Кайл, у меня недостаточно авторитета, чтобы ответить непосредственно на твой комментарий.Но если вы хотите, чтобы каждый проект обслуживался на другом порту, попробуйте настроить конфигурацию вашего виртуального хоста точно так же, как у Келли выше (за вычетом 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>
Надеюсь, это поможет :/
Я также загружаю последние двоичные файлы для каждого из них и настраиваю их вручную.Я обнаружил, что это безболезненный процесс, если вы немного разбираетесь в настройке Apache.
На моей машине разработки у меня есть настройка apache с виртуальный хостинг на основе имен.У меня также есть dyndns.org учетная запись, которая сопоставляет мой домен разработки с моим локальным компьютером. Динадны предоставляет домен с шаблоном, и поэтому, используя виртуальные хосты на основе имен, я могу легко создать столько сайтов (с отдельными корнями документов) для любого количества доменов разработки, сколько захочу, и все они будут работать с одним экземпляром 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>
Для меня это был самый быстрый и простой способ легко поддерживать многие сайты разработки на моем локальном компьютере.
Я надеюсь, что в этом есть смысл.
Твое здоровье, Келли.
Я не использую Macos, но я использую Apache.В моем файле конфигурации apache (в Linux он обычно находится в /etc/apache2/ apache2.conf) найдите ссылку на файл с именем ports.conf.Найдите этот файл и добавьте строку
Слушать 8080
Затем перезапустите процесс apache.После этого вы должны заняться бизнесом.Заранее приношу извинения, если это не сработает на Mac :)
Вы могли бы использовать недорогой пакет предварительной настройки, такой как XAMPP и запустите его как отдельный экземпляр.Есть много и других подобных проектов.
Для PHP у вас есть несколько высококачественных пакетов для развертывания Apache + Mysql + PHP, таких как ВАМПИР и XAMPP.Лично я загружаю последние двоичные файлы каждого из них и устанавливаю вручную, чтобы иметь более детальный контроль.Есть множество онлайн-руководств о том, как с этим справиться.
Миграция базы данных должна быть простой - выгрузите базу данных на сервер либо из командной строки, либо через такой интерфейс, как phpMyAdmin, и экспортируйте его обратно аналогичными способами (рекомендуется использовать phpMyAdmin, если у вас нет опыта работы с командной строкой Mysql).
Вы можете использовать MAMP pro, но бесплатная версия также является очень хорошим выбором.Принеси это сюда: http://www.mamp.info/en/mamp.html
Я мог бы порекомендовать использовать отдельное виртуальное устройство LAMP для каждой среды разработки, с которой вы хотите поэкспериментировать.Запустите их на сервере VMware или VirtualBox.