Подтвердить что ты не робот

Сколько Linux я должен изучить для развертывания веб-сайтов с использованием LAMP?

Будучи разработчиком Windows, я сейчас работаю над своим собственным проектом с использованием LAMP. Я понимаю, что мне нужно знать о PHP и MySQL, но Linux выглядит огромным, и неясно, с чего начать, и чего достаточно, учитывая мои цели. И мои цели состоят в том, чтобы понять общие понятия, возможность развертывания проекта на хостинг-провайдере и возможность отслеживать производительность сайта, чтобы выявлять проблемы, загружать проблемы и т.д.
Я знаю, лучшее решение - заставить администратора Linux сделать это, но прежде чем я смогу сделать это, мне нужно сделать это самостоятельно.

Расскажите мне, как это сделать!

Было бы здорово, если бы люди расширили свои ответы о том, что узнать, как их изучить (следует ли покупать какую-то книгу или есть хороший онлайн-учебник или...?).
4b9b3361

Ответ 1

80% ваших проблем будут иметь разрешения. Windows делает их по-другому; если вы входите в систему с правами root (или с корневыми привилегиями), вы можете обойти разрешения. Apache не может и не будет.

  • Узнайте, как правильно установить права собственности на файлы и каталоги. Любая книга Unix будет охватывать это: не забудьте на самом деле понять это - это не безопасность Windows, написанная по-разному - это другая модель безопасности.

Из оставшихся проблем 80% будут проблемой PATH. PHP не имеет такой большой проблемы PATH, как Java и Python, но все они используют параметр PATH для поиска компонентов и библиотек. Вы будете регулярно ошибаться. У Windows есть PATH, но у нее также есть реестр, что делает вещи сверхлегкими или сверхсекретными. Unix не хранит секретов.

  • Узнайте, какие переменные среды используют PHP и MySQL. Убедитесь, что вы знаете, где и как они устанавливаются. Apache работает в своей собственной среде и имеет команды для обеспечения параметров среды выполнения через mod_php. Напишите короткие сценарии оболочки echo $PATH, чтобы узнать, что происходит.

Из оставшихся проблем 80% будет связано с базой данных. После сортировки разрешений базы данных вам все равно придется подключаться, а "named pipe" и "localhost" будут ошибочными в непонятных, путаных целях. MySQL очень прощает, но вы сделаете некоторые ошибки здесь.

  • Попробуйте каждое альтернативное соединение, знайте, как они работают. Не выбирайте один, потому что он похож на Windows, или "проще". Собственно выполняйте каждый. Важным также является то, как вы передаете имена пользователей и пароли из веб-приложения на сервер базы данных. Apache работает как "никто" - и вы не хотите предоставлять им доступ по умолчанию к чему-либо. Ваше приложение должно сделать намеренное подключение к базе данных без использования настроек по умолчанию.

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

  • Прочитайте LOT о конфигурации Apache. На сайте httpd.apache.org содержится много информации. Стремитесь к простоте. Скопируйте существующие примеры и используйте их. Не составляйте требования или желаемые реализации на основе опыта IIS или рабочего стола Windows. Скопируйте что-то, что работает.

Из оставшихся проблем 80% будет использоваться файловой системой. Если вы попытаетесь открыть, прочитать или записать локальные файлы, вы обнаружите, что (а) права не указаны в каталоге, который вы пытаетесь использовать [см. Выше], и (b) пути к файлам Unix отличаются. Не так уж и много, но достаточно разные, что-то сломается неясным образом.

  • Каждая книга программирования в книге Unix/Linux охватывает это. Он не сильно отличается от Windows, достаточно разного, чтобы вы в первый раз вытащили вас. Напишите "hello world" -подобные PHP-страницы, чтобы выпустить простейшую возможную версию загрузок или загрузок, чтобы убедиться, что у вас есть все части и части на месте. Затем исправьте полное приложение, чтобы сделать это правильно.

