美文网首页IT与工作Android Tech全栈工程师
Android程序员搭建一个属于自己的服务器,不再求各种公共AP

Android程序员搭建一个属于自己的服务器,不再求各种公共AP

作者: foxleezh | 来源:发表于2017-10-09 09:41 被阅读4837次

声明:本文已授权我就是马云飞公众号独家发布

前言

最近在跟小伙伴合作开发一款app,苦于没有合适的公共api接口,所以决定自己搭建一个服务器,目前已实现注册、登录,爬虫定时拉取闲鱼首页更新数据库。

app传送门 一个极致的集大成App

搭建服务器需要些什么工作

本文所介绍的服务器都是入门级别的,适合移动端同学自己搭建玩玩,还没有达到商业开发水平,大牛请莫见怪。

我们搭建服务器主要有以下几个步骤:

  • 1.搭建开发环境,IntelliJ + spring-boot + mybatis
  • 2.搭建数据库,mysql + navicat
  • 3.搭建运行环境,tomcat + 阿里云

一、搭建开发环境

本文安装环境是基于Windows的,Linux和Mac环境也都大同小异,我就不一一介绍了,如果有问题,可以在github上留言 https://github.com/foxleezh/

1.1 IntelliJ安装

作为Android开发,基本都习惯使用Android Studio,而IntelliJ跟它几乎是一模一样,因为Android Studio正是基于它开发的,所以它是Android程序员开发服务器最好的选择。

首先我们需要去下载一个IntelliJ安装包,https://www.jetbrains.com/idea/download/
这个软件是需要注册的,不过也可以试用。

1.2 配置IntelliJ

第一次运行会进入下面界面,我们选择Darcula风格,然后一直Next就可以


之后会让我们新建项目,这里我们先不着急,先git clone https://github.com/G-Joker/WeaponApp ,把项目拉下来放在任意一个目录下,然后再选择Import Project

选择我们刚才clone下来的目录,注意这里要选Server,Client是客户端项目

点击Ok即进入IntelliJ主界面,这个大家都比较熟悉了,跟Android Studio几乎一样,我们先进行一些界面配置,调整下字体大小,自动导包等,Ctrl+Alt+S





配置一下JDK目录



这些步骤完成后,开发环境即配置好了,但是项目还不能运行,因为还没有配置数据库

二、搭建数据库

2.1 安装MySQL

到官网下载比较慢,所以我就直接在百度上下载了,直接百度搜索 “mysql 下载”,就可以了,我下载的文件为mysql-5.7.17.msi,点击直接安装,在第二步Choosing a Setup Type的时候,选择Server only



然后一直Next,在输入数据库密码的时候输入App123,A大写,为什么输入这个,因为WeaponApp项目里面配置的密码是这个



之后就一直Next,MySQL安装成功,下面我们讲数据库操作

2.1 用navicat操作数据库

navicat是个工具,可以直接到百度下载,这个软件也需要注册,不过直接输入注册码就是了,我有现成的NAVH-WK6A-DMVK-DKW3,注册成功即可打开,然后连接数据库,密码是App123



新建一个数据库test,为什么叫test,因为WeaponApp里配置的数据库叫test



接下来导入数据,本来这里表是需要一个个建的,为了省事,我已经把项目的表结构都导出来了,在Server项目下有个tools目录,里面有个data.sql的文件,我们可以用navcat直接导入所有的表

这样,我们数据库就搭建好了,接下来就可以运行项目了

三、搭建运行环境

3.1 直接运行项目

跟Android一样,Server也有debug模式和release模式,我们先讲debug模式,这个其实比较简单,首先确定根目录下的gradle.properties里DEVELOP_MODE=true,然后点击运行即可


然后我们就可以在浏览器里输入http://localhost:8080/home/taobaolist ,当然还有其他接口,可以参照doc目录下的接口文档

3.2 运行在tomcat

我们的项目需要挂到tomcat上,这样服务就可以一直开着了,毕竟开发工具你不可能一直开着。首先我们需要去下载一个tomcat,下载地址http://mirrors.hust.edu.cn/apache/tomcat/tomcat-9/v9.0.0.M27/bin/apache-tomcat-9.0.0.M27.exe 。下载好后直接运行,中间有一步选择JDK路径


