LAMP를 사용하여 웹 사이트를 배포하기 위해 얼마나 많은 Linux를 배워야합니까?

StackOverflow https://stackoverflow.com/questions/295861

문제

Windows 개발자 인 저는 현재 LAMP를 사용하여 내 프로젝트를 진행하고 있습니다. PHP와 MySQL에 대해 알아야 할 사항을 이해하지만 Linux는 거대 해 보이며 어디서부터 시작 해야하는지, 내 목표를 감안할 때 충분한 점이 명확하지 않습니다.
그리고 저의 목표는 일반 개념을 파악하고 프로젝트를 호스팅 제공 업체에 배치하고 문제,로드 문제 등을 발견하기 위해 사이트의 성능을 모니터링 할 수있는 것입니다.
가장 좋은 해결책은 Linux 관리자가 그렇게하도록하는 것이지만, 할 수 있기 전에 직접해야합니다.

어떻게하는지 알려줘!

사람들이 답을 확장하면 좋을 것입니다. 무엇 함께 배우려면 어떻게 배우기 위해 (특정 책을 사야합니까, 아니면 좋은 온라인 튜토리얼이 있습니까?).

도움이 되었습니까?

해결책

문제의 80%가 허가가됩니다. Windows는 다르게 수행합니다. 루트 (또는 루트와 같은 PRIB)로 로그인 한 경우 권한을 우회 할 수 있습니다. 아파치는 할 수없고 할 수 없습니다.

  • 파일 및 디렉토리의 소유권을 올바르게 설정하는 방법을 배우십시오. 모든 UNIX 책은 다음을 다루게됩니다. 실제로 이해해야합니다. Windows 보안이 다르게 철자가 아닙니다. 보안을위한 다른 모델입니다.

나머지 문제 중 80%가 경로 문제가됩니다. PHP는 Java 및 Python만큼 큰 경로 문제가 없지만 모두 경로 설정을 사용하여 구성 요소와 라이브러리를 찾습니다. 당신은 정기적으로 잘못을 얻을 것입니다. Windows에는 경로가 있지만 레지스트리도있어 매우 쉽거나 매우 비밀입니다. 유닉스는 비밀을 유지하지 않습니다.

  • PHP 및 MySQL이 사용하는 환경 변수를 알아보십시오. 그들이 어디서 어떻게 설정되는지 알고 있어야합니다. Apache는 고유 한 독특한 환경에서 실행되며 런타임 환경 설정을 통해 런타임 환경 설정을 제공하는 명령이 있습니다. mod_php. 짧게 쓰십시오 echo $PATH 쉘 스크립트는 무슨 일이 일어나고 있는지 공개합니다.

나머지 문제 중 80%는 데이터베이스 관련이됩니다. 데이터베이스 권한을 정렬 한 후에도 여전히 연결되어야하며 "명명 된 파이프"대 "로컬 호스트"는 모호하고 혼란스러운 방식으로 잘못됩니다. MySQL은 매우 용서하지만 여기서 실수를 할 것입니다.

  • 각 대체 연결을 시도하고 어떻게 작동하는지 알고 있습니다. 창과 같은 "단순"이기 때문에 하나를 선택하지 마십시오. 실제로 각자 운동하십시오. 웹 앱에서 데이터베이스 서버로 사용자 이름과 암호를 전달하는 방법도 중요합니다. Apache는 "Nobody"로 실행됩니다. 그리고 당신은 그들에게 기본 액세스 권한을 부여하고 싶지 않습니다. 앱은 기본값을 사용하지 않고도 데이터베이스에 의도적으로 연결해야합니다.

나머지 문제 중 80%는 Apache 구성입니다. 아파치는 정말 간단하지만 백만 옵션이 있습니다. 모든 일을하는 4 가지 방법이 있으며, 항상 전혀 작동하지 않는 두 가지를 시도하고 세 번째로 정착 할 것입니다. 훨씬 간단한 네 번째는 결코 당신에게 일어나지 않을 것입니다.

  • Apache 구성에 대해 많이 읽으십시오. 그만큼 httpd.apache.org 사이트에는 많은 정보가 있습니다. 단순성을 위해 노력하십시오. 기존 예제를 복사하여 사용하십시오. IIS 경험 또는 Windows 데스크탑 경험을 기반으로 요구 사항이나 원하는 구현을 구성하지 마십시오. 작동하는 것을 복사하십시오.