Из оставшихся проблем 80% будет создаваться подпроцессом. Windows делает это по-другому. Одна из самых важных вещей в Unix - это помнить, что ваш подпроцесс - ваш ребенок, и вы действительно должны дождаться его завершения, чтобы ОС могла очистить. Если вы думаете о подпроцессе как о параллельной игре "огонь и забыть", у вас будут процессы зомби и вы будете вынуждены периодически выполнять перезагрузки.

  • Напишите очень простые PHP-страницы для управления подпроцессом. Золотое правило - управлять своими детьми и убирать после них. Затем исправьте полное приложение, чтобы сделать это правильно.

Остальные проблемы будут тривиальной логикой приложения, но из-за различий в платформе вы обвиняете Unix перед тем, как вы отследите ошибку в приложении PHP.

Ответ 2

Сверху моей головы вам нужно:

  • Узнайте свой путь вокруг файловой системы.
  • Узнайте, как запустить/остановить процессы (службы), которые вы используете.
  • Найдите или изучите базовый текстовый редактор (vim, joe, pico)
  • Научитесь проверять процессы, чтобы убедиться, что все работает (ps, top)
  • Если вы поддерживаете сервер, вам нужно будет узнать, как устанавливать пакеты.

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

Ответ 3

Я делал PHP/MySQL на windows и mac в течение нескольких лет, когда меня попросили перенести довольно сложный сайт интрасети с IIS/Windows на Apache/Linux. У меня был нулевой опыт работы с Linux и пустой сервер без каких-либо ОС. Примерно через два дня я и еще один администратор Windows, почти без Linux, имели копию CentOS и запускали PHP/MySQL/Apache, а также интрасеть.

Уроки, которые я узнал: "yum" - ваш лучший друг при установке ваших сервисов, "sudo" - ваш лучший друг при настройке ваших сервисов (разрешения могут быть суматохой), и почти каждая другая проблема была результатом случай- чувствительность или слэш-обратная косая черта. Оказывается, мы немного поработали с безопасностью по FTP-доступу, но это было за брандмауэром (dmz), поэтому никаких повреждений не было, прежде чем они провели реальный аудит безопасности и ужесточили его.

Окончательный ответ: если вы готовы свернуть рукава и получить грязную систему командной строки, чтобы получить базовый веб-сайт и запустить его на Linux-боксе, это не огромная задача, пока вы не доберетесь до безопасности, которой лучше (ИМО) кто-то, кто является экспертом в этой области.

Ответ 4

На основе вашего введения вы можете рассмотреть вариант WAMP (Windows Apache MySQL Python/Perl/PHP).

Обучение Linux не сложно, но это, конечно, тоже непростая задача. Есть много задач sysadmin, которые переносят платформу на платформу, но реальный ответ на ваш вопрос - это как минимум администратор Linux-хобби, а затем оттуда.

Ответ 5

Я бы изучил vi и bash. vi является легким и имеет тенденцию устанавливаться повсюду. Это может быть большой болью, пока вы не привыкнете к ней, но если вы хотите знать linux, она, как правило, всегда доступна, и вам понадобится текстовый редактор. Я также узнал bash, потому что он обычно является оболочкой по умолчанию.

Предложения

vfilby хороши.

Определенно изучите диспетчер пакетов в зависимости от выбранного вами Linux. Я бы потратил некоторое время на Apache, потому что это немного монстр, потому что у него много настроек.

Я стараюсь, чтобы моя тестовая версия linux отсутствовала в общедоступном Интернете, потому что я знаю, что я недостаточно эффективен, чтобы сохранить ее в безопасности. По крайней мере, поставил его за брандмауэр. Очень легко найти скрипты iptables, чтобы заблокировать все входящие, поэтому вы можете проверить iptables на наличие хороших манипуляций с файерволом/адресом/портом.

Удачи!

Ответ 6

Сначала вы должны решить, будете ли вы управлять системой с помощью инструментов GUI (gnome или KDE) или если вы будете получать доступ в основном из SSH с помощью командной строки. (Обычно это решение основано на том, где находится сервер). Изучение немного GUI и CLI идет долгий путь. CLI супер мощный, гораздо больше, чем Command Prompt в Windows (я знаю о PowerShell...)

