作为一名Windows开发人员,我目前正在使用LAMP开发自己的项目.我理解我需要知道的PHP和MySQL,但是Linux看起来很庞大,并且不清楚从哪里开始,到目前为止什么是足够的.
我的目标是掌握一般概念,能够将项目部署到托管服务提供商,并能够监控网站的性能,以发现问题,加载问题等.
我知道,最好的解决方案是获得Linux管理员这样做,但在我能做到之前,我需要自己做.
80%的问题都是权限.Windows以不同方式做到了; 如果您以root身份登录(或使用root-like privs),则可以绕过权限.Apache不能也不会.
了解如何正确设置文件和目录的所有权.任何Unix书籍都将涵盖这一点:确保真正理解它 - 不是Windows安全性拼写不同 - 它是一种不同的安全模型.
在剩下的问题中,80%将是PATH问题.PHP没有Java和Python那么大的PATH问题,但它们都使用PATH设置来查找组件和库.你经常会弄错.Windows有一个PATH,但它也有一个注册表,使事情变得超级简单或超级秘密.Unix没有任何秘密.
了解PHP和MySQL使用的环境变量.确保您知道它们的设置位置和方式.Apache运行在它自己特有的环境中,并且它具有通过提供运行时环境设置的命令mod_php
.编写简短的echo $PATH
shell脚本来揭示正在发生的事情.
在剩下的问题中,80%将与数据库相关.在整理出数据库权限之后,您仍然需要连接,并且"命名管道"与"本地主机"的内容将以模糊,混乱的方式出错.MySQL非常宽容,但你会在这里犯一些错误.
尝试每个替代连接,了解它们的工作原理.不要选择一个,因为它类似Windows,或"更简单".实际上每个人都锻炼身体.如何将用户名和密码从Web应用程序传递到数据库服务器也很重要.Apache以"nobody"身份运行 - 您不希望他们默认访问任何内容.您的应用应该在不使用默认值的情况下与数据库进行有意连接.
在剩下的问题中,80%将是Apache配置.Apache非常简单,但有一百万个选项.有四种方法可以做任何事情,而你总是会尝试两种根本无法工作的方法,并且会选择第三种方式来icky.第四个,更简单,永远不会发生在你身上.
阅读很多有关Apache配置的内容.该httpd.apache.org网站有大量的信息.力求简单.复制现有示例并使用它们.根据IIS体验或Windows桌面体验,不要构成要求或所需的实现.复制有效的东西.
在剩下的问题中,80%将是文件系统的应用程序使用.如果您尝试打开,读取或写入本地文件,您会发现(a)您尝试使用的目录上的权限不正确[见上文]和(b)Unix文件路径不同.没有太大的不同,但足够不同的东西会以一种模糊的方式打破.
Unix/Linux中的每本编程书都涵盖了这一点.它与Windows没什么不同,只是第一次与你绊倒的不同.编写"hello world"类似的PHP页面,以便最简单地上传或下载,以确保您拥有所有的部分和部分.然后修复完整的应用程序以正确执行.
在剩下的问题中,80%将是子进程创建.Windows以不同的方式执 Unix中最重要的事情之一就是要记住你的子进程是你的孩子,你必须等到它完成所以操作系统可以清理.如果你认为子进程是一个并行的"即发即忘"的东西,你将拥有僵尸进程并被迫定期重新启动.
编写非常简单的PHP页面来加速子进程管理.黄金法则是管理你的孩子并在他们之后进行清理.然后修复完整的应用程序以正确执行.
剩下的问题将是简单的应用程序逻辑,但由于平台差异,你会在追踪PHP应用程序中的错误之前责怪Unix.
获取您的单元测试并将您的日志记录平方,以便您可以有效地进行调试.
在我的头顶,你需要:
了解文件系统的方法.
了解如何启动/停止正在使用的进程(服务).
查找或学习基本文本编辑器(vim,joe,pico)
学习检查进程是否正在运行(ps,top)
如果要维护服务器,则需要了解如何安装软件包.
这些只是基础知识,下一步是在遇到问题时了解并知道在哪里可以找到有关它的更多信息.尽管如此,它只是表面上的痕迹,许多事情可能没有意义,但这是一个良好的开端.