나머지 문제 중 80%는 파일 시스템의 응용 프로그램 사용입니다. 로컬 파일을 열거나 읽거나 쓰려는 경우 (a) [위 참조]를 사용하려는 디렉토리에서 권한이 정확하지 않으며 (b) Unix 파일 경로가 다릅니다. 많이 다르지 않지만 무언가가 모호한 방식으로 깨질 정도로 충분히 다릅니다.

  • UNIX/Linux 책의 모든 프로그래밍 책이이를 다룹니다. 그것은 창과 크게 다르지 않으며 처음으로 당신을 여행하기에 충분히 다릅니다. "Hello World"와 같은 PHP 페이지를 작성하여 모든 조각과 부품이 제자리에 있는지 확인하기 위해 가장 간단한 버전의 업로드 또는 다운로드를 스파이크하십시오. 그런 다음 전체 앱을 수정하여 올바르게 수행하십시오.

나머지 문제 중 80%는 하위 프로세스 생성이 될 것입니다. Windows는 이것을 다르게 수행합니다. UNIX에서 가장 중요한 것 중 하나는 하위 프로세스가 자녀이며 실제로 OS가 정리할 수 있도록 완료되기를 기다려야한다는 것을 기억하는 것입니다. 하위 프로세스를 병렬 "화재 및 포 게트"로 생각하면 좀비 프로세스가 있고 정기적 인 재부팅을 강요받습니다.

  • 하위 프로세스 관리를 스파이크하기 위해 매우 간단한 PHP 페이지를 작성하십시오. 황금률은 자녀를 관리하고 청소하는 것입니다. 그런 다음 전체 앱을 수정하여 올바르게 수행하십시오.

나머지 문제는 사소한 응용 프로그램 논리이지만 플랫폼 차이로 인해 PHP 응용 프로그램의 버그를 추적하기 전에 UNIX를 비난합니다.

  • 당신을 얻으십시오 단위 테스트 그리고 당신의 벌채 반출 효과적으로 디버깅 할 수 있도록 제곱을 제곱합니다.

다른 팁

내 머리 꼭대기에서 : 당신은 다음을 필요로합니다.

  1. 파일 시스템을 중심으로하는 방법을 배우십시오.
  2. 사용중인 프로세스 (서비스)를 시작/중지하는 방법을 알아보십시오.
  3. 기본 텍스트 편집기 찾거나 배우십시오 (Vim, Joe, Pico)
  4. 작업이 실행 중인지 확인하기 위해 프로세스를 확인하는 법을 배우십시오 (PS, 상단)
  5. 서버를 유지 관리하는 경우 패키지를 설치하는 방법을 배워야합니다.

이것들은 단지 기본 사항입니다. 다음 단계는 문제가있을 때를 깨닫고 더 많은 정보를 찾을 수있는 곳을 아는 것입니다. 이 모든 것이라도 표면을 긁는 것만으로도 많은 것들이 말이되지 않을 수 있습니다.하지만 좋은 출발입니다.

IIS/Windows에서 Apache/Linux로 상당히 복잡한 인트라넷 사이트를 포트하라는 요청을 받았을 때 Windows 및 Mac에서 PHP/MySQL을 몇 년 동안 수행했습니다. 나는 OS가없는 Linux 및 Blank Server에 대한 경험이 전혀 없었습니다. 약 2 일 만에 Linux 경험이 거의없는 다른 Windows Admin은 Centos의 사본을 UP/MySQL/Apache 및 인트라넷을 실행했습니다.

내가 배운 교훈 : "Yum"은 서비스를 설치할 때 가장 친한 친구입니다. "Sudo"는 서비스를 구성 할 때 가장 친한 친구입니다 (권한은 번거 로움이 될 수 있음). -Backslash 문제. 우리는 FTP 액세스에서 보안을 약간 보였지만 이것은 방화벽 (DMZ) 뒤에 있었기 때문에 실제 보안 감사를 받기 전에 손상이 없었습니다.

