作为一名 Windows 开发人员,我目前正在使用 LAMP 开发自己的项目。我了解我需要了解的有关 PHP 和 MySQL 的知识,但是 Linux 看起来很大,并且不清楚从哪里开始以及考虑到我的目标,什么就足够了。我的目标是掌握一般概念,能够将项目部署到托管服务提供商,并能够监控站点的性能,以便发现问题、加载问题等。
我知道,最好的解决方案是让 Linux 管理员来做这件事,但在我做这件事之前,我需要自己做。
作为一名 Windows 开发人员,我目前正在使用 LAMP 开发自己的项目。我了解我需要了解的有关 PHP 和 MySQL 的知识,但是 Linux 看起来很大,并且不清楚从哪里开始以及考虑到我的目标,什么就足够了。我的目标是掌握一般概念,能够将项目部署到托管服务提供商,并能够监控站点的性能,以便发现问题、加载问题等。
我知道,最好的解决方案是让 Linux 管理员来做这件事,但在我做这件事之前,我需要自己做。
80% 的问题是权限问题。Windows 以不同的方式处理它们;如果您以 root 身份登录(或使用类似 root 的权限),您可以绕过权限。阿帕奇不能也不会。
在剩下的问题中,80% 将是 PATH 问题。PHP 没有 Java 和 Python 那样大的 PATH 问题,但它们都使用 PATH 设置来查找组件和库。你会经常出错。Windows 有一个 PATH,但它也有一个注册表,使事情变得超级简单或超级秘密。Unix 没有任何秘密。
mod_php
. 编写简短echo $PATH
的 shell 脚本来揭示正在发生的事情。在剩下的问题中,80% 与数据库有关。在整理出数据库权限之后,您仍然需要连接,并且“命名管道”与“本地主机”的内容将以晦涩难懂的方式出错。MySQL 非常宽容,但你会在这里犯一些错误。
在剩下的问题中,80% 将是 Apache 配置。Apache 非常简单,但有一百万种选择。有四种方法可以做任何事情,你总是会尝试两种根本不起作用的方法,而选择第三种方法会很糟糕。第四个更简单,你永远不会想到。
在剩下的问题中,80% 将是文件系统的应用程序使用。如果您尝试打开、读取或写入本地文件,您会发现 (a) 您尝试使用的目录的权限不正确 [见上文] 并且 (b) Unix 文件路径不同。没有太大的不同,但有足够的不同,有些东西会以一种模糊的方式打破。
在剩下的问题中,80% 将是子进程创建。Windows 以不同的方式执行此操作。Unix 中最重要的事情之一是记住您的子进程是您的孩子,您必须真正等待它完成,以便操作系统可以清理。如果您将子进程视为并行的“即发即弃”的事情,那么您将拥有僵尸进程并被迫定期重新启动。
剩下的问题将是微不足道的应用程序逻辑,但由于平台差异,在你追查 PHP 应用程序中的错误之前,你会责怪 Unix。
当我被要求将一个相当复杂的 Intranet 站点从IIS /Windows 移植到Apache /Linux时,我已经在 Windows 和 Mac 上做 PHP/MySQL 几年了。我对 Linux 和没有任何操作系统的空白服务器的经验为零。大约两天后,我和另一位几乎没有 Linux 经验的 Windows 管理员安装了CentOS副本并运行 PHP/MySQL/Apache 以及 Intranet。
我学到的经验教训:安装服务时,YUM是你最好的朋友,配置服务时, sudo是你最好的朋友(权限可能很麻烦),几乎所有其他问题都是由区分大小写或斜杠反斜杠问题引起的。
事实证明,我们确实在 FTP 访问上稍微搞砸了安全性,但这是在防火墙 ( DMZ ) 后面,所以在他们进行真正的安全审计并加强安全之前,没有造成任何损害。
最终答案:如果你愿意卷起袖子弄脏你的命令行,那么在 Linux 机器上启动并运行一个基本的网站并不是一项艰巨的任务,直到你获得安全性(IMO)最好留给那些该领域的专家。
根据您的介绍,您可能会考虑使用WAMP选项(Windows Apache MySQL Python、Perl 和 PHP)。
学习 Linux 并不难,但它肯定也不是一项短期任务。有很多系统管理任务在平台之间进行,但您问题的真正答案是至少成为一名爱好者 Linux 管理员,然后从那里开始。
我会学习vi和Bash。vi是轻量级的,并且倾向于安装在任何地方。在您习惯之前可能会很痛苦,但如果您想了解 Linux,它几乎总是可用的,并且您将非常需要一个文本编辑器。我也会学习 Bash,因为它往往是默认的 shell。
vfilby 的建议很好。
绝对要为您选择的任何 Linux 学习包管理器。我会花一些时间在Apache上,因为它有点像怪物,因为它有很多配置选项。
我试图让我的 Linux 测试平台远离公共 Internet,因为我知道我不是一个足够好的系统管理员来保证它的安全。至少把它放在防火墙后面。很容易找到 iptables 脚本来阻止一切进入,因此您可能需要查看 iptables 以获得一些良好的防火墙/地址/端口操作。
祝你好运!
首先,您应该决定是使用 GUI 工具(GNOME或KDE)来管理系统,还是主要使用命令行从 SSH 访问。(这通常是基于服务器所在位置的决定)。学习一点 GUI 和 CLI 会有很长的路要走。CLI 超级强大,比 Windows 上的命令提示符要强大得多(我知道PowerShell ......)
从 GUI 的角度来看,从Debian / Ubuntu的角度来看,我通常会运行终端 (CLI) :
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>
对于Arch Linux,apt-get install <name>
对于基于Debian),删除和更新您的系统。/etc/init.d
, /etc/rc.d
)quota
?)。例如,理解/etc/fstab
。了解df
.useradd
和groupadd
)。了解和的/etc/passwd
格式/etc/group
syslog
守护进程的日志文件。dmesg
和hdparm
大多数情况下,您应该知道如何使用 Linux(如日常使用)。然后,您还应该知道如何处理命令行。
最后,你必须学习LAMP特定的东西。您应该了解并应用一些基本(或不那么基本)的安全准则。
坦率地说,如果您要处理的网站非常小或非常大,那么很少。
非常小意味着共享主机,您无需费力。非常大意味着您可能需要一名系统管理员来处理它。
收藏或下载GNU coreutils 手册并定期阅读
学习Vim。一个好的开始是vimtutor
在外壳上。
学习如何使用安全机制;不要只是禁用它们。Windows 的安全性松懈,因为它的可用应用程序期望它以这种方式(否则会中断)。在类 Unix 环境中,应用程序总是被迫运行,默认情况下安全性可能很严格。
在Craigslist上找到一个旧盒子并在上面安装Gentoo Linux。那...经验...应该让您对 Linux 及其思考方式有很多感觉。
此外,在vi vs. Emacs的情况下,我统治Emacs。(尽管您会想从Pico / nano开始,因为在学习新操作系统的同时学习全功能编辑器是没有意义的)。