Pergunta

Sendo um desenvolvedor do Windows Atualmente estou trabalhando em meu próprio projeto usando LAMP. Eu entendo o que eu preciso saber de PHP e MySQL, mas Linux parece enorme e não está claro por onde começar eo que é suficiente dadas as minhas metas.
E meus objetivos são compreender conceitos gerais, sendo capaz de implantar o projeto para um provedor de hospedagem e de ser capaz de monitorar o desempenho do site, a fim de detectar problemas, problemas de carga, etc.
Eu sei, a melhor solução é obter um administrador Linux para fazer isso, mas antes que eu possa fazer o que eu preciso fazer isso sozinho.

Diga-me como!

Seria ótimo se as pessoas expandir suas respostas sobre o para aprender com como para aprender (eu deveria comprar um livro particular, ou há um bom tutorial on-line ou ...?).

Foi útil?

Solução

80% dos seus problemas serão permissões. Windows faz-los de forma diferente; Se você se logar como root (ou com raiz-like privs) você pode ignorar as permissões. Apache não pode e não vai.

  • Saiba como configurar corretamente a propriedade de arquivos e diretórios. Qualquer livro Unix cobrirá este:. Certifique-se de realmente entendê-lo - não é de segurança do Windows escritas de forma diferente - é um modelo diferente para a segurança

Entre os problemas remanescentes, 80% serão questões PATH. PHP não têm como tema a PATH grande como Java e Python, mas todos eles usam uma configuração de PATH para encontrar componentes e bibliotecas. Você vai ter aqueles errado regularmente. O Windows tem um caminho, mas também tem um registro, fazendo coisas também super fácil ou super secreto. Unix mantém há segredos.

  • Saiba o que as variáveis ??de ambiente PHP e MySQL uso. Tenha certeza que você sabe onde e como eles se definir. Apache é executado em que é próprio ambiente peculiar, e tem comandos para fornecer configurações de ambiente de tempo de execução via mod_php. Escrever scripts shell echo $PATH curtas para revelar o que está acontecendo.

Entre os problemas remanescentes, 80% será de banco de dados relacionados. Após a triagem para fora permissões de banco de dados, você ainda vai ter que se conectar, eo "pipe nomeado" vs. coisas "localhost" será errado em obscuros, confundindo maneiras. MySQL é muito indulgente, mas você vai cometer alguns erros aqui.

  • Tente cada conexão alternativa, saber como eles funcionam. Não escolher um, porque isso é o Windows-like, ou "mais simples". Na verdade exercer cada um. Como você passar nomes de usuários e senhas de aplicativo web para o servidor de banco de dados é importante, também. Apache é executado como "ninguém" - e você não quer dar-lhes acesso padrão a qualquer coisa. Seu aplicativo deve fazer uma conexão intencional para o banco de dados sem o uso de padrões.

Entre os problemas remanescentes, 80% será configurações Apache. Apache é muito simples, mas tem um milhão de opções. Há quatro maneiras de fazer tudo, e você sempre tente dois que não funcionam em tudo, e se contentar com o terceiro, que será icky. O quarto, que é muito mais simples, nunca vai acontecer com você.

  • li muito sobre configuração do Apache. A httpd.apache.org site tem muita informação. Mantenha a simplicidade. Copiar exemplos existentes e usá-los. Não faça-se requisitos ou implementações desejados com base na experiência IIS ou experiência de desktop do Windows. Cópia algo que funciona.

Entre os problemas remanescentes, 80% será o uso aplicação do sistema de arquivos. Se você tentar abrir, ler ou escrever arquivos locais, você encontrará que (a) as permissões não estão correctas na pasta que você está tentando usar [veja acima] e (b) os caminhos de arquivo Unix são diferentes. Não é um diferente muito, mas diferente o suficiente de que algo vai quebrar de uma forma obscura.

  • Cada livro de programação no livro Unix / Linux cobre este. Não é uma diferente muito a partir do Windows, apenas o suficiente diferente para te enganar pela primeira vez. Write "Olá mundo", como páginas PHP para cravar o mais simples possível versão de uploads ou downloads só para ter certeza que você tem todas as peças e peças no lugar. Em seguida, fixar seu aplicativo completo para fazê-lo corretamente.

