精华内容
参与话题
问答
  • 从零开始搭建你的Web服务器

    千次阅读 2017-08-23 10:41:55
    有天一个女士出门散步,路过一个建筑工地,看到三个男人在干活。她问第一个男人,“你在干什么呢?”,第一个男人被问得很烦,咆哮道,“你没看到我在码砖吗?”。她对回答不满意,然后问第二个男人他在干什么...

    http://www.hello-code.com/blog/architecture/201506/5147.html

    有天一个女士出门散步,路过一个建筑工地,看到三个男人在干活。她问第一个男人,“你在干什么呢?”,第一个男人被问得很烦,咆哮道,“你没看到我在码砖吗?”。她对回答不满意,然后问第二个男人他在干什么。第二个男人回答,“我正在砌墙”,然后转移注意力到第一个男人,他说,“嘿,你码过头了,你要把最后一块砖拿掉。”。她还是对回答不满意,然后问第三个男人在干什么。第三个男人仰望着天空对她说,“我正在建造世界上最大的教堂。”。当他站在那里仰望天空的时候,另外两个男人开始争论砖位置不对的问题。第三个男人转向前两个男人说,“嘿,伙计们,别担心那块砖了,那是里面的墙,它会被灰泥堵塞起来,然后没人会看到那块砖。去另一层干活吧。“

    故事的寓意是说,当你了解整个系统,理解不同的部分如何组织到一起的(砖、墙、教堂),你就能找出问题并快速解决之(砖位置不对)。

    这跟从零开始搭建你的WEB服务器有什么关系呢?

    我相信,要成为优秀的开发者,你必须对你每天都用的底层的软件系统有进一步的理解,包括编程语言、编译器和解释器、数据库和操作系统、WEB服务器和WEB框架。为了更好更深入的理解这些系统,你可以从零开始一块砖地,一面墙地,重建它们。

    子曰:闻之我也野,视之我也饶,行之我也明

    “我看过的,我还记得。”

    “我做过的,我都理解了。”

     

    (子曰:闻之我也野,视之我也饶,行之我也明)

    此时我希望你能够相信,从重建不同的软件系统来开始来学习它们是如何工作的,是一个好主意。

    在这个由3部分组成的系列文章中,我会向你展示怎样搭建一个基本的WEB服务器。咱们开始吧。

    重中之重,什么是WEB服务器?

    简而言之,它是一个位于一个物理服务器上的网络服务器(呀,服务器上的服务器),它等待客户端发送请求。当它接收到一个请求,就会生成一个响应并回发给客户端。客户端和服务器使用HTTP协议通信。客户端可以是浏览器或者别的使用HTTP协议的软件。

    一个非常简单的WEB服务器实现长什么样呢?以下是我写的一个。例子是用Python语言写的,但是即使你不会Python(它是一个非常易学的语言,试试!),你仍然可以通过代码和下面的解释理解相关概念:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    import socket
     
    HOST, PORT = '', 8888
     
    listen_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
    listen_socket.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
    listen_socket.bind((HOST, PORT))
    listen_socket.listen(1)
    print 'Serving HTTP on port %s ...' % PORT
    while True:
        client_connection, client_address = listen_socket.accept()
        request = client_connection.recv(1024)
        print request
     
        http_response = """
    HTTP/1.1 200 OK
     
    Hello, World!
    """
        client_connection.sendall(http_response)
        client_connection.close()

    把上面的代码保存到webserver1.py或者直接从GitHub下载,然后像下面这样在命令行运行它

    1
    2
    $ python webserver1.py
    Serving HTTP on port 8888 …

    现在在你的WEB浏览器地址栏里输入以下URL http://localhost:8888/hello,敲回车,见证奇迹的时刻。你会看到浏览器显示”Hello, World!“,像这样:

    认真做一下吧,我会等你的。

    做完了?很好。现在我们讨论一下它到底怎么工作的。

    首先我们从你刚才键入的WEB地址开始。它叫URL,这是它的基本结构:

    这个就表示怎样告诉浏览器要查找和连接的WEB服务器地址,和你要获取的服务器上的页面(路径)。但是在浏览器发送HTTP请求前,浏览器需要先和WEB服务器建立TCP连接。然后浏览器在TCP连接上发送HTTP请求,然后等待服务器回发HTTP响应。当浏览器接收到响应后,显示响应,在本次例子中,浏览器显示“Hello, World!”。

    我们再详细探索一下客户端和服务器在发送HTTP请求和响应前如何建立TCP连接的。在建立连接,它们必须使用所谓的sockets。用你命令行下的telnet手动模拟浏览器吧,而不是直接使用浏览器。

    在运行WEB服务器的同一台电脑上,在命令行启动一个telnet会话,指定连接到localhost主机,连接端口为8888,然后按回车:

    1
    2
    3
    $ telnet localhost 8888
    Trying 127.0.0.1 …
    Connected to localhost.

    此时,你已经和运行在你本地主机的服务器建立了TCP连接,已经准备好发送并接收HTTP消息了。下图中你可以看到一个服务器要经过的标准步骤,然后才能接受新的TCP连接。

    在同一个telnet会话中,输入 GET /hello HTTP/1.1然后敲回车:

    1
    2
    3
    4
    5
    6
    7
    $ telnet localhost 8888
    Trying 127.0.0.1 …
    Connected to localhost.
    GET /hello HTTP/1.1
     
    HTTP/1.1 200 OK
    Hello, World!

    你完成了手动模拟浏览器!你发送了一个HTTP请求并得到了一个HTTP响应。这是HTTP请求的基本结构:

    HTTP请求由行组成。行指示了HTTP方法(GET,因为我们请求我们的服务器返回给我们一些东西)、代表我们想要的服务器上的“页面”的路径 /hello和协议版本。

    为了简单起见,此时我们的WEB服务器完全忽略了上面的请求行。你也可以输入任何垃圾字符取代“GET /hello HTTP/1.1”,你仍然会得到“Hello, World!”响应。

    一旦你输入了请求行,敲了回车,客户端就发送请求给服务器,服务器读取请求行,打印出来然后返回相应的HTTP响应。

    以下是服务器回发给客户端(这个例子中是telnet)的HTTP响应:

    咱们分析一下它,响应包含了状态行HTTP/1.1 200 OK,随后一个必须的空行,和HTTP响应body。

    响应状态行TTP/1.1 200 OK包含了HTTP版本,HTTP状态码和HTTP状态码理由短语OK。浏览器得到响应时,它就显示响应的body,所以你就看到了“Hello, World!”

    这就是WEB浏览器怎么工作的基本模型。总结来说:WEB服务器创建一个监听socket然后开始循环接受新连接。客户端初始化一个TCP连接,在连接成功后,客户端发送HTTP请求到服务器,服务器响应一个显示给用户的HTTP响应。客户端和服务器都使用socket建立TCP连接。

    你现在你拥有了一个非常基础的WEB服务器,你可以用浏览器或其他的HTTP客户端测试它。正如你看到的,使用telnet手动输入HTTP请求,你也就成了一个人肉 HTTP 客户端。

    对你来说有一个问题:“怎样在你的刚完成的WEB服务器下运行 Django 应用、Flask 应用和 Pyramid  应用?在不单独修改服务器来适应这些不同的 WEB 框架的情况下。”

    展开全文
  • 从0到1搭建属于自己的服务器

    千次阅读 2019-04-06 18:03:18
    转载一篇搭建服务器的教程 云计算这个概念从提出到现在已经十多年了,在这些年里,云计算取得了飞速的发展与翻天覆地的变化,而云计算也给我们很多开发者带来了福音,比如早期的微信公众号开发,我们可以利用百度...

    转载一篇搭建服务器的教程

     

    云计算这个概念从提出到现在已经十多年了,在这些年里,云计算取得了飞速的发展与翻天覆地的变化,而云计算也给我们很多开发者带来了福音,比如早期的微信公众号开发,我们可以利用百度的 BAE 或者是新浪云 SAE 很快的完成微信公众号开发。

     

    百度的 BAE 也给我们提供了 app.conf 这种可以很快速完成路由过滤、自定义错误页面、设置过期时间等功能,而这些功能都是经过高度封装,很多时候,我们只是知道它有这些功能,但是却不知道具体是如何实现的,这个对于很多想从事开发的人来说却并非是好事。

     

    百度 BAE 在部署容器的时候,可以选择不同的运行环境以支持用户编写的语言环境,价格比如内存 256MB,磁盘 2GB,宽带 5Mb/s,1 个执行单元的每天才 4 毛钱,价格还算是合理,而且还免费提供数据库(内存 256MB,容量 1GB)。

     

    但是,它开放端口需要收费,每个端口按每天 0.12 元计费,此外,如果我的网站需要 Elasticsearch 做站内搜索的,如果你采用一些云平台提供的服务,相对来说价格是比较贵的,比如 BAE 的 Elasticsearch 一个节点最少都要 520 元,所以,自己动手丰衣足食!

     

    我们干脆自己租台云服务器,自己玩,想装什么软件就装什么软件,想放行什么端口就放行什么端口,很自由,而且利用云计算的优势价格也算实惠,此外现在阿里也在大力推广自己的云平台。

     

    下面的文章都是按照有点 Linux 基础来编写的,如果有些地方你会,请选择性阅读!整篇文章的图比较多,大家流量要充裕啊。

     

    还得再提一下,下面的积木搭建服务器合起来就一句话:下载、编译、安装、配置文件、启动这 5 个步骤,中间可能还会涉及到其它必要环境的安装,这个就是所谓的坑,跳过去就好啦。

     

    通篇文章,Linux 命令会很多,如果你在阅读的时候,如果对某个命令不是非常了解,你可以在 Linux 里面man 命令一下,你可以查看这个命令的帮助文档,如果你英文不是非常好,可以直接百度。

     

    02

    租赁一台服务器

     

    我现在的服务器是购买阿里的(价格适中,在接受的范围内),我自己用的云服务器也很多,这里就不细说了,以免有打广告的嫌疑。我现在在阿里用的那个服务器是通过推荐好友送服务器的活动搞来的,这个活动目前已经结束了。

     

    现在大家也可以看看阿里其它活动,租台服务器,通过实操中不断地积累经验,因为总在自己的电脑搞本地服务器,总会腻的,就算你玩穿透,免费经常撞壁你又吐槽,收费又嫌贵,哈哈哈,不讲大道理,这里要求一下,希望大家都用阿里的云服务器,这样我们云服务器管理控制台长得才能一样。

     

    当然,如果你喜欢折腾,那就忽视我说的那个要求,此外购买的服务器安装的是 CentOS6 系列的 (目前我的是 CentOS6.8),大家最好和我的版本一致,CentOS6 系列和 CentOS7 系列命令有很多差别的。

     

    如果你已经有了云服务器,那么我们开始吧。

     

    我们先看看我们的服务器资源信息吧,首先,打开你的阿里云控制台界面,如下:

     

     

    比如我的磁盘信息如下:

     

    因为我这里没有数据盘,所以我不需要执行挂载操作,如果你的服务器有数据盘,你远程登录的时候先把那个盘格式化后挂载。如果你不知道如何远程登录没关系,下面就慢慢道来。

     

    03

    远程登录

     

     

    我用的远程登录软件叫 SecureCRT,如果你没有,请点击下面的链接下载吧! 链接:https://pan.baidu.com/s/17jVMbbNuqG6DBun1gC07lQ 密码:qas6

    下载后,解压,然后打开 SecureCRTPortable.exe,然后它应该长这样的:

     

    现在我们就来连接我们的服务器吧。点击 File-Quick Connect...

     

     

    然后在你的云服务器控制台找到云服务 ESC,里面的公网地址就是你远程登录的 Hostname,而 username 就是你购买服务器的时候需要给你的服务器输入用户名和密码,那个用户名就是 username,如果你没有更改,那么默认是 root,如下图:

     

    然后点击 Connect,如下图:

     

    输入你在购买服务器时候给你服务器设置的密码,然后勾选 save password,这样你每次登陆的时候就不必再输入密码了。如果一切顺利,那么你应该远程登录上去了。

     

    我的进来时候是这样子的,你们刚开始的时候肯定和我的有差距的。

     

     

    下面就是教大家如何更改和我一样的,首先是 alicloud 这个名词,大家的是用 IP 地址进行标识的,这个我们更改如下图所示:

     

     

    点击你要更改名字的那个,然后鼠标右键,选择 rename 就可以对你已经成功登陆上的那个 IP 地址进行更名操作了。

     

    然后我们更改背景颜色,字体还有编码,我们选择 Options---Session Options

    选择 Emulation,在 Terminal 里面选择 Linux,勾选 User color scheme。

     

     

    然后再选择 Appearance,Current color scheme 选择 Traditional,字体自己调试大小,Character encoding 请选择 UTF-8,否是你的服务器目录如果有中文肯定是乱码的。

     

     

    以上的背景,字体,可以根据自己的喜欢来调整,如果觉得调试完成,直接点击 ok 保存即可。

     

    最后,更改我们的欢迎界面吧,我的服务器一登录是 "Tourbis Cloud",这个是可以更改的,命令:

    [root@tourbis ~]# vim /etc/motd

    这个时候你进去的不是编辑模式,你需要按 a 进入编辑模式,那个时候你才能往这个文件里面写数据,里面写入你想写的任何文字,写完后,我们需要对这个文件进行保存,所以我们需要退出编辑模式,我们按 "Esc",退出编辑模式后,我们需要按一个“shift+:”然后按 wq,保存即可。

     

    这个时候我们关闭远程登录,再次登录我们就可以看到我们的欢迎界面效果了。

     

    04

    安装 Apache 服务器

     

     

    我们虽然买了一台服务器,但并不意味着我们可以通过 http 来访问我们服务器里面的资源,因为我们购买的服务器只是安装了一个 Linux 操作系统而已,而这个操作系统只是安装了基本的命令罢了 (因为我曾经购买的服务器里面连 vim,wget 这些命令都没有,都是需要自己安装)。

     

    所以如果你想让你这台装有 Linux 的操作系统能够对外提供服务的话,那么你就需要安装一个能够对外提供服务的软件,比如微软开发的 IIS 服务器,它只能在 Windows 操作系统上跑,支持语言 asp.net,asp,PHP,tomcat 服务器,既可以在 Windows 跑也可以在 Linux 上跑,它是 Apache 基金会的 Java 服务器,搞 Java 的用它比较多。

     

    当然还有其它服务器,比如 Apache 服务器,对静态页面支持效果很好,Nginx 服务器,对动态支持效果很好,可以做反向代理,有些公司,为了提高网站整体架构,会充分的利用 Apache 和 Ngnix 的优点,将其整合在一起使用,动态的交付给 Ngnix 处理,静态的交付给 Apache 处理。

     

    现在我们就开始安装 Apache 这款服务器吧。

     

    这里我们通过源码包进行安装吧。

     

    安装编译支持工具

     

    要编译,肯定需要一些能支持编译的插件的,所以在我们新够买的服务器应该没有装这类支持编译的工具,所以我们需要把他们装上。

     

    命令:yum -y install gcc gcc-c++

    这条命令的意思是安装 gcc,gcc-c++,可选项 - y 表示 yes 的意思,就是安装的时候不会提示你是否安装这个操作,直接就给你装了。

     

    安装 Apache 环境支持工具

     

    我们首先要安装 Apache 需要的支持工具,我们先安装 ARP(Apache Portable Runtime),Linux 下载命令:

    wget http://mirrors.hust.edu.cn/apache//apr/apr-1.6.3.tar.gz

     

    这个时候,它下载文件的路径是在 /root 下面,我们直接敲 cd 回车也可以到 /root 下面去的,然后我们 ls 查看,可以看到我们下载好的 apr 安装包,我们命令切换到 /usr。

    [root@tourbis ~]# cd /usr

    然后我们在这个目录里面创建一个 app 文件,命令 mkdir app

    [root@tourbis usr]# mkdir app

     

    然后把我们 /root 下面的 apr-1.6.3.tar.gz 文件移动到 /usr/app 下面去,命令 mv/root/apr-1.6.3.tar.gz/usr/app,如下图:

     

    然后在 /usr/app 目录里面将其解压,解压命令:

    [root@tourbis app]# tar-xvzfapr-1.6.3.tar.gz

     

    解压后如下:

     

     

    然后我们 cd apr-1.6.3 这个目录里面,执行下面的命令:

    [root@tourbis apr-1.6.3]# ./configure

     

    然后回车,它会进行检测你需要的环境是否满足,如果出现 Error,那么你一定要解决,如果没有 Error,说明检测通过,这个时候我们执行编译和安装命令。

    [root@tourbis apr-1.6.3]# make;make install

     

    上面执行了 2 条命令,先进行编译 (如果你的 gcc 这些没装,肯定是没法编译的),编译完成后安装,默认安装到 /usr/local 下面。

     

    然后再安装 APR-util,Linux 下载命令:

    [root@tourbis ~]# wget http://mirrors.shu.edu.cn/apache//apr/apr-util-1.6.1.tar.gz

     

    注意,它编译的时候是需要 APR 的,因为我们前面是安装了 APR,所以我们在编译 APR-util 的时候需要指定这个 APR 路径。

     

    和安装 APR 一样,把下载好的 apr-util-1.6.1.tar.gz 移动到 /usr/app 里面,命令和上面的操作一样,这里不再叙述了,然后解压,然后进入解压后的目录里面,即:

    [root@tourbis app]# cd apr-util-1.6.1/

     

    然后执行命令:

    [root@tourbis apr-util-1.6.1]# ./configure --prefix=/usr/local/apr-util --with-apr=/usr/local/apr

     

    解析一下这个命令,这个命令意思是把 APR-util 安装到 / usr/local/apr-util 里面去,后面的是它编译需要 apr 的安装路径,然后你回车,你会发现在检测的时候有 Error 出现,这个 Error 我们必须解决,不能不管直接就编译安装了。编译错误如下:

    xml/apr_xml.c: In function ‘apr_xml_parser_geterror’:xml/apr_xml.c:500: error: ‘apr_xml_parser’ has no member named ‘xp_err’xml/apr_xml.c:500: error: ‘apr_xml_parser’ has no member named ‘xp_err’make[1]: *** [xml/apr_xml.lo] Error 1make[1]: Leaving directory `/usr/app/apr-util-1.6.1'make: *** [all-recursive] Error 1

     

    解决办法:

    命令:[root@tourbis apr-util-1.6.1]# yum install expat-devel

     

    然后再进行检测一次,即:

    [root@tourbis apr-util-1.6.1]# ./configure --prefix=/usr/local/apr-util --with-apr=/usr/local/apr

     

    然后检测通过在进行编译安装。

    [root@tourbis apr-util-1.6.1]# make;make install

     

    然后我们再安装 Apache 第三个支持工具,PCRE。它的下载页面:https://sourceforge.net/projects/pcre/files/latest/download

    我们需要在 Windows 上下载这个安装包,然后将其上传到服务器上去,由于它下载的是 zip 包,你可以利用 Windows 解压,然后将其上传到服务器上,也可以直接将 zip 包上传到服务器上去。

     

    那么如何把 Windows 的文件上传通过 SecureCRT 上传到服务器呢?

     

    我们在 SecureCRT 的登录窗口上,按着 Alt+P,然后就会出现一个 stfp session,比如,我们下面是把 E 盘的 Anaconda3 上传到服务器上去:

     

    sftp> put -r e:/Anaconda3/

     

    那个 - r 是可选项,如果你上传的是目录,则必须加上 - r,如果是文件可以不用加上。假设你电脑下载好了 PCRE,你解压了,那么你上传的就是一个目录,你需要 - r 才能将其上传,如果你不加 - r,它会报错。

     

    好吧,找到你下载的 PCRE 包,将其 put 到你的服务器上去。

     

    假设你在 Windows 上将下载的 PCRE 解压再上传,那么你这里可以选择性阅读,如果你是将 PCRE 的 zip 包上传到服务器,那么你新买的服务器如果不支持 unzip 命令,则你需要自己安装:

    [root@tourbis app]# yum install -y unzip

     

    装好后,你前面 put 的文件是存储到 / root 下面,所以我们和前面的安装一样,把它移动到 app 里面去,命令:

    [root@tourbis ~]# mv /root/pcre-8.42.zip /usr/app/

     

    如果你只细看,你会发现我现在所在的目录就是 / root,我担心有些 Linux 基础不好,所以我写了全路径,因为在这里我们其实可以这样写也是 OK 的。

    [root@tourbis ~]# mv pcre-8.42.zip /usr/app/

     

    然后解压:

    [root@tourbis app]#unzippcre-8.42.zip

     

    然后开始安装 PCRE,进入到解压后的 pcre-8.42 目录下面,执行下面的命令:

    [root@tourbis pcre-8.42]# ./configure --prefix=/usr/local/pcre ;make;make install

     

    不知道有没有人不会看当前所在位置的,这里顺便提一下,注意看,我所在的命令执行的目录 root@tourbis pcre-8.42 是在 pcre-8.42 里面,也就是说我当前所在位置是 pcre-8.42 目录里面,命令也是在里面执行的,那个 root 就是用户名,而 tourbis 是我的 ip 映射名称,我们可以查看这个映射文件:

    [root@tourbis pcre-8.42]# cat /etc/hosts

     

    cat 命令是 Linux 的查看命令,你也可以更改这个映射名称,通过 vim 进入将其修改即可。

     

    当我们 ARR,ARR-Util 和 PCRE 安装成功之后,我们再执行下面命令:

    [root@tourbis app]# yum install zlib*

     

    这个是必须安装,否则 Apache 服务器在编译安装的时候是会报错的。

     

    我们就开始下载我们的 Apache 服务器,进行安装这个玩意吧。

     

    安装 httpd

     

    同样的道理,下载 Apache httpd 服务器,Linux 命令:

    [root@tourbis ~]# wget http://archive.apache.org/dist/httpd/httpd-2.4.10.tar.gz

     

    把下载好的 httpd-2.4.10.tar.gz 从 /root 移动到 /usr/app 下面:

    [root@tourbis ~]# cd httpd-2.4.10.tar.gz /usr/app

     

    然后再到 app 里面解压 httpd-2.4.10.tar.gz 文件

    [root@tourbis app]# tar-xvzfhttpd-2.4.10.tar.gz

     

    然后把外面之前解压的 APR 和 APR-util 复制到 /usr/app/httpd-2.4.10/srclib 里面,命令:

    [root@tourbis app]# cp -r apr-1.6.3 httpd-2.4.10/srclib/apr[root@tourbis app]# cp -r apr-util-1.6.1 httpd-2.4.10/srclib/apr-util

     

    上面命令的意思解析一下,cp 是拷贝的意思,因为apr-1.6.3是目录,所以需要带可选项 - r,后面的httpd-2.4.10/srclib/是复制到的目标路径,后面的apr-util是拷贝到目标目录之后再重新命名为apr-util的意思。

     

    然后开始进行 configure 操作,这里需要启动./configure –enable-so 编译模式,所以编译命令:

    [root@tourbis httpd-2.4.10]# ./configure --prefix=/usr/app/httpd-2.4.10/apache --with-apr=/usr/local/apr/ --with-apr-util=/usr/local/apr-util/ --with-pcre=/usr/local/pcre --with-included-apr --enable-so

     

    上面的 --prefix 指定这个编译文件安装的目录,我把它编译安装的目录选择安装到/usr/app/httpd-2.4.10/apache里面,其实就是把它安装到我的 httpd 的源码包里面的 apache 目录里面,当然,你可以自行选择安装路径。

     

    如下图:

     

    注意,这个 Apache 目录是它 httpd 安装时候生成的,你的源码包里面是没有这个 Apache 目录的,必须编译安装之后才会有这个目录的。如果你到了这一步,执行都是非常顺利的,那么恭喜你,你的 Apache 服务器编译安装也就结束了。

     

    阅读全文请扫描

    下方二维码,

    还可以加入读者圈与作者聊天~:

     

     

     

    展开全文
  • 快速搭建一个自己的服务器详解(java环境)

    万次阅读 多人点赞 2018-07-19 22:12:51
    服务器的购买 1. 我选择的是阿里云的服务器,学生价9.5元一个月,百度直接搜索阿里云,然后点击右上角登录,推荐大家用支付宝扫码登录,方便快捷。阿里云官网的东西比较多,登录后我找了很久也没有找到学生服务器...

    一.   服务器的购买

    1. 我选择的是阿里云的服务器,学生价9.5元一个月,百度直接搜索阿里云,然后点击右上角登录,推荐大家用支付宝扫码登录,方便快捷。阿里云官网的东西比较多,登录后我找了很久也没有找到学生服务器在哪里卖,最后在咨询里找到了这个网址,https://promotion.aliyun.com/ntms/campus2017.html,购买的时候需要进行学生认证,按照他的要求一步步来就好,认证大概需要几个小时。如果你不是学生那就直接购买ecs服务器就好,首页就可以看到ecs服务器的购买地址,但是要比学生服务器贵不少。  在这里要说一下预装环境的选择,因为大部分服务器都是linux系统,linux中centos的使用又是最多的,所以推荐大家也选择centos系统,然后是应用镜像的选择,应用镜像的作用主要就是帮你预装服务器的环境,比如mysql,apache,tomcat这些,有的还会给你提供管理服务器的面板,方便对服务器的操作。应用镜像可用可不用,如果你只是想快速的配置好服务器,推荐大家安装宝塔linux面板,使用起来很方便,如果你想了解或者已经了解一些linux的使用,就可以忽略应用镜像自己手动配置。如果是用来学习的话地域的选择是无所谓的,可以选择一个离自己近的。                                                            

    2.服务器购买成功之后在阿里云的首页右上角进入控制台,控制台的侧边栏中有esc服务器或者轻量级服务器也就是学生服务器,点击进入后你就可以看到自己购买的服务器,右下角就是你服务器的ip地址,接下来要用到。                                                       

    二.   服务器的配置   

             1.首先点击远程连接中的设置root密码,这是连接服务器要用到的。                                                                                                                                           

    2.然后在防火墙中点击添加规则开放端口,开放了端口后才其他人可以访问服务器上的程序或服务,因为是自己学习用的不存在什么安全问题,为了方便我开启了所有端口。你也可以只开启21,22,443,8080这几个端口,如果你使用的是宝塔linux,则还需要打开8888端口。                                                                                                                                                                 

    三.   服务器环境手动搭建

    现在服务器已经有了,该怎么使用呢?如果要使用命令行手动搭建环境,最好大家要对linux命令有一些了解,如果你不想使用linux命令来搭建环境,且安装了宝塔linux面板,请直接看第四部分,可方便快捷的完成环境搭建并使用面板来控制服务器。如果你想了解docker并使用它来完成环境搭建,请看第六部分。

    1. 工具准备

    我们需要两款软件来连接到服务器,一个叫Xshell,用来远程连接服务器,另一个叫Xftp,用来服务器和自己电脑之间的文件传输,直接百度或者在360宝库中就可以下载到这两款软件。如果你已经安装了git,也可用git或者mac自带的命令行工具使用ssh和scp来进行服务器的连接和文件传输。

    2.Xshell的连接

    Xshell的使用很方便,首先输入自己服务器的IP地址,在阿里云服务器列表的右下角就有你服务器的IP地址,点击连接,然后用户名输入root,密码输入你在前面设置的root密码,当屏幕显示welcome to alibaba cloud时,说明你连接成功了。

    3.Xftp的连接

    Xftp的登录和Xshell类似,输入服务器IP,用户输入root,然后输入root密码,登录成功后,左边框为你自己电脑上的文件,右边为服务器上的文件,左右拖动来进行文件的上传和下载。

    4.JDK的安装

    这两个软件安装好之后我们便可以开始服务器环境的搭建,因为是学习用的简单环境,并发不高,所以并没有使用nginx,apache或者redis这些,使用的java环境为简单的tomcat+mysql,环境搭建我们需要使用Xshell来完成。在安装tomcat之前我们首先要进行jdk的安装,linux系统上jdk的安装十分简单,我使用的是1.8版本的jdk,运行命令  yum -y install java-1.8.0-openjdk.x86_64,屏幕上出现Complete时,说明安装成功了。接着你可以运行java -version,显示出当前java版本说明没有问题。

    5.Tomcat的安装 

    接下来是tomcat的安装,yum上没有tomcat的源,所以需要wget的方式来下载,首先通过cd /opt来切换到opt目录下。

    运行命令wget http://mirrors.shu.edu.cn/apache/tomcat/tomcat-8/v8.5.32/bin/apache-tomcat-8.5.32.tar.gz,wget后面的这个地址是官网上的下载地址,有的同学反映下载不了,那你可以自己在网上找一下其他的tomcat下载地址,更换即可。

          执行完毕之后我们已经将tomcat压缩包下载到了opt目录下,然后我们运行命令 tar xzf apache-tomcat-8.5.32.tar.gz 来解压这个压缩包。

    现在我们在Xftp中是可以看到这两个文件的,我们可以单击解压后的文件按F2来重命名为tomcat8.5,方便我们使用命令行来对他进行操作,或者可以执行命令mv apache-tomcat-8.5.32  tomcat8.5来更改名称。

    执行命令/opt//tomcat8.5/bin/startup.sh运行tomcat,显示tomcat started,说明启动成功了

    我们也可以输入netstat -anp|grep 8080来查看8080端口

    这个时候我们已经可以从外网访问了,在你的浏览器上直接访问你的服务器ip地址加端口号,例如http://39.107.104.52:8080/,如果访问成功说明我们的tomcat已经配置好了。

    6.mysql的安装

    yum上mysql的资源有问题,所以不能仅仅之用yum。在使用yum之前还需要用其他命令获取mysql社区版,执行命令wget http://repo.mysql.com/mysql-community-release-el7-5.noarch.rpm,继续执行rpm -ivh mysql-community-release-el7-5.noarch.rpm。

    这时候我们就可以通过yum进行安装了,执行yum install mysql mysql-server mysql-devel -y,最后显示complete则说明安装成功。

    安装成功后,我们通过systemctl start mysql.service来启动mysql服务器,然后我们依旧可以执行netstat -anp|grep 3306命令来查看mysql是否启动。

    通过yum安装的mysql的管理员账户是没有密码的,这里通过命令设置其密码为 admin ,大家也可以设为其他,执行命令mysqladmin -u root password admin。

    注: Warning信息并非提示设置失败,而是告诉大家密码露出来了,当心背后有人。

    7.项目和数据库的上传

             我们通过mysql -uroot -padmin命令来登录数据库,admin是密码,如果你设置成了其他密码在这里请更换为自己设置的,通过CREATE DATABASE xxx DEFAULT CHARACTER SET utf8;命令来创建数据库,记得在进入数据库后执行的命令后要加分号,xxx为数据库名,在创建时改为你要创建的数据库名,创建后执行show databases;,即可看到你所创建的数据库。很多时候数据库都是我们本地创建好后导入至服务器,我们首先需要使用Xftp将数据库文件传输到服务器上,我们可以通过mysql -u root -padmin --default-character-set=utf8 xxx < /home/xxx.sql命令来导入数据库,xxx即为数据库名,/home/xxx.sql为数据文件的路径。导入操作完成后,我们再次通过mysql -uroot -padmin命令来登录数据库,执行use xxx; ,然后show tables;,查看导入的数据库。

    项目的上传就较为简单了,我们只需将项目直接放入tomcat的webapps目录中即可,或者将项目打包成war文件后放入,重启tomcat后war文件会被自动解析。关闭tomcat的命令为/opt/tomcat8.5/bin/shutdown.sh,关闭后再打开完成重启。

    这时候你就可以在外网访问到你的项目了,例如http://39.107.104.52:8080/shop/

     

    到这里服务器搭建就算完成了,如果你还想对你的服务器做进一步的优化,提高网站的访问速度和服务器的性能,请看第五部分——Nginx的使用,使用nginx还有一个好处就是可以在不备份的情况下去掉8080端口(正常情况下我们不备份网站是无法去掉端口号的去使用网站默认的80端口的),比如可以将http://39.107.104.52:8080/shop变为http://39.107.104.52/shop

    四.宝塔linux面板环境搭建

    1. 宝塔面板登录 

    宝塔面板的使用较为简单,首先从控制台进入服务器管理页面,然后进入应用详情,点击复制

    然后远程连接,连接成功后右键将复制的内容粘贴,回车运行,会显示出宝塔面板的密码,把它复制下来。

    退出远程连接,点击面板首页地址。

    用户名为admin,密码为刚刚远程连接后复制的密码。

    2. 软件安装和配置

    登录成功后在侧边栏找到软件管理

    安装tomcat和mysql,我安装的tomcat版本为8.5,mysql版本为5.7。

    在等待安装的这段时间里,我们先开放端口,点击侧边栏中的安全,放行8080端口。

    安装完成后,我们这时已经可以从外网访问到tomcat页面。访问如http://39.107.104.52:8080/,IP地址要换成你自己服务器的IP地址。

    上传数据库

    从侧边栏进入数据库,点击添加数据库,密码可以随机生成,也可以自己设置。

    添加成功后点击导入,即可将本地的sql数据库文件上传到服务器。

    上传项目

    在软件管理中点击tomcat的文件位置,进入tomcat。

    打开tomcat的webapps文件夹,点击左上角的上传,将项目文件或者项目的war包放入后重启tomcat即可。

    这时候你就可以在外网访问到你的项目了,例如http://39.107.104.52:8080/shop/

    到这里服务器搭建就算完成了,如果你还想对你的服务器做进一步的优化,提高网站的访问速度和服务器的性能,请看第五部分——Nginx的使用,使用nginx还有一个好处就是可以在不备份的情况下去掉8080端口(正常情况下我们不备份网站是无法去掉端口号的去使用网站默认的80端口的),比如可以将http://39.107.104.52:8080/shop变为http://39.107.104.52/shop

    五 .服务器性能优化(Nginx的使用)

    Nginx是一个反向代理服务器,使用nginx可以实现动静分离和负载均衡,动静分离是指在处理用户请求时,由nginx处理静态请求,tomcat处理动态请求,降低了tomcat的负载,让tomcat可以专注处理动态请求。负载均衡是指nginx可以同时连接多个tomcat即tomcat集群,将用户的动态请求均衡的转发给各个tomcat。那么,Nginx该如何使用呢?

    1.使用宝塔面板安装配置Nginx

    在软件管理中找到Nginx点击安装,在这里我安装的是1.14版本。

    安装完成后需要对nginx进行配置,点击nginx的设置,进入设置页面,点击配置修改,将原本的配置文件全部删除,改成如下内容:

    user  www www;
    worker_processes auto;
    error_log  /www/wwwlogs/nginx_error.log  crit;
    pid        /www/server/nginx/logs/nginx.pid;
    worker_rlimit_nofile 51200;
    
    events
        {
            use epoll;
            worker_connections 51200;
            multi_accept on;
        }
    
    http
        {
            include       mime.types;
    		#include luawaf.conf;
    
    		include proxy.conf;
    
            default_type  application/octet-stream;
    
            server_names_hash_bucket_size 512;
            client_header_buffer_size 32k;
            large_client_header_buffers 4 32k;
            client_max_body_size 50m;
    
            sendfile   on;
            tcp_nopush on;
    
            keepalive_timeout 60;
    
            tcp_nodelay on;
    
            fastcgi_connect_timeout 300;
            fastcgi_send_timeout 300;
            fastcgi_read_timeout 300;
            fastcgi_buffer_size 64k;
            fastcgi_buffers 4 64k;
            fastcgi_busy_buffers_size 128k;
            fastcgi_temp_file_write_size 256k;
    		fastcgi_intercept_errors on;
    
            gzip on;
            gzip_min_length  1k;
            gzip_buffers     4 16k;
            gzip_http_version 1.1;
            gzip_comp_level 2;
            gzip_types     text/plain application/javascript application/x-javascript text/javascript text/css application/xml;
            gzip_vary on;
            gzip_proxied   expired no-cache no-store private auth;
            gzip_disable   "MSIE [1-6]\.";
    
            limit_conn_zone $binary_remote_addr zone=perip:10m;
    		limit_conn_zone $server_name zone=perserver:10m;
    
            server_tokens off;
            access_log off;
    
    upstream tomcats{
        ip_hash;
        server 39.107.104.52:8080;
        server 39.107.104.52:8081;
        
    }
    
    server
        {
            listen 80;
            server_name localhost;
            index index.html index.htm index.jsp;
            root  /www/server/myadmin;
          
            
            #error_page   404   /404.html;
            include enable-php.conf;
     location / {
        proxy_pass http://tomcats;
          
        }
        
     location ~ \.(gif|jpg|png)$ {
           expires 30d;
           access_log off;
            root /www/server/myadmin;
        }
    #一键申请SSL证书验证目录相关设置
        location ~ \.well-known{
            allow all;
        }
    
    
            access_log  /www/wwwlogs/access.log;
        }
    include /www/server/panel/vhost/nginx/*.conf;
    }
    
    

    这个配置文件中,我们必须要了解的内容有两部分,文件中的  upstream tomcats中就是我们的tomcat地址,也就是nginx接收到动态请求后要转发的地址,在这里我除了宝塔安装的tomcat外,又手动安装了一个tomcat,分别在8080和8081端口,手动安装tomcat请参考第三部分中的tomcat安装,如果你不想手动安装,在这里可以只写一个,将另一个删掉,让Nginx只做动静分离,ip_hash是指绑定用户IP,防止出现更换tomcat后session的问题,每个ip只能访问到其中的一个tomcat,删除掉这句话后刷新几次页面你会发现你会访问不同的tomcat。server中的 root  /www/server/myadmin  指的就是我们存放静态文件的根目录,当有静态请求时nginx将在这个目录下寻找文件。 location ~ \.(gif|jpg|png)$指的是当请求以.gif|.jpg|.png结尾时判定其为静态文件,直接去根目录寻找,其他请求则转发至tomcat,当然你也可以把css,js等文件判定为静态文件,只需将.js,.css加在里面即可。配置完毕后,就可以去访问项目了,例如http://39.107.104.52:8080/shop/可以修改为http://39.107.104.52/shop/进行访问了,这时你会发现项目中的图片不见了,因为所有的以.gif|.jpg|.png结尾的文件请求都被nginx拦截了,我们需要将这些文件放在nginx的根目录下,同时更改项目中的图片路径,例如路径/picture/1.png指的就是/www/server/myadmin/picture/1.png。在这里对于nginx具体的配置就不细说了,如果你对nginx感兴趣,可以在下面留言给我,我发详细的视频教程给你。

    2.手动安装Nginx

    因为我使用的是宝塔linux安装的Nginx,并未亲自操作手动安装Nginx,所以推荐给大家另一篇博客https://www.cnblogs.com/taiyonghai/p/6728707.html,有兴趣的朋友们可以去看看。关于Nginx的配置,可以参考我上面写的。

    六.docker的安装

    Docker 要求 CentOS 系统的内核版本高于 3.10 ,查看本页面的前提条件来验证你的CentOS 版本是否支持 Docker 。

    1.更新软件库

        yum update -y

    2.安装docker

        yum install docker -y

    3.启动docker服务

        service docker start

    4.其它相关命令

        service docker restart  // 重启docker服务
        service docker stop     // 停止docker服务
    

     

     

    在mac上重置系统再次连接时出现了下面这种情况,

    执行ssh-keygen -R 你要访问的IP地址即可。 

    博客到这里就结束啦,希望可以帮到大家,最后还要跟大家说的一件事就是在使用阿里云服务器时,出现任何问题都可以在控制台提交工单,让阿里的程序员们来帮你解决问题,但是工单的回复速度可能会比较慢。

     

     

     

     

     

     

     

     

     

     

        ​​​​

    展开全文
  • 在家如何搭建服务器

    万次阅读 2016-04-16 23:37:38
    学生党,没钱买服务器,然后想想,家里宽带12m了,家里还有台电脑(到时可以买台服务器的),自己如果能把家里的电脑作为服务器的话,12m带宽,如果服务器好点的话,相比于买某某某云服务器啥的,不强太多了。...

    学生党,没钱买服务器,然后想想,家里宽带12m了,家里还有台电脑(到时可以买台服务器的),自己如果能把家里的电脑作为服务器的话,12m带宽,如果服务器好点的话,相比于买某某某云服务器啥的,不强太多了。

    先说下大概原理。光纤猫是电信的,配有公有地址,平时都是用的nat连接,本质就是端口映射,如果将光纤猫的某个固定端口,映射到自己电脑上的服务端口(就80吧),那应该就ok的,虽然正常是dhcp分配的,临时映射端口,但是提供映射的应该还是有的吧。想到原理,当然上网查下了。看到网上有说有的电信会配的私有地址,只要打电话,要求给公有地址就行,放心了一点点。然后,也看到了有人成功了,既然有人成功了,那么,自己也肯定ok的。那就写下过程吧。

    首先,直接输入网关地址登录进去了(猫后面有帐号密码的,忘了的话,可以复位。之前一直担心自己忘了拨号的帐号密码了,复位会不会要我重新输入,结果是我多想了)我的型号是HGU421N v3,进去倒是发现障碍挺少的,直接看到一个应用的,端口是应用层的了,估计就这货了,然后,进来,发现直接写着nat服务器,好吧,都帮你想好要干嘛了啊,要不要这么顺利啊。

    好吧,既然这么顺利,就直接设置了,添加还是看得懂的,外部端口就是猫的端口,也就是客户端访问的时候的端口了。初始和终止的,估计就是范围了,不管了,先都一样再说了,强迫症就直接设置80了,两个都是80比较好看,然后,还要选择服务器,默认的就什么telnet之类的,不想鸟,直接其他服务器(好像也就取个名字的,要不要搞成这样)地址的话,当然就是电脑的地址了。然后,确认了。设置好后,首先是进入状态,copy了下公有地址了(没有的话,就网上搜下查看自己的共有ip啥的就行了),输入,发现成功了,当时喜悦之情是有的,然后,电脑ok了,那就手机了,输入发现也ok,继续高兴中,然后,断了下wifi,用的数据,结果,over了。没连接了。出问题就要先想原因了,首先,就apache(我用的wamp)是不是受限了,反正跟着网上的搞了很多httpd.conf的东西,把所有的deny from all改成allow了,还是不行,既然不行,那就只剩下防火墙了,电脑防火墙是关着的,就是不清楚是不是自己没关好,所以也测试了下把防火墙打开,电脑和手机都连不上去了,错误和刚才的是一样的。那就只能是猫的防火墙了。但是,一打开,发现猫的防火墙只有高中低,不能关闭,坑爹呢,老子不要你的保护。也想过是不是之前网上说的超级管理员的问题,但是,浏览了挺久的,发现说要有这个管理员才能修改,另一个账户只能查看,但是,我的可以直接修改啊,虽然不知道为啥,但是应该还是感谢之前来帮我们装的,可能隔不远,和我爸都认识了,就都一键搞定了吧,不像网上那些的,讨了老半天还不说的。但是现在出问题了,就在想会不会是这个问题的,后来由于操作麻烦,懒得搞就没去破解(也是因为没找到是因为破解这个才能访问的)。期间还去把apache的权限搞了一遍,也重启了n遍,最后一个不经意间,想,反正也不能用,映射其他端口试试。就把端口改成了8520,然后,意外的发现可以了。好吧,这个时候,才是真的应该欢呼的时候了。

    解决了问题,再来想原因就很简单了吧。是到一千还是两千是熟知端口来着,反正到8000以上的,肯定是自定义端口了,估计最低级别就是屏蔽这些端口了。当然,也有可能,nat映射,这些熟知端口就默认没拿来映射(是不是就先放着,明天去查完资料再补充,有点困了,先去睡觉)。(现在只是光纤猫,如果是主机那不就废了么)所以,端口映射的时候,最好还是选择自定义端口的。

    展开全文
  • 在自己的电脑上搭建一个服务器

    万次阅读 2016-01-21 22:47:16
    我们为了更能逼近现实,就想着自己的javaweb程序发布后,外网的同学能够访问我们的网站,难道我们去买空间,去买域名嘛,其实也没必要,我们只是学习,测试之用,在自己的电脑上搭建一个服务器完全可以满足要求。...
  • 新手搭建服务器详细过程

    万次阅读 多人点赞 2018-01-14 08:37:27
    最近突然想使用下服务器,为后续工作准备,作为之前Linux都没有玩过的我感觉很费劲,所以就是无数次的百度,最终将服务器搭建好了;期间整理了一些资料,和过程上也做了些笔记,这里和大家分享下,希望对和我一样的...
  • 前言: 一、本文以Centos7.6为系统镜像;...接下来开始环境的搭建。 1.JDK的安装和配置环境变量 1.1)找到适合自己服务器版本的JDK,下载到本地,然后使用WinScp或Xftp工具拖放到服务器指定目录,如/usr/local...
  • 一分钟快速搭建属于自己的服务器

    万次阅读 2017-12-16 17:54:09
    在做移动端应用的时候,本地服务器生成的localhost地址不能在移动端打开,因此我们还需要一个反向代理,下面就来讲一下如何快速搭一个属于自己用的服务器。1.本地服务器本地服务器有很多种方式生成,使用自动化构建...
  • 这篇文章将从购买服务器一直到最后网站完成备案,详细说明整个过程,就算是不懂编程的人照样可以拥有属于自己的服务器和网站 必备条件: 1:电脑一台 2:网络 3:money(30块钱) 4:身份证 一:首先选择阿里云、...
  • 我们为了更能逼近现实,就想着自己的javaweb程序发布后,外网的同学能够访问我们的网站,难道我们去买空间,去买域名嘛,其实也没必要,我们只是学习,测试之用,在自己的电脑上搭建一个服务器完全可以满足要求。...
  • Android开发者如何搭建服务器

    万次阅读 多人点赞 2017-09-01 11:19:21
    Android 开发者有时也可以通过开发javaweb项目写接口然后供APP 调用,这时候你就需要一个服务器去发布接口项目,那么Android 开发者如何搭建自己的服务器?首先你需要选择一个服务器提供商,现在市面上有很多云端...
  • PHP搭建服务器

    万次阅读 2018-11-08 12:24:21
    1. 认识互联网 思考:平常我们上网的时候是怎么实现的? 引入:上网其实打开浏览器,然后输入一个URL,最后就看到了网站打开的效果。 ...定义:URL:Uniformed Resource Location,统一资源定位。...
  • python搭建服务器

    千次阅读 2015-12-01 00:17:14
    python搭建服务器以快捷著称,实际上,我们也可以使用python搭建简易的服务器。
  • linux系统下搭建服务器

    千次阅读 2018-08-28 16:15:41
    jdk1.8下载 wget --no-check-certificate --no-cookies --header &amp;quot;Cookie: oraclelicense=accept-securebackup-cookie&amp;quot; ...
  • linux搭建服务器

    千次阅读 2018-08-05 20:34:48
    linux搭建服务器 这里以腾讯云服务器为例,进入腾讯云官网,注册帐号(qq帐号也可登录) 进行实名认证(一般一两个小时就可认证通过)。 购买腾讯云针对学生的一元云服务器(每天中午12:00开抢),不用担心,你...
  • ADSL与公司网络区别就是,公司一般都是百兆以上的光纤,一般都是静态IP,而家用网络都是动态的公网IP,所以公司网络可以搭建自己的服务器,而家用网络搭建服务器公网是访问不到的。下面将给大家介绍一种内网服务器...
  • 饥荒TGP联机版免费搭建服务器教程

    千次阅读 2020-05-02 01:20:51
    文章目录1、饥荒简介2、如何免费搭建2.1、找到联机大厅,选择搭建服务器2.2、下载服务器资源2.3、下载完成后,先别急着登入服务器,要先配置一些东西2.3.1、准备:找到 我的文档-Klei-DoNotStarveTogetherRail 这个...
  • 搭建服务器学生版(tomcat+java+mysql)

    千次阅读 2018-04-12 14:40:24
    搭建属于自己服务器的同学看过来哟。 上篇文章给大家介绍了一个简单的外网映射工具ngrok,但是呢外网映射工具毕竟功能很有局限性,搭建自己的服务器才可以做到真正意义上的为所欲为。下面我就跟大家分享一下我的...
  • 前言 一年前的现在,我知道了有Linux这个东西。当时是社团的一个大神师兄给我们做了培训,花了两个晚上,100+页的PPT,可惜当时课上能听进去的人太少了,我最终也只是熟悉了这个环境,但并没有什么深刻的认识。...
  • 在Windows下搭建服务器

    千次阅读 2018-05-20 19:42:28
    在Windows下搭建服务器 写这篇博客的原因 自己在2016年的时候,因为需要,自己在windows下搭建了一个服务器,在搭建过程中遇到了许多问题,不过最终还是成功的搭建了,但当时并没有记录下搭建过程,现如今自己想...

空空如也

1 2 3 4 5 ... 20
收藏数 512,207
精华内容 204,882
关键字:

搭建服务器