安装 Apache,MySQL, 和 PHP
现在是安装一些程序的时候了。为了从互联网访问你的站点,我们需要安装web服务器 (Apache). 除了web服务器,我们也需要安装数据库服务器 (MySQL) 和一个服务端语言 (PHP) ,以便于我们可以运行像WordPress这样的流行应用。所以,让我们来完成这些。
在Ubuntu上面安装程序不同于在Windows或OSX,在Ubuntu上只需要一个简单命令就可以下载和安装这个程序。这是因为Ubuntu有个叫包管理(Package Manager)的东西, 它管理着你系统上所有的程序。所有我们能做的就是告诉这个包管理工具(叫做"aptitude") 我们想让它安装 Apache, MySQL, 和 PHP。输入下面的命令来做到这一点:
sudo aptitude install apache2 php5-mysqllibapache2-mod-php5 mysql-server按回车。
Aptitude 会下载和安装你指定的这些程序。它也会下载和安装任何依赖的包。
在安装期间,MySQL会问你root密码。你可以任意设置它,只要确保它是长的安全的就行。无论如何,你都不能把它留空。
所有的一切完成以后,你现在就有了一个全职的web服务器了。为了测试它,你需要输入下面命令来找到你的服务器的IP:
ifconfig | grep inet
它通常是返回的第一个IP。现在你知道了IP, 打开你的浏览器,输入你的IP地址。如果你看到 "It works!" 信息,那么恭喜你,它可以工作了。
然而,我们还没有做完。我们不想Apache或PHP透露任何关于它们本身的信息,因为这些信息对你的用户是无用的,并且可能会造成安全风险。首先,备份原来的Apache配置文件:
sudo cp /etc/apache2/apache2.conf/etc/apache2/apache2.conf.bak现在打开配置文件:
sudo nano /etc/apache2/apache2.conf向下滚动(下箭头) 到写着"ServerTokensFull"的地方,改变它为"ServerTokens Prod"
现在,再稍微向下滚动一点,修改 "ServerSignature On" 为 "ServerSignature Off"
最后,按下Control-O,其次是Control-X.文件会被保存且会推出编辑器。
现在,我们会对PHP做相同的事情。首先,备份原始的PHP配置文件 :
sudo cp /etc/php5/apache2/php.ini/etc/php5/apache2/php.ini.bak打开配置文件:
sudo nano /etc/php5/apache2/php.ini修改 "expose_php = On" 为 "expose_php = Off"
再一次,按下Control-O ,然后 Control-X。现在配置文件被更新,重启Apache:
sudo /etc/init.d/apache2 restart你已经设置完 Apache, MySQL, 和 PHP了。
安装一个防火墙
现在我们要通过安装Shorewal锁定我们的服务器,一个命令行防火墙。安装它:
sudo aptitude install shorewall默认情况下,Shorewall的安装是没有规则的,允许完全访问。然而,着不是我们想要的方式。相反,我们想要屏蔽除了80端口(HTTP) 和22端口(SSH)之外的所有连接。首先,复制这个配置文件到Shorewall目录下:
sudo cp/usr/share/doc/shorewall-common/examples/one-interface/* /etc/shorewall/现在,打开 "rules" 文件:
sudo nano /etc/shorewall/rules把下面两行加到 "#LAST LINE"上面:
HTTP/ACCEPT net $FWSSH/ACCEPT net $FW
然后按 Control-O 和 Control-X。你的防火墙现在配置好了,仅仅接受HTTP和SSH的通信。我们需要做的最后一件事是告诉 Shorewall在系统启动时开启。所以,打开Shorewall主配置文件:
sudo nano /etc/shorewall/shorewall.conf滚动到 "STARTUP_ENABLED=No" 修改为 "STARTUP_ENABLED=Yes"
按 Control-O 和 Control-X。现在,打开Shorewall 默认配置文件:
sudo nano /etc/default/shorewall修改"startup=0" 为 "startup=1"。按Control-O 和 Control-X。最后启动你的防火墙 :
sudo /etc/init.d/shorewall start恭喜你!你的防火墙现在开始保护你的服务器了。
把你的网站放到服务器上
现在你已经设置好一切,你可能要添加一个网站了。默认情况下,Apache服务器映射到互联网的所有文件是位于 "/var/www/"下。然而,你不能写入这个文件夹。让我们这么做:
sudo usermod -g www-data [YOURUSERNAME]sudo chown -R www-data:www-data /var/wwwsudo chmod -R 775 /var/www你把你自己加到了"www-data" 组, 并且使网站的文件夹对于每个“www-data”组的成员来说都是可写的。
现在,你需要用SFTP来登陆你的服务器(不要和FTPS混淆)。支持SFTP的客户端有: WinSCP (Windows, 免费的), FileZilla (Windows, Linux, OSX, 免费的),Cyberduck (OS X, 免费的), 还有我个人的最爱, Transmit (OS X, $30)
使用你的用户名密码连接到你的服务器上,如果你的客户端支持它,默认路径是 "/var/www" (如果不支持,只需要登陆以后浏览 /var/www ):
你现在可以在这个文件夹(/var/www) 下添加文件,并且,当你用你的web浏览器浏览它的时候,它会显示。
现在,你可能想知道,为什么我们要用SFTP来代替FTP。主要是因为SFTP是建立在OpenSSH(你之前装过的)基础上的。然而,它比FTP更安全,使恶意用户获取你的登陆凭证更加困难。
使你的服务器在互联网上可访问
大多数的现代家庭网络都有一个路由器。由于这个原因,你的web服务器不经由一些小小的工作,将不会出现在互联网上。因为我不可能去测试每个路由器,所以我只能在这方面给你一个通用的方向。
这有两个方法,可以让你的服务器通向互联网: 一个DMZ 或者 Port 转发。你会去注意使用DMZ的主要不同是,你的服务器用我们之前安装的防火墙阻止了你自己。然而,用Port转发,你的服务器被你的路由防火墙阻止。
然而,在我们继续之前,你会想给你的服务器一个静态的LAN地址。为了做到这一点,你需要登陆路由,寻找的东西大致是 "Static IPs" 或 "Static Routing"。之后你的服务器拥有了以个静态的LAN地址,你可以做下一步了。记住,Googel是你的朋友。
做 port foward,这有个优秀的站点,PortForward.com, 虽然难看了点,但是它可以帮你完成这项工作,几乎适用于任何路由。你想转发的端口是22 和 80.
去创建一个DMZ, 你需要登陆你的路由器,去寻找一个类似 "DMZsettings"的东西。 一旦你找到它,把你的服务器加到DMZ中,然后你设置它。 再重复一遍,Google对于解决类似问题很有用。
现在,找到你的公网IP, 瞧吧!你可以从任何地方访问你的服务器了,只要你的IP不变。
远程管理的你的服务器
除了允许你上传文件外,只要你知道你的IP, OpenSSH允许你从任何地方登陆到你的服务器。对于Windows,你需要一个SSH客户端。我推荐 Putty 。对于OS X, SSH已经安装好了。只要打开终端 并且输入 "ssh you@yourip"就行。对于 Putty, 选择 SSH, 输入你的 IP, 用户名, 和密码(当你需要它的时候)。你会注意到,一旦你登陆,它看起来和服务器上的屏幕完全一样:
你可以这这里做任何事,想退出的话,输入”exit“,按回车就行了。
就这些!