接下来去把项目release包打出来,我们打开IntelliJ,首先确定根目录下的gradle.properties里DEVELOP_MODE=false,然后在Terminal中输入gradlew assemble就可以了,然后在build/libs下有个Server-0.0.1-SNAPSHOT.war,这就是我们打出的release包


我们先把这个war包改个名字,叫api.war,然后找到tomcat的安装目录,里面有个目录叫webapps,把里面的文件全部删除,然后把api.war拷贝进去,这时候api.war包会自动解压成文件夹,说明服务器启动了,如果没有自动解压,那我们可以到tomcat的bin目录下运行Tomcat9w.exe,然后点击下面的start


这样我们就可以在浏览器输入http://localhost:8080/api/home/taobaolist 直接访问了,这里注意一点,和直接debug运行不同,地址8080后要加一个api的路径,这个名字跟war包的名字相同

至此,一个本地版的服务器就搭建起来了,如果其他电脑和你的电脑在同一个局域网内,就可以通过ip地址访问服务器了,比如你的ip是192.168.1.101,那么其他电脑就可以用http://192.168.1.101:8080/api/home/taobaolist 访问,如果要外网也可以访问,那就要搭建云服务器了,接下来我将讲如何搭建阿里云。

3.3 搭建阿里云

搭建阿里云之前,你需要去买一个阿里云的服务器,我是买的免费6个月的,一共9.9,地址https://free.aliyun.com/ ,买了之后再进入这个页面,它会叫你去开通各项免费服务,这里主要是 “云服务器 ECS”,其他的东西暂时用不着,开通的时候会让你选择什么操作系统,我选的是Windows Server 2012中文版,主要是平时开发用的Windows,你们可以根据自己的情况来,开通好后就可以前往控制台了

阿里云控制台提供了远程控制功能,但是不太方便,因为一是浏览器比较卡,二是传输文件不太方便,所以我一般是直接用电脑远程连接,首先win+R,输入mstsc


这时候我们需要输入远程ip地址,这个在阿里云的控制台上有,点击概览,然后选择服务器

比如我的ip是47.95.198.174,然后输入到刚才Win+R打开的界面,进行如下操作即可

这样我们阿里云的服务器就可以访问本地C盘和D盘上的内容了,而且速度也比浏览器快很多,接下来我们讲如何在阿里云上搭建服务器运行环境。

3.4 阿里云运行环境

阿里云服务器就相当于一台电脑,所以运行环境的搭建跟我们在本地其实是一样的。我们先要安装MySQL,这个跟本地一样,我们可以去服务器的浏览器下载,也可以从本地拷贝过去


本地拷贝


本地拷贝的速度是比较慢的,因为远程连接也是通过网络,所以我建议能从浏览器下载的都从浏览器下载,除非我们要发布war包之类的才用本地拷贝。安装完MySQL后安装navicat,新建数据库,导入数据,安装tomcat,拷贝war包到webapps下,这些都跟在本地一样。这些工作做完后,我们在服务器的浏览器上输入http://localhost:8080/api/home/taobaolist ,如果能访问说明服务器环境搭建成功

3.5 在外网访问接口

阿里云服务器运行环境搭建好后,我们在外网用http://47.95.198.174:8080/api/home/taobaolist 是没法访问的,因为阿里云控制台有安全控制,不是所有端口都可以在外网访问的,这时我们需要去阿里云控制台设置端口


这样我们就可以在外网用http://47.95.198.174:8080/api/home/taobaolist 访问了,当然我们可以把端口8080改成80,这样我们就可以用http://47.95.198.174/api/home/taobaolist 访问了,这个需要我们配置服务器的tomcat,打开tomcat下面的conf目录,里面有个server.xml
    <Connector port="8080" protocol="HTTP/1.1"
               connectionTimeout="20000"
               redirectPort="8443" />

将port改成80即可,然后同样需要在阿里云控制台配置80端口

如果你想把ip地址变成域名访问,比如http://app.foxleezh.me/api/home/taobaolist ,那还要去买域名,做一下域名映射就行了,这个比较简单,本文就不介绍了

