所有伟大的站点背后都有一个伟大的服务器。  在这篇指南里,我会告诉你如何搭建一个专用的服务器(包括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服务器相关推荐

  1. AndServer,一个Android端的web服务器

    版权声明:转载必须注明本文转自严振杰的博客:http://blog.yanzhenjie.com 大家好,今天跟大家介绍一个让原生Android也可以做Web开发的开源项目--AndServer. 开 ...

  2. 一个简单的Java web服务器实现

    前言 一个简单的Java web服务器实现,比较简单,基于java.net.Socket和java.net.ServerSocket实现: 程序执行步骤 创建一个ServerSocket对象: 调用S ...

  3. 教你快速撸一个免费HTTPS证书

    摘要: 免费 HTTPS 证书,了解一下? HTTPS 已成为业界标准,这篇博客将教你申请Let's Encrypt的免费 HTTPS 证书. 本文的操作是在 Ubuntu 16.04 下进行,使用 ...

  4. 一个简单的静态web服务器实现

    看完tomcat原理后,想自己用java仿一个简单的tomcat,先实现一个静态的web服务器.需要的技术有java网络编程(tcp/ip协议.http协议.socket等基础知识) 源码下载链接ht ...

  5. SuperDog——一个基于netty的web服务器开发项目

      项目GitHub地址:https://github.com/HelloWorld-Ian/SuperDog   这是我在实习期间开发的一个项目demo,简单来说是一个基于netty框架的web服务 ...

  6. 教你如何创建一个免费的网站

    小编先声明一下,我并不是来做广告的!作为一个初学者,刚刚摸索出来一些经验想要拿来跟大家分享罢了!希望能帮助到那些想要做网站的亲们.算是分享一些我个人的经验吧. PS:现在主机屋已经不提供免费空间服务了 ...

  7. 手把手教你快速创建一个超高性价比弹性云服务器

    近些年来,我们能明显的感受到物价.尤其是房价上涨的迹象.本来就不容易鼓起来的钱袋子,在高昂的房价压力下显得更加瘪了.但你听过网络的"房屋空间"吗?即云服务器,近些年却在不断降低成本 ...

  8. centos选择php7 作为默认版本_树莓派下安装Nginx+Php7.3 搭建Web服务器

    本篇目录 安装Nginx 关于apt命令 安装PHP7.3 3.1 Raspbian从stretch升级到Buster 3.2 PHP7.3安装设置 4. 配置nginx解析PHP 1. 安装Ngin ...

  9. 一个简单的静态web服务器

    用python的socket写的一个简单多进程服务器 #-*-coding:utf-8-*- import re from socket import * from multiprocessing i ...

最新文章

  1. 在Markdown中用mermaid画流程图和ER图
  2. java 内存溢出-与gc
  3. android多线程读取网页内容
  4. Ubuntu中文输入法崩溃问题(候选框乱码)
  5. 2 自己编写:AppDelegate,CCApplication,CCApplicationProtocol
  6. url get参数 php,怎么取得Url中Get参数
  7. Teams 可被滥用于安装恶意软件,微软或不打算修复
  8. c#获取网页源码全解
  9. rdd和DF数据存入MYSQL
  10. flanneld,flannel和cni逐步深入
  11. linux shell 随机字符生成单词
  12. 计算机应用基础考试excel操作题,自学考试_《计算机应用基础》_上机操作_模拟练习题...
  13. 微信多开txt_微信如何多开
  14. 手机之家签名工具_自签工具更新 | 手机端自签,无需电脑,支持iOS 14 !
  15. Halcon 算子 complement
  16. 国内有哪些做得好的企业协同办公软件?这6款你知道吗?
  17. OpenAI的API key获取方法
  18. java宠物之王-龙灵传说_宠物之王龙灵传说闯关秘籍
  19. linux下github上传文件,linux下将本地文件上传到github中?
  20. Firefox plugin

热门文章

  1. K12在线教育平台的产品需求
  2. 高防IP与高防服务器的区别
  3. SAP 如何批量扩充(复制)科目到其他子公司(T-CODE: FS15)?
  4. 代码编辑器 常用注册码
  5. 多管齐下显神威-2017逐浪CMS开启全新建站与WEB技术革命
  6. android自定义游戏闯关图,Android开发之儿时的回忆——拼图小游戏
  7. INE首届共识大会 | 白眉:一起向百万级领地主进军
  8. 【转载】种子搜索神器使用图文教程
  9. 智能网联技术 英文_揭秘!智能网联汽车技术应用与发展趋势!
  10. 揭开家乐福赚钱内幕----家乐福是洋超市里的狼!