作为Windows开发人员,我目前正在使用LAMP开发自己的项目。我了解PHP和MySQL所需知的内容,但Linux看起来很庞大,不清楚从何入手以及在实现我的目标方面需要掌握多少知识。
我的目标是掌握一般概念,能够将项目部署到托管提供商,并能够监测网站的性能以便发现问题、负载问题等。
我知道,最好的解决方案是找一个Linux管理员来做这件事,但在我能够那样做之前,我需要首先自己做。
作为Windows开发人员,我目前正在使用LAMP开发自己的项目。我了解PHP和MySQL所需知的内容,但Linux看起来很庞大,不清楚从何入手以及在实现我的目标方面需要掌握多少知识。
我的目标是掌握一般概念,能够将项目部署到托管提供商,并能够监测网站的性能以便发现问题、负载问题等。
我知道,最好的解决方案是找一个Linux管理员来做这件事,但在我能够那样做之前,我需要首先自己做。
80%的问题是权限问题。Windows和Unix的权限系统不同,如果你以root或类似的特权登录,则可以绕过权限;但Apache不能也不会这样。
在剩下的问题中,80%与路径相关。PHP的路径问题不像Java和Python那么大,但它们都使用PATH设置来查找组件和库。你经常会弄错这些。Windows有一个PATH,但它还有一个注册表,使事情变得非常容易或者超级隐密。Unix没有秘密可言。
mod_php
提供运行时环境设置的命令。编写短的echo $PATH
shell脚本以显示正在发生的情况。在剩下的问题中,80%与数据库相关。在解决数据库权限之后,您仍然需要连接,而“命名管道”与“本地主机”等内容将以晦涩难懂的方式出错。MySQL非常宽容,但是您在这里会犯一些错误。
在剩下的问题中,80%与Apache配置相关。Apache确实很简单,但有数百万个选项。有四种方法来完成所有事情,而你总会尝试两种完全不起作用的方法,并接受第三种方法,即使它很困难。第四种方法(更简单)永远不会想到你。
剩下的问题中,80%涉及应用程序对文件系统的使用。如果你尝试打开、读取或写入本地文件,会发现(a)你想要使用的目录权限不正确[参见上文],以及(b)Unix文件路径不同,不是完全不同,但足够不同,以致于某些事情将以晦涩难懂的方式出现故障。
剩下的问题中,80%涉及子进程创建。Windows的处理方式与Unix不同。Unix中最重要的一点是要记住你的子进程是你的孩子,你必须等待它完成,以便操作系统可以清理它。如果你认为子进程就是一个并行的“fire-and-forget”东西,你将会遇到僵尸进程,并被迫定期重新启动。
剩下的问题都是微不足道的应用逻辑问题,但由于平台差异,你可能会把Unix归咎于PHP应用程序中的错误。
根据你的介绍,你可能会考虑使用WAMP选项(Windows Apache MySQL Python、Perl和PHP)。
学习Linux并不难,但也不是一个短期任务。有许多系统管理任务跨平台运行,但真正回答你的问题是成为至少业余Linux管理员,然后再从那里开始。
我会学习vi和Bash。 vi是轻量级的,通常被安装在任何地方。在你习惯它之前,它可能会很麻烦,但如果你想了解Linux,它几乎总是可用的,而且你需要一个文本编辑器。我也会学习Bash,因为它往往是默认的shell。
vfilby的建议很好。
无论你选择哪个Linux,一定要学习其软件包管理器。我会花些时间学习Apache,因为它有很多配置选项,有点像一个怪物。
我试图让我的Linux测试环境不连接公共互联网,因为我知道我不是一个足够好的系统管理员来保证它的安全性。至少要把它放在防火墙后面。很容易找到iptables脚本来阻止所有进入的流量,所以你可能想查看iptables以获取一些良好的防火墙/地址/端口操作。
祝你好运!
首先,您应该决定是使用 GUI 工具(GNOME 或 KDE)管理系统,还是主要通过 SSH 使用命令行访问。(通常这是基于服务器位置的决策)。学习一些 GUI 和 CLI 的知识可以帮助您更好地管理系统。CLI 非常强大,比 Windows 上的命令提示符强大得多(我知道 PowerShell...)
从 GUI 的角度来看,我通常会运行终端(CLI),从 Debian/Ubuntu 的角度来看:
sudo /etc/init.d/apache stop
或 sudo /etc/init.d/apache start
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(去商标/免费Red Hat Linux(RHEL))或RHEL(您可以付款以获取帮助)。
在家或者工作中的虚拟机或闲置计算机上玩转发行版,肯定会给你带来很多价值。Linux社区是非常庞大的,如果你想找到卓越的支持,一定可以找到。
你应该
$PATH
和history
)cd
,ls
,rm
,tail
,kill
,ps
和top
)/proc
及其主要用途sed s,orig,repl,g
),以及一点AWKiptables
,netstat
和traceroute
工作man
,info
和--help
)pacman -S <name>
,Debian-based的apt-get install <name>
),删除和更新您的系统。/etc/init.d
,/etc/rc.d
)quota
?)。例如,了解/etc/fstab
。了解df
。useradd
和groupadd
)。了解/etc/passwd
和/etc/group
的格式syslog
守护进程的日志文件位置。dmesg
和hdparm
大多数情况下,您应该知道如何使用Linux(日常使用)。然后,您还应该知道如何处理命令行。
最后,您必须学习LAMP-特定的内容。您应该了解并应用一些基本(或不那么基本)的安全准则。
收藏或下载GNU coreutils手册并定期阅读
学习Vim。一个好的开始是在shell中使用vimtutor
学习如何使用安全机制,不要仅仅禁用它们。Windows的安全性较差,因为可用的应用程序期望它这样(否则会出现问题)。在类Unix环境中,应用程序一直被强制遵守规则,并且默认情况下可以实现严格的安全性。