小结

本文主要介绍如何搭建一个简单的服务器供Android客户端访问,主要有以下几个方面:

1.搭建开发环境,主要是用IntelliJ开发,框架是Spring-Boot和Mybatis
2.搭建数据库,数据库用MySQL,操作工具是navicat
3.搭建运行环境,挂载容器用Tomcat,然后用阿里云作为云服务器

相关文章

网友评论

  • 萌萌的白天:推荐打 成镜像 这样 在服务器 直接下载镜像就行了
  • 程序员飞飞:之前用Eclipse搞过一些,看来得用IDEA了,服务器买的阿里云,域名和mysql等都搭好了,就等开车了
  • c994e2c71f7a:你好!我运行了server项目后报错了,能请教一下吗?

    org.springframework.jdbc.BadSqlGrammarException:
    ### Error updating database. Cause: com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '' at line 1
    ### The error may involve com.app.server.mapper.TaobaoMappper.insertAll-Inline
    ### The error occurred while setting parameters
    ### SQL: REPLACE INTO taobao (user, title, image, price, time, region, sign) VALUES
    ### Cause: com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '' at line 1
    ; bad SQL grammar []; nested exception is com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '' at line 1
  • itkluo88:D:\___work\web\WeaponApp-master\Server\src\test\java\com\app\server\DemoApplicationTests.java
    Error:(3, 17) java: 程序包org.junit不存在
    Error:(4, 24) java: 程序包org.junit.runner不存在
    Error:(5, 45) java: 程序包org.springframework.boot.test.context不存在
    Error:(6, 47) java: 程序包org.springframework.test.context.junit4不存在
    Error:(8, 2) java: 找不到符号
    符号: 类 RunWith
    Error:(9, 2) java: 找不到符号
    符号: 类 SpringBootTest
    Error:(12, 10) java: 找不到符号
    符号: 类 Test
    位置: 类 com.app.server.DemoApplicationTests
    itkluo88:报错啊
  • 孤傲的南方人:Error:(11, 2) java: 找不到符号
    符号: 类 RestController
    Error:(7, 52) java: 程序包org.springframework.beans.factory.annotation不存在
    Error:(8, 47) java: 程序包org.springframework.web.bind.annotation不存在
    Error:(9, 47) java: 程序包org.springframework.web.bind.annotation不存在
    导入文章git的项目编译报这个错误 网上弄了好久还是没解决。。。
  • 899541e25fa5:Error:(5, 20) java: 程序包cn.jpush.api不存在等等共计16个错误..........
  • 2bda71aed274:正好想给自己的应用搭个服务器,看到这篇文章真的是帮大忙了!赞一个!
  • yyg:浏览器输入http://localhost:8080/home/taobaolist 无法连接:joy:
  • d8ceff4eefc6:"C:\Program Files\Java\jdk1.8.0_40\bin\java" "-javaagent:C:\Program Files\JetBrains\IntelliJ IDEA 2017.2.5\lib\idea_rt.jar=50901:C:\Program Files\JetBrains\IntelliJ IDEA 2017.2.5\bin" -Dfile.encoding=UTF-8 -classpath "C:\Program Files\Java\jdk1.8.0_40\jre\lib\charsets.jar;C:\Program Files\Java\jdk1.8.0_40\jre\lib\deploy.jar;C:\Program Files\Java\jdk1.8.0_40\jre\lib\ext\access-bridge-64.jar;C:\Program Files\Java\jdk1.8.0_40\jre\lib\ext\cldrdata.jar;C:\Program Files\Java\jdk1.8.0_40\jre\lib\ext\dnsns.jar;C:\Program Files\Java\jdk1.8.0_40\jre\lib\ext\jaccess.jar;C:\Program Files\Java\jdk1.8.0_40\jre\lib\ext\jfxrt.jar;C:\Program com.app.server.BaseApplication
    错误: 找不到或无法加载主类 com.app.server.BaseApplication
    这么会这样?ServletInitializer这个类爆红
  • Eric_feng:其他都配好了,就是导入项目时间出了问题,可能是方式不对,是第一次导包,导入之后工程只有main和Test文件夹,跑不起来,怎么解决
  • d3f4872355c6:为什么我在直接运行项目的时候会出现“java:找不到符号”和java程序包不存在的错误,请指教
    foxleezh:@棒棒糖_eaee 你可以把日志发到我的邮箱,foxleezh@gmail.com
  • 浮萍落英:你好,完整的按步骤下来,前面都没什么大问题,到最后外网访问不了呢,是不是漏了什么步骤呢。。
    foxleezh:@浮萍落英 确认下server.xml有没有把端口改为80,然后阿里云有没有把80端口权限打开
    浮萍落英: @foxleezh 可以的呢,我直接改的80/80,外网访问不了
    foxleezh:@浮萍落英 阿里云服务器本地能访问吗
  • 清索:作者写得很清楚了,只是在搭建过程中还是会遇到一些细节问题:我在本地用http://localhost:8080/api/home/taobaolist 可以获取数据,但是在阿里云服务器的浏览器里输入同样的http://localhost:8080/api/home/taobaolist,显示404错误。
    错误如下:
    HTTP Status 404 - /api/home/taobaolist

    type Status report

    message /api/home/taobaolist

    description The requested resource is not available.

    Apache Tomcat/7.0.40
    我用Tomcat初始页面测试,阿里云浏览器里输入localhost:8080可以正常显示,在本地浏览器输入120.78.51.28:8080(阿里云公号)也能正常显示。
    作者有没有遇到这样的问题?!
    清索:@foxleezh
    情形1:我在阿里云的webapps里放原来的文件夹,外网访问,输入120.78.51.28:8080,可以正常显示网页。说明tomcat是正常运行的。
    情形2:我在阿里云上的webapps里删除原来的所有文件夹,放了api.war,成功解压了api文件夹,访问http://localhost:8080/api/home/taobaolist 或是外网访问http://120.78.51.28:8080/api/home/taobaolist会显示404错误(8080有设置)。也怀疑是war问题。但是在我电脑上,访问http://localhost:8080/api/home/taobaolist是可以获取数据的。所以不能确定在哪个环节出现错误。包名字确认没错,用的是api.war.
    foxleezh:我刚才试了,有浏览器里也无法访问http://120.78.51.28:8080/api/home/taobaolist,我怀疑是不是war包名字错了,api这个名字必须跟放在webapps里的名字一样
    foxleezh:@清索 你是说外网可以访问,阿里云本地却不能访问?
  • 买太狼:最近刚好也在研究spring-boot
    foxleezh:github上有好多比较牛的项目可以参考
  • dididiwd:厉害 看的我一脸懵逼
    dididiwd:@foxleezh ~~~
    foxleezh::fearful: 不是已经是傻瓜式教程了吗
  • 最怕认真:现在搭建Android项目是很轻松的,主要是缺乏内容,应用已经泛滥了
    最怕认真:@foxleezh 你的服务器要承受高并发,这种机会,其实并不多,你的内容决定了你的app的欢迎程度,不说高了,并发1000以上的app,都算是牛逼了
    foxleezh:搭建是轻松,但是要达到易开发,易维护,并且性能好还是不容易的,如果真的是商业级开发你就能体会到
  • 爱学习的星辰:很实用,比普通的笔记更好!
    foxleezh:可以收藏一下,项目里有markdown文档
  • af895871935f:使用spring boot内嵌web容器更简单些
    af895871935f: @foxleezh 起步依赖spring-boot-starter-web里默认就是用tomcat,打成jar包,java -jar xxx.jar运行就可以了
    foxleezh:有时间研究下
  • 江边独钓:真牛!
    foxleezh:对于后端我还是小白,哈哈
  • wust丶杰:很实用
    foxleezh:能帮到你就好
  • 会思慧想:可用性强,赞赞
    foxleezh:可以把项目拉下来,自己在本地调试下
  • 心若冰清_:这个就比较赞了
    foxleezh:谢谢,希望能帮到你

本文标题:Android程序员搭建一个属于自己的服务器,不再求各种公共AP

本文链接:https://www.haomeiwen.com/subject/gxqdsxtx.html