Entre os problemas remanescentes, 80% será criação subprocesso. Windows faz isso de forma diferente. Uma das coisas mais importantes em Unix é lembrar que seu subprocesso é seu filho e você deve realmente esperar que ela termine de modo que o sistema operacional pode limpar. Se você pensar em um subprocesso como um paralelo "fogo-e-esqueça" coisa, você terá processos zombie e ser forçado a fazer reboots periódicos.

  • páginas PHP Write muito simples a espiga gestão subprocesso. A regra de ouro é o de gerir os seus filhos e limpar após eles. Em seguida, fixar seu aplicativo completo para fazê-lo corretamente.

Os problemas restantes serão lógica da aplicação trivial, mas por causa do diff plataformarências, você vai culpar Unix antes de rastrear o erro na aplicação PHP.

Outras dicas

Em cima da minha cabeça que você vai precisar:

  1. Aprenda a trabalhar com o sistema de arquivos.
  2. Saiba como iniciar / parar os processos (serviços) que você está usando.
  3. Localizar ou aprender um editor de texto básico (vim, joe, pico)
  4. Aprenda a verificar a existência de processos para ver se as coisas estão funcionando (ps, top)
  5. Se você está mantendo o servidor, você precisa aprender a instalar os pacotes.

Estes são apenas o básico, o próximo passo é perceber quando você tem um problema e saber onde você pode ir para encontrar mais informações sobre ele. Mesmo com tudo isso é apenas arranhando a superfície e muitas coisas podem não fazer sentido, é um bom começo embora.

eu vinha fazendo PHP / MySQL em Windows e Mac por alguns anos, quando me pediram para a porta de um site intranet bastante complexo a partir do IIS / Windows para o Apache / Linux. Eu tinha zero experiência com Linux e servidor em branco sem qualquer OS. Em cerca de dois dias eu e outro administrador janelas com quase nenhuma experiência com o Linux tinha uma cópia do CentOS instalado e funcionando PHP / MySQL / Apache, bem como a intranet.

As lições que aprendi: "yum" é seu melhor amigo ao instalar seus serviços, "sudo" é seu melhor amigo ao configurar seus serviços (permissões podem ser um aborrecimento), e quase todos os outros problemas foi o resultado de caso- questões de sensibilidade ou barra-barra invertida. Acontece que fizemos falha crítica a segurança um pouco sobre o acesso FTP, mas esta foi atrás de um firewall (DMZ) então não havia nenhum dano feito antes que eles tivessem uma auditoria de segurança real e apertou-o.

resposta final: se você estiver disposto a arregaçar as mangas e começar a sua linha de comando sujo recebendo um site básico instalado e funcionando em uma caixa de Linux não é uma tarefa enorme até chegar à segurança que (IMO) é melhor deixar para alguém que é um especialista na área.

Você pode considerar, com base na sua introdução, uma opção WAMP (Windows, Apache, MySQL Python / Perl / PHP).

Aprendizagem Linux não é duro , mas certamente não é uma tarefa pequena, qualquer um. Não é um monte de tarefas sysadmin que transitar plataforma-a-plataforma, mas a verdadeira resposta à sua pergunta é para ser vir pelo menos um hobby Linux admin, e depois de lá ir.

eu iria aprender vi e bash. vi é leve e tende a ser instalado em todos os lugares. Pode ser uma grande dor até que você se acostumar com isso, mas se você quiser saber linux ele tende a ser praticamente sempre disponível, e você precisa de um editor de texto muito. Eu também aprender bash, porque tende a ser o shell padrão.

As sugestões de vfilby são boas.

Definitivamente aprender o gerenciador de pacotes para qualquer Linux que você escolher. Gostaria de passar algum tempo com Apache, porque é um pouco de um monstro apenas porque tem um monte de opções de configuração.

Eu tento manter o meu linux testbed fora da internet pública, porque eu sei que não sou um bom sysadmin o suficiente para mantê-la segura. Pelo menos colocá-lo atrás de um firewall. É muito fácil encontrar iptables scripts para bloquear tudo entrando, de modo que você pode querer verificar para fora iptables por algum bom firewall / endereço / manipulação da porta.

Boa sorte!

Em primeiro lugar você deve decidir se você vai ser gerir o sistema usando ferramentas GUI (GNOME ou KDE) ou se você vai estar acessando principalmente a partir de SSH usando uma linha de comando. (Isso geralmente é uma decisão com base em onde o servidor está localizado). Aprender um pouco de ambos GUI e CLI vai um longo caminho. CLI é super poderosa, muito mais do que o Command Prompt no Windows (eu sei sobre PowerShell ...)