С точки зрения графического интерфейса, я обычно использую терминал (CLI), с точки зрения Debian/Ubuntu:

  • Процессы запуска/остановки: sudo /etc/init.d/apache stop или sudo /etc/init.d/apache start
  • Текстовые редакторы: gedit (GUI - gnome), kate (GUI - KDE), vim (CLI) или nano (CLI)
  • Выполняется процесс: ps -aux
  • Завершить процесс sudo kill -s TERM <process_id>
  • Добавить пакет: sudo apt-get install php5-cli
  • Обновление/исправление системы: sudo apt-get update && sudo apt-get upgrade

Здесь есть много информации и множество вариантов на выбор. Я бы порекомендовал пойти с дистрибутивом Linux, в котором есть дружественное сообщество (например, Ubuntu, CentOS (дебрендинг/бесплатный RHEL) или RHEL (вы платите им, чтобы помочь вам).

Определенно вам будет очень полезно играть с раздачей за выходные на виртуальной машине или запасной машине дома/на работе. Сообщество Linux ОГРОМНОЕ, и вы найдете отличную поддержку, если вы его ищете.

Ответ 7

Сверху моей головы вам нужно:

  • Узнайте, как читать страницы руководства/использовать справочную систему.
  • Научитесь перемещаться по файловой системе.
  • Узнайте, как запустить/остановить процессы (службы), которые вы используете.
  • Узнайте, где находится ваш сервер, и как закрепить файлы журнала.
  • Научитесь проверять процессы, чтобы убедиться, что все работает (ps, top).
  • Найдите или изучите базовый текстовый редактор (vim, joe, pico)
  • Если вы поддерживаете сервер, вам нужно будет узнать, как устанавливать пакеты.

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

Ответ 8

Вы должны

  • Изучите оболочку bash (особенно $PATH, history)
  • Основные коммандос (cd, ls, rm, tail, kill, ps, top)
  • Знание о /proc и его основных целях
  • Изучите редактор (vi всегда установлен. Если вы хотите, вы также можете узнать emacs)
  • Основная замена sed (sed s,orig,repl,g), немного awk
  • Как работать с iptables, netstat и traceroute
  • Как получить информацию (man, info и --help)
  • Как установить пакет (pacman -S <name> для archlinux, apt-get install <name> для debian based), удалить и обновить вашу систему.
  • Зная, как запускать/останавливать службы в вашем дистрибутиве (/etc/init.d, /etc/rc.d)
  • Как обычно работает файловая система unix (inodes, что такое quota?). Понимание, например, /etc/fstab. Зная о df.
  • Понимание управления пользователями и группами (useradd, groupadd). Зная формат /etc/passwd и /etc/group
  • Где вы ищете файлы журнала для apache и демона syslog.
  • Зная о некоторых низкоуровневых материалах, таких как dmesg и hdparm

Ответ 9

В основном вы должны знать, как использовать Linux (как в повседневном использовании). Затем вы также должны знать, как обращаться с командами.

Наконец, вы должны изучить материал, специфичный для LAMP. Вы должны знать и применять некоторые основные (или не так-основные) рекомендации по безопасности.

Ответ 10

Честно говоря, очень мало, если сайты, на которых вы собираетесь работать, либо очень маленькие, либо очень большие. Очень маленький означает общий хостинг, и вам не нужно потеть, очень большой означает, что у вас, вероятно, будет системный администратор, чтобы справиться с этим.

Ответ 11

  • Закладка или загрузка руководство GNU coreutils и регулярно читайте его

  • Изучите vim. Хорошее начало vimtutor на оболочке.

  • Узнайте, как использовать механизмы безопасности, не просто отключите их. Windows имеет слабую защиту, потому что доступные приложения для нее ожидают этого (и нарушат иначе). В среде, подобной Unix, приложения всегда были вынуждены вести себя, и по умолчанию безопасность может быть жесткой.

Ответ 12

Запустите старую коробку на Craigslist и установите на нее Gentoo Linux. Это... опыт... должен дать вам много сил для Linux и как он думает.

Кроме того, в случае vi vs. emacs я управляю emacs. (Хотя вы захотите начать с pico/nano, потому что нет смысла изучать полнофункциональный редактор, изучая новую ОС).