최종 답변 : 소매를 롤업하고 기본 웹 사이트를 올리거나 Linux 상자에서 실행하는 명령 라인을 기꺼이 받으려면 보안에 도달 할 때까지 (IMO)가있는 사람에게 더 나은 것이 더 나은 일이 아닙니다. 그 분야의 전문가.

소개를 기반으로 WAMP 옵션 (Windows Apache MySQL Python/Perl/PHP)을 고려할 수 있습니다.

Linux를 배우는 것은 아닙니다 딱딱한, 그러나 그것은 확실히 짧은 일이 아닙니다. 플랫폼-플랫폼을 수행하는 많은 Sysadmin 작업이 있지만, 귀하의 질문에 대한 실제 답변은 적어도 애호가 Linux 관리자가되어서 거기에서 가야합니다.

나는 vi와 bash를 배울 것입니다. VI는 가볍고 모든 곳에서 설치되는 경향이 있습니다. 익숙해 질 때까지 큰 고통이 될 수 있지만 Linux를 알고 싶다면 항상 사용할 수있는 경향이 있으며 텍스트 편집기가 많이 필요합니다. 나는 또한 기본 쉘 인 경향이 있기 때문에 배쉬를 배웁니다.

Vfilby의 제안은 좋습니다.

어떤 Linux를 선택하든 패키지 관리자에게 확실히 배우십시오. Apache와 함께 시간을 보내겠습니다. 구성 옵션이 많기 때문에 약간의 괴물이기 때문입니다.

나는 Linux 테스트를 공개 인터넷에서 유지하려고 노력합니다. 적어도 방화벽 뒤에 놓으십시오. 다가오는 모든 것을 차단하기 위해 iptables 스크립트를 찾기가 매우 쉽기 때문에 좋은 방화벽/주소/포트 조작을 위해 iptables를 확인할 수 있습니다.

행운을 빕니다!

먼저 GUI 도구 (GNOME 또는 KDE)를 사용하여 시스템을 관리 할 것인지 또는 명령 줄을 사용하여 SSH에서 주로 액세스 할 것인지 결정해야합니다. (이것은 일반적으로 서버가있는 위치를 기반으로 한 결정입니다). GUI와 CLI를 모두 배우는 것은 먼 길을갑니다. CLI는 Windows의 명령 프롬프트보다 훨씬 강력합니다 (PowerShell에 대해 알고 있습니다 ...)

GUI 관점에서, 나는 일반적으로 Debian/Ubuntu 관점에서 어쨌든 터미널 (CLI)이 실행됩니다.

  1. 프로세스 시작/중지 : sudo /etc/init.d/apache stop 또는 sudo /etc/init.d/apache start
  2. 텍스트 편집기 : gedit (GUI -GNOME), kate (GUI -KDE), vim (CLI) 또는 nano (CLI)
  3. 실행되는 프로세스 : ps -aux
  4. 프로세스 종료 sudo kill -s TERM <process_id>
  5. 패키지 추가 : sudo apt-get install php5-cli
  6. 업그레이드/패치 A 시스템 : sudo apt-get update && sudo apt-get upgrade