Do ponto de vista GUI, eu normalmente têm o terminal (CLI) em execução de qualquer maneira, de uma perspectiva Debian / Ubuntu:

  1. Start / Stop processos: sudo /etc/init.d/apache stop ou sudo /etc/init.d/apache start
  2. Editores de texto: gedit (GUI - gnome), kate (GUI - KDE), vim (CLI) ou nano (CLI)
  3. processos em execução: ps -aux
  4. Terminar sudo kill -s TERM <process_id> processo
  5. Adicionar um pacote: sudo apt-get install php5-cli
  6. Atualização / correções em um sistema: sudo apt-get update && sudo apt-get upgrade

Há uma série de informações aqui e uma grande variedade de opções para escolher. Eu recomendaria ir com uma distro Linux que tem uma comunidade amigável (ou seja, Ubuntu, CentOS (debranded / livre RHEL), ou RHEL (você pagar-lhes para ajudá-lo).

Não é definitivamente vai ser um monte de valor para você brincar com uma distribuição ao longo de um fim de semana em uma máquina virtual ou máquina de reposição em casa / trabalho. A comunidade Linux é enorme e você vai encontrar um excelente apoio, se você olhar para ele.

Em cima da minha cabeça que você vai precisar:

  1. Saiba como ler páginas de manual / usar o sistema de ajuda.
  2. Aprenda a navegar no sistema de arquivos.
  3. Saiba como iniciar / parar os processos (serviços) que você está usando.
  4. Saiba onde seus logs do servidor para e como cauda os arquivos de log.
  5. Aprenda a verificar a existência de processos para ver se as coisas estão funcionando (ps, top).
  6. Localizar ou aprender um editor de texto básico (vim, joe, pico)
  7. Se você está mantendo o servidor, você precisa aprender a instalar os pacotes.

Estes são apenas o básico, o próximo passo é perceber quando você tem um problema e saber onde você pode ir para encontrar mais informações sobre ele. Mesmo com tudo isso é apenas arranhando a superfície e muitas coisas podem não fazer sentido, é um bom começo embora.

Você deve

  • Saiba o shell bash (especialmente $PATH, history)
  • comandos básicos (cd, ls, rm, tail, kill, ps, top)
  • Saber sobre /proc e seus principais usos
  • Saiba um editor (vi é sempre instalado. Se você quiser, pode aprender emacs também)
  • Basic sed substituição (sed s,orig,repl,g), um pouco awk
  • Como trabalhar com iptables, netstat e traceroute
  • Como obter informações (man, info e --help)
  • Como instalar um pacote (pacman -S <name> para archlinux, apt-get install <name> para debian based), remover e atualizar seu sistema.
  • Saber como iniciar / parar os serviços em sua distribuição (/etc/init.d, /etc/rc.d)
  • Como, em geral, uma obra-sistema de arquivos UNIX (inodes, o que é quota?). Compreender por exemplo /etc/fstab. Saber sobre df.
  • A compreensão de como gerenciar usuários e grupos (useradd, groupadd). Sabendo o formato de /etc/passwd e /etc/group
  • Onde você olhar para log-arquivos para apache eo daemon syslog.
  • saber sobre algumas coisas de baixo nível como dmesg e hdparm

Na maior parte, você deve saber como usar o Linux (como no uso diário). Então, você também deve saber como lidar com linhas de comando.

Finalmente, você deve aprender coisas LAMP-specific. Você deve conhecer e aplicar algumas orientações básicas (ou não tão básicas) de segurança.

Francamente, muito pouco se os sites que você vai estar trabalhando em são ou muito pequeno ou muito grande. pequenos meios muito hospedagem compartilhada e você não precisa suar, muito grandes meios você provavelmente vai ter um administrador de sistemas a bordo para lidar com isso.

  • Bookmark ou baixar o Manual GNU coreutils e lê-lo regularmente

  • Saiba vim. Um bom começo é vimtutor na casca.

  • Saiba como usar os mecanismos de segurança, não apenas desativá-los. Windows tem segurança frouxa porque os aplicativos disponíveis para ele esperar que desta forma (e iria quebrar o contrário). Em um Unix-like ambiente, aplicações sempre foram forçados a se comportar e de segurança pode ser apertado por padrão.

furtar-se uma caixa velha no Craigslist e instalar o Gentoo Linux nele. Isso ... experiência ... deve dar-lhe um monte de sensação para Linux e como ele pensa.

Além disso, no caso vi vs Emacs , eu governar Emacs . (Embora você vai querer começar com pico / nano, porque não há nenhum sentido em aprender um editor full-featured enquanto aprende um novo sistema operacional).

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top