教你如何安装一个免费的专用Web服务器
所有伟大的站点背后都有一个伟大的服务器。 在这篇指南里,我会告诉你如何搭建一个专用的服务器(包括Apache,MySql,和PHP), 使用那台在屋子里无所事事的旧电脑和一些免费的软件。
快速概览
在这篇指南里, 我们的目标是要完成几件事:
- 我们将会安装Ubuntu Server版操作系统。我通常使用Ubuntu,因为它易于使用,管理简单。在其背后还有一个相当大且极其活跃的社区,使你轻松的得到支持。
- 我们将会安装一个 OpenSSH 服务。它允许你从远程计算机管理你的服务器。
- 会安装一个LAMP (Linux, Apache, MySQL, 和 PHP) 架构。这是运行你web站点的“骨架”支持。Apache是基于Unix操作系统web服务器的行业标准; 它是被大多数web主机使用的(NETTUTS现在就是用的它),并且现在我们也会去用它。
- 我们会安装一个防火墙来保护你的服务器,阻止那些未授权的访问。
为了跟随本教程,你需要以下一些东西:
- 一个用作服务器的电脑。它不需要很强大, 也不需要太古老,可以工作就好。请不要在你的桌面PC上做这些;Ubuntu会彻底清除你的电脑。
- 一个CD刻录机和一张空白的CD。是为了便于你刻录一张Ubuntu的安装盘。
- 时间。 严重的说,这个过程是很费时的,尤其是你遇到问题的时候。尽力腾出一个下午的功夫来跟随这个教程去做。
你可能会问,为什么你想有你自己的web服务器。有多个原因,其中一些是:你可以为你自己的网站提供一个试验场;一个小的修改,你就可以host你自己的站点;并且,当你做这些的时候你会学到很多关于Linux/Unix的东西。下面让我们开始吧!
下载Ubuntu Server版
首先,我们需要一张有Ubuntu的CD。把你的浏览器指向 http://www.ubuntu.com/, 点击左边菜单里的 download 。现在你会看到有两标签的一个框 : "Desktop Edition" 和 "Server Edition"。点击"Server Edition" 标签, 选择 "Ubuntu 8.04 LTS"。 下一步,从下拉列表框里选一个下载地点。最好点击 "Begin Download" 按钮。
现在你需要刻录一个ISO到你准备的空白CD上。如果你不知道如何去做,这有个优秀的教程https://help.ubuntu.com/community/BurningIsoHowto
安装 Ubuntu Server
现在你已经下载好了,并且刻好了ISO, 让我们把Ubuntu装在你的服务器上吧。 把这张盘放到磁盘驱动器里,然后从光盘启动。大多数现代的电脑,如果一张盘在磁盘驱动器里,当你打开它的时候都会默认从光盘启动。如果没有的话,在你启动电脑的时候,需要按一个键。例如我的笔记本,它是F12, 我的服务器是F2。这些取决于你的电脑了。你也可以在启动电脑BIOS期间出现在屏幕上的文字来找到它。你会看到一些像 "Press [KEY] to change boot order"这样的话。按这个键,选择CD drive。
Still with me? Good. Now that you've booted up Ubuntu, you should see the following screen:
选择你的语言,点击回车。现在你会看到下面这个屏幕:
选择 "Install Ubuntu Server", 我们出发吧!
安装程序会问你是否想要检测你的键盘布局。 就我个人而言, 我总是选no,因为从列表里选一个标准的美国键盘比安装程序选择它来得快。其他选项是好的,只需要按屏幕的指示来。
当你做完这些以后, 你会看到屏幕上一堆loading信息,像"Detecting CD-ROM drives" 诸如此类的。这些应该毫无问题的快速通过。 然而,就在这个期间,安装程序会尝试自动配置你的网络设置。大多数情况下,不会有问题。但是 ,如果它不为你工作了,只需要按照屏幕上的指示来让它工作。
完成这一切以后, 它会问你主机名称。你通常可以设置为任意值,我总是设置我的叫“web-server”。
系统现在会让你设置时区。对我来说,是Pacific. 选择一个适用于你的。
现在,系统会检测更多的硬件,并且你会被提示"partion the disk(s)(磁盘分区)". 选择 "Guided - use entire disk(引导 - 适用整个磁盘)".
你现在选择你需要分区的磁盘。对于大多数的安装,仅有一个磁盘可用,但是,对于大多数更专有的系统,这里有更多可用的选择。选择一个适用于你的。
它会问你是否你想把改变写入到磁盘。选择 "Yes" 然后回车。安装程序现在会格式化你的驱动器设立分区。
现在魔力爆发了。系统开始安装。当这一切发生的时候,去泡杯咖啡吧。这会花费一些时间,10分钟到一个小时不等, 这取决于你的系统。可能会有多次卡在那里,不要着急,没什么,只需要让它去做该做的。但是如果它在一件事上停留超过一小时,那么完了, 它死机了。
现在系统装好了,你需要设置一个用以登陆的帐号。首先,输入你的全名,并且点击 "Continue"。
现在输入用户名。它通常会设置为你的first name(按老外的名字),但是你可以改变它。一个名字你不要去用,"root"。
你现在会被要求提供一个密码。选择一个strong(译者注:复杂,长的,难以被破解的)密码是至关重要的,否则你的服务器根本不会安全。我建议至少是数字,小写字母和大写字母的混合。但是,对于我自己的服务器,我用符号,和上面的混合物一样好。不要用少于7个字符的密码。
然后,重新输入一遍你的密码来验证你输入的是否正确。
系统现在会试图配置 "Package Manager" (we'll get to what that is shortly). 提供你的代理信息,如果你不用代理就留空,然后选择"Continue"。
系统现在会扫描多个服务器寻找更新和配置。
完成这个以后,你会看到几个安装服务器软件的选项。现在,请仔细听。选择 Select OpenSSH server, 按 SPACE(空格), 不是回车。如果你按了回车,OpenSSH server就不会被安装。你也可以安装 "LAMP server" ,但是我没有这方面的经验,所以会用不同的命令去安装它们。
系统现在会安装你选择的软件,以及其他系统组件。
最后,安装完成。取出CD盘,点击回车。电脑会重启。如果一切正常,你会看到如下画面:
恭喜你,你已经完成了最难的部分。Ubuntu现在装好了,现在是把你的电脑变成web服务器的时候了。
更新你的新服务器
在我们更进一步之前,我们需要确保你的服务器是最新的。要做到这一点,你需要登陆。首先,输入用户名(你之前选的那个),按回车,输入密码。当你输入密码的时候,你会注意到什么事情都没有发生。不要着急,这就是它的工作方式。在你输完你的密码之后,按回车,如果一切正常,你的屏幕会出现如下画面:
现在,输入:
sudo aptitude update && sudo aptitude dist-upgrade
它会询问你密码,同样,你不会看到你输入的任何东西。完成这个以后,它会问你是否想继续。输入“y”,按回车。你的屏幕会如下显示:
你的系统现在开始下载并安装最新的更新。这一步花费的时间取决于你的互联网链接。完成这个以后,你的电脑需要重启。为了做到这一点,输入:
sudo shutdown -r now
让它重启。你的服务器现在完全更新了。
关于"Sudo"
直到现在,你可能已经注意到了,你输入的所有命令都以sudo开始。这是因为它们需要管理员权限,这就是sudo的作用。它以管理员身份运行命令(例如“shutdown”)使其能正常工作。这也是为什么它问你要密码的原因。然而,在你输入“sudo”一次并键入密码五分钟之内,不需要再次输入你的密码。不是所有的命令都需要sudo,只是那些修改系统的部分才需要。理解了吗? 很好。
安装 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-mysql libapache2-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
向下滚动(下箭头) 到写着"ServerTokens Full"的地方,改变它为 "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 [YOUR USERNAME]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, OS X, 免费的), 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, 你需要登陆你的路由器,去寻找一个类似 "DMZ settings"的东西。 一旦你找到它,把你的服务器加到DMZ中,然后你设置它。 再重复一遍,Google对于解决类似问题很有用。
现在,找到你的公网IP, 瞧吧!你可以从任何地方访问你的服务器了,只要你的IP不变。
远程管理的你的服务器
除了允许你上传文件外,只要你知道你的IP, OpenSSH允许你从任何地方登陆到你的服务器。对于Windows,你需要一个SSH客户端。我推荐 Putty 。对于OS X, SSH已经安装好了。只要打开终端 并且输入 "ssh you@yourip"就行。对于 Putty, 选择 SSH, 输入你的 IP, 用户名, 和密码(当你需要它的时候)。你会注意到,一旦你登陆,它看起来和服务器上的屏幕完全一样:
你可以这这里做任何事,想退出的话,输入”exit“,按回车就行了。
就这些!
这里有一些参考:
- Installing Software
- Setting Up Apache, MySQL, and PHP
- Shorewall Configuration Guide
- How to Port Forward
- User Membership With PHP PHP
- Organize Your Team with Collabtive Tools & Tips
- How to Create an Object-Oriented Blog Using PHP PHP
教你如何安装一个免费的专用Web服务器相关推荐
- AndServer,一个Android端的web服务器
版权声明:转载必须注明本文转自严振杰的博客:http://blog.yanzhenjie.com 大家好,今天跟大家介绍一个让原生Android也可以做Web开发的开源项目--AndServer. 开 ...
- 一个简单的Java web服务器实现
前言 一个简单的Java web服务器实现,比较简单,基于java.net.Socket和java.net.ServerSocket实现: 程序执行步骤 创建一个ServerSocket对象: 调用S ...
- 教你快速撸一个免费HTTPS证书
摘要: 免费 HTTPS 证书,了解一下? HTTPS 已成为业界标准,这篇博客将教你申请Let's Encrypt的免费 HTTPS 证书. 本文的操作是在 Ubuntu 16.04 下进行,使用 ...
- 一个简单的静态web服务器实现
看完tomcat原理后,想自己用java仿一个简单的tomcat,先实现一个静态的web服务器.需要的技术有java网络编程(tcp/ip协议.http协议.socket等基础知识) 源码下载链接ht ...
- SuperDog——一个基于netty的web服务器开发项目
项目GitHub地址:https://github.com/HelloWorld-Ian/SuperDog 这是我在实习期间开发的一个项目demo,简单来说是一个基于netty框架的web服务 ...
- 教你如何创建一个免费的网站
小编先声明一下,我并不是来做广告的!作为一个初学者,刚刚摸索出来一些经验想要拿来跟大家分享罢了!希望能帮助到那些想要做网站的亲们.算是分享一些我个人的经验吧. PS:现在主机屋已经不提供免费空间服务了 ...
- 手把手教你快速创建一个超高性价比弹性云服务器
近些年来,我们能明显的感受到物价.尤其是房价上涨的迹象.本来就不容易鼓起来的钱袋子,在高昂的房价压力下显得更加瘪了.但你听过网络的"房屋空间"吗?即云服务器,近些年却在不断降低成本 ...
- centos选择php7 作为默认版本_树莓派下安装Nginx+Php7.3 搭建Web服务器
本篇目录 安装Nginx 关于apt命令 安装PHP7.3 3.1 Raspbian从stretch升级到Buster 3.2 PHP7.3安装设置 4. 配置nginx解析PHP 1. 安装Ngin ...
- 一个简单的静态web服务器
用python的socket写的一个简单多进程服务器 #-*-coding:utf-8-*- import re from socket import * from multiprocessing i ...
最新文章
- 在Markdown中用mermaid画流程图和ER图
- java 内存溢出-与gc
- android多线程读取网页内容
- Ubuntu中文输入法崩溃问题(候选框乱码)
- 2 自己编写:AppDelegate,CCApplication,CCApplicationProtocol
- url get参数 php,怎么取得Url中Get参数
- Teams 可被滥用于安装恶意软件,微软或不打算修复
- c#获取网页源码全解
- rdd和DF数据存入MYSQL
- flanneld,flannel和cni逐步深入
- linux shell 随机字符生成单词
- 计算机应用基础考试excel操作题,自学考试_《计算机应用基础》_上机操作_模拟练习题...
- 微信多开txt_微信如何多开
- 手机之家签名工具_自签工具更新 | 手机端自签,无需电脑,支持iOS 14 !
- Halcon 算子 complement
- 国内有哪些做得好的企业协同办公软件?这6款你知道吗?
- OpenAI的API key获取方法
- java宠物之王-龙灵传说_宠物之王龙灵传说闯关秘籍
- linux下github上传文件,linux下将本地文件上传到github中?
- Firefox plugin