여기에는 많은 정보가 있으며 선택할 수있는 다양한 옵션이 있습니다. 친절한 커뮤니티 (예 : Ubuntu, Centos (브 브랜드/무료 Rhel) 또는 Rhel (당신은 당신을 돕기 위해 지불)이있는 Linux 배포판을 사용하는 것이 좋습니다.

주말 동안 가상 기계 나 집/직장에서 예비 기계에서 배포 할 수있는 많은 가치가있을 것입니다. Linux 커뮤니티는 거대하며 찾으면 훌륭한 지원을받을 수 있습니다.

내 머리 꼭대기에서 : 당신은 다음을 필요로합니다.

  1. 수동 페이지를 읽는 방법을 배우거나 도움말 시스템을 사용하십시오.
  2. 파일 시스템을 탐색하는 법을 배우십시오.
  3. 사용중인 프로세스 (서비스)를 시작/중지하는 방법을 알아보십시오.
  4. 서버 로그의 위치와 로그 파일을 꼬리는 방법을 알아보십시오.
  5. 프로세스가 실행 중인지 확인하는 방법을 배우십시오 (PS, 상단).
  6. 기본 텍스트 편집기 찾거나 배우십시오 (Vim, Joe, Pico)
  7. 서버를 유지 관리하는 경우 패키지를 설치하는 방법을 배워야합니다.

이것들은 단지 기본 사항입니다. 다음 단계는 문제가있을 때를 깨닫고 더 많은 정보를 찾을 수있는 곳을 아는 것입니다. 이 모든 것이라도 표면을 긁는 것만으로도 많은 것들이 말이되지 않을 수 있습니다.하지만 좋은 출발입니다.

당신은해야합니다

  • 배쉬 쉘을 배우십시오 (특히 $PATH, history)
  • 기본 특공대 (cd, ls, rm, tail, kill, ps, top)
  • 아는 것 /proc 그리고 주요 용도
  • 편집자 배우기 (vi 항상 설치됩니다. 원한다면 배울 수 있습니다 emacs 도)
  • 기본 SED 교체 (sed s,orig,repl,g), 조금 어색합니다
  • 함께 일하는 방법 iptables, netstat 그리고 traceroute
  • 정보를 얻는 방법 (man, info 그리고 --help)
  • 패키지 설치 방법 (pacman -S <name> Archlinux의 경우 apt-get install <name> 데비안 기반의 경우), 시스템을 제거하고 업데이트하십시오.
  • 배포에서 서비스를 시작/중지하는 방법을 알고 있습니다 (/etc/init.d, /etc/rc.d)
  • 일반적으로 유닉스 파일 시스템 작동 방식 (inodes, 무엇인가요 quota?). 예를 들어 이해 /etc/fstab. 아는 것 df.
  • 사용자 및 그룹 관리 방법 이해 (useradd, groupadd). 형식을 알고 있습니다 /etc/passwd 그리고 /etc/group
  • 로그 파일을 찾는 곳 apache 그리고 syslog 악마.
  • 낮은 수준의 것들에 대해 알고 있습니다 dmesg 그리고 hdparm

대부분 Linux를 사용하는 방법을 알아야합니다 (매일 사용하는 것처럼). 그런 다음 명령 줄을 다루는 방법도 알아야합니다.

마지막으로 램프 특정 물건을 배워야합니다. 귀하는 기본 (또는 기본이 아닌) 보안 지침을 알고 적용해야합니다.

솔직히 말해서, 작업중인 웹 사이트가 매우 작거나 매우 큰 경우에는 거의 없습니다. 매우 작은 것은 공유 호스팅을 의미하며 땀을 흘릴 필요가 없습니다. 매우 큰 의미는 아마도 그것을 처리하기 위해 Sysadmin이있을 것입니다.

  • 북마크 또는 다운로드 GNU Coreutils 매뉴얼 그리고 정기적으로 읽으십시오

  • 배우다 vim. 좋은 시작은 vimtutor 쉘에.

  • 보안 메커니즘을 사용하는 방법을 배우고 비활성화하지 마십시오. 사용 가능한 응용 프로그램이 이런 식으로 예상되기 때문에 Windows에는 LAX 보안이 있습니다 (다른 방법으로 파손됨). 유닉스와 같은 환경에서는 응용 프로그램이 항상 행동해야하며 기본적으로 보안이 빡빡 할 수 있습니다.

Craigslist의 오래된 상자를 긁어 내고 Gentoo Linux를 설치하십시오. 그 ... 경험 ... Linux에 대한 많은 느낌과 그것이 어떻게 생각하는지를 주어야합니다.

또한, 경우 VI 대 EMAC, 나는 규칙 EMACS. (새 OS를 배우면서 완전한 편집자를 배우는 것은 의미가 없기 때문에 Pico/Nano로 시작하고 싶을 것입니다).

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top