首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >【腾讯云的1001种玩法】JavaWeb项目部署指南

【腾讯云的1001种玩法】JavaWeb项目部署指南

原创
作者头像
葛尧
修改于 2017-06-19 11:10:37
修改于 2017-06-19 11:10:37
5.5K00
代码可运行
举报
文章被收录于专栏:葛尧的专栏葛尧的专栏
运行总次数:0
代码可运行

如何快速直接地在腾讯云上部署JavaWeb项目。

第一步,登录

我选了ubuntu系统,账户是ubuntu——,于是在终端里:ssh ubuntu@aa.bb.cc.dd 之后输入密码,登陆成功。

腾讯云是默认不提供root账户的,但是没有root账户,我们寸步难行,所以第一件事,用腾讯云提供的命令,切换到root账户:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
sudo /bin/su - root

如果没有root账户,接下来的步骤你都很难进行。

之后我们进入我惯用的一个文件夹:cd /usr/local

第二步,下载安装jdk。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
wget http://download.oracle.com/otn-pub/java/jdk/8u121-b13/e9e7ea248e2c4826b92b3f075a80e441/jdk-8u121-linux-x64.tar.gz?AuthParam=1490750662_b8ecb2cd247de00b452a7363e9763c98

这个链接需要你用chrome浏览器,右击页面任意部分,选择检查-网络,然后对linux 64位 tar.gz格式的jdk,点击下载,然后看network面板中,请求的链接。

直接右击复制链接是不行的。

这里下了很久很久,大概一个半小时,才把这170兆的jdk下完。可能是因为我只选了1兆的带宽。

之后利用mv命令把这个文件命名为jdk.tar.gz,然后解压

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
tar vzxf jdk.tar.gz

把安装后多出来的新文件夹命名为jdk8。

然后设置环境变量vi /etc/profile

末尾加上:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
export JAVA_HOME=/usr/local/jdk8
export PATH=$JAVA_HOME/bin:$PATH

jdk1.5以上的版本,不用设置CLASSPATH环境变量。

然后执行source /etc/profile

这样jdk就安装完成了,可以输入 java -version查看。

第三步,tomcat

依然是在/usr/local文件夹里,链接是:

wget http://mirrors.hust.edu.cn/apache/tomcat/tomcat-8/v8.5.12/bin/apache-tomcat-8.5.12.tar.gz

之后的步骤如同jdk,解压即可,不需要设置环境变量,之后编辑远程tomcat服务器下的conf/tomcat-users.xml,在末尾增加(其实只要拉到文件末尾,去掉注释改一下就可以了)

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<role rolename="manager-gui"/>
<role rolename="manager-script"/>
<user username="admin" password="password" roles="manager-script"/>
<user username="root" password="password" roles="manager-gui"/>

将上面的password改为自己的密码,注意对于tomcat9来说,不能同时赋予用户manager-script和manager-gui角色。第一个角色可以让你通过Maven的tomcat7插件部署项目,第二个角色可以让你进入tomcat的管理页面。

保存tomcat-users.xml。

在tomcat服务器的conf/Catalina/localhost/目录下创建一个manager.xml文件,写入如下值:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<?xml version="1.0" encoding="UTF-8"?><Context privileged="true" antiResourceLocking="false"
         docBase="${catalina.home}/webapps/manager">
             <Valve className="org.apache.catalina.valves.RemoteAddrValve" allow="^.*$" /></Context>

之后可以到tomcat/bin/下面,用./startup.sh来启动了。此时的tomcat运行在8080端口,以前我都是用防火墙将80端口转发至8080解决的,但腾讯云不允许改动防火墙设置。

你可以用lsof -i:80这样的指令来查看端口占用情况。

延伸——(为什么tomcat无法绑定80端口,解决方案,以及更优解):Tomcat默认是绑定8080端口,参考tomcat/conf/service.xml

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<Connector port="8080" protocol="HTTP/1.1"
               connectionTimeout="20000"
               redirectPort="8443" />

你可以把这里的8080改成80,但这样就不能简单的./startup.sh启动了,要用sudo /usr/local/tomcat/bin/catalina.sh(因为linux是默认1024一下的端口不开放的,必须要用权限),但这样时tomcat会提示你找不到java的环境变量:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
Neither the JAVA_HOME nor the JRE_HOME environment variable is definedAt least one of these environment variable is needed to run this program

因为,在catalina.sh中,写到

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
CLASSPATH=
if [ -r "$CATALINA_BASE/bin/setenv.sh" ]; then
  . "$CATALINA_BASE/bin/setenv.sh"
elif [ -r "$CATALINA_HOME/bin/setenv.sh" ]; then
  . "$CATALINA_HOME/bin/setenv.sh"
fi

也就是说,你需要在bin文件夹下,vim setenv.sh,在这里添加你的Java环境变量: export JAVA_HOME=/usr/local/jdk执行。

但其实这样,并不太好,tomcat只是java的东西,如果你还有php的,.net的,Python的别的程序也想要80端口怎么办?

其实你可以就让tomcat在8080端口,用Nginx解决,我会放在第五步说。

第四步:安装mysql:

傻瓜操作,只管输入 sudo apt-get install mysql-server

服务器自己就会跑起来安装,中间会让你输入密码,比如我输入mysql

安装成功后,会自动运行,我们检查一下:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
~ ps -aux|grep mysql
mysql     3205  2.0  0.5 549896 44092 ?        Ssl  20:10   0:00 /usr/sbin/mysqld
conan     3360  0.0  0.0  11064   928 pts/0    S+   20:10   0:00 grep --color=auto mysql

接下来我们改一下MySql的默认字符集

用vi打开MySQL服务器的配置文件my.conf

~ sudo vi /etc/mysql/my.conf

此时这个文件里其实没有什么内容,直接拉到底部复制粘贴就可以了。

在[client]标签下,增加客户端的字符编码

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
[client]
default-character-set=utf8

在[mysqld]标签下,增加服务器端的字符编码

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
[mysqld]
character-set-server=utf8
collation-server=utf8_general_ci

此时的MySQL只会侦听127.0.0.1:3306的连接,由于我只有一台云服务器,这样显然是安全且合适的。

第五步,Nginx

Nginx可以绑定80端口。Nginx的安装好像众说纷纭,我是看了一下2篇文章安装成功的。

http://www.jianshu.com/p/7cb1a824333e

https://segmentfault.com/a/1190000007803704

这两篇,都是好文章,第一篇后半段有一些必须的库,第二篇中间有安装方法,注意那里的make前面没有#。

Nginx有很多配置文件,真正有用的在/etc/nginx下面,这里nginx.conf是主配置文件,默认会把conf.d这个文件夹include进去,你只需要在conf.d下面写一个配置文件就行。

进入 conf.d,然后vim tomcat.conf在里面写一个server:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
server{
        listen 80;
        server_name localhost;
        location / {
                proxy_pass http://localhost:8080;
        }
}

之后,你可以测试一下你的配置文件,nginx -t -c /etc/nginx/nginx.conf

重启nginx,这个重启也分为2种,看你的是通过apt-get安装的还是解压的,我是解压的,就得先杀死进程,

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
root@VM-5-12-ubuntu:/etc/nginx/conf.d# ps -ef | grep nginx 
root     25044     1  0 13:31 ?        00:00:00 nginx: master process ./nginx
nobody   25045 25044  0 13:31 ?        00:00:00 nginx: worker process
root     28981 26238  0 14:36 pts/1    00:00:00 grep --color=auto nginx

这样可以看到master进程的pid,把它kill:kill -QUIT 25044

之后再去你的nginx文件夹里,进入sbin文件夹,执行nginx文件。

这样,基本上就行了。

第六部,配置ssh key

建立SSH信任,在自己的电脑上使用 ssh-keygen -t rsa命令生成公私钥,一般会存放在~/.ssh文件夹下,把你的公钥,即 id_rsa.pub上传至服务器:

scp ~/.ssh/id_rsa.pub ubuntu@aa.bb.cc.dd:~/

之后利用sudo命令把它放进.ssh文件夹下,并改名为 authorized_keys

基本上就这些了,我试了在root用户的~/.ssh文件夹下面也放我的公钥进去,但是依然不能默认root用户登录。

最后复习一下用户切换指令:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
ubuntu@VM-5-12-ubuntu:~$ sudo /bin/su - root
root@VM-5-12-ubuntu:~# su - ubuntu
ubuntu@VM-5-12-ubuntu:~$

接下来等待备案完成即可。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
暂无评论
推荐阅读
spring security oauth2 allowFormAuthenticationForClients原理解析
本文主要解析一下spring security oauth2中AuthorizationServerConfigurerAdapter的allowFormAuthenticationForClients的原理
code4it
2018/09/17
1.6K0
聊聊spring security oauth2的password方式的认证
本文主要来聊聊spring security oauth2的password方式的认证
code4it
2018/09/17
2.6K0
聊聊spring security oauth2的几个endpoint的认证
本文就来讲一下spring security oauth2的几个endpoint的认证
code4it
2018/09/17
4K0
Spring security oauth2的认证流程2 原
OAuth2AuthenticationProcessingFilter中作为filter拦截认证会借助tokenExtractor从request中获取token的值,将其转换为Authentication 对象。
用户1499526
2019/08/20
1.1K0
3. spring security & oauth2
解释看代码字面意思就懂了,没什么特殊的,还可以修改比如登录表单里的用户名和密码的名字,还可以添加各种登录成功之后的handler等等,写法都一样。
MasterVin
2018/08/30
1.2K0
3. spring security & oauth2
spring oauth2 authorization server 配置源码解析
路过君
2024/01/06
6960
基于SpringSecurity实现的基本认证及OAuth2
如果Spring Security位于类路径上,则所有HTTP端点上默认使用基本认证,这样就能使Web应用程序得到一定的安全保障。最为快捷的方式是在依赖中添加Spring Boot Security Starter。
愿天堂没有BUG
2022/10/28
1.2K0
基于SpringSecurity实现的基本认证及OAuth2
SpringSecurity 跨域
​ 浏览器出于安全的考虑,使用 XMLHttpRequest对象发起 HTTP请求时必须遵守同源策略,否则就是跨域的HTTP请求,默认情况下是被禁止的。 同源策略要求源相同才能正常进行通信,即协议、域名、端口号都完全一致。
用户9615083
2022/12/30
2820
4. spring-security-oauth2 server
主要就加了@EnableAuthorizationServer注解告诉spring启动Server模式,github登录跟上篇文章的代码一样,就是封装了一下,因为以前代码的注解ResourceServerProperties会和spring 的EnableAuthorizationServer冲突,加上了EnableResourceServer,配置/api/**底下的资源是需要权限的,重写AuthenticationManager这个方法很重要,目的是将web登录和oauth登录的manager共享,不然只能有一方生效,这个想了解的可以读一读源码,一时解释不太清楚。
MasterVin
2018/08/30
1.1K0
4. spring-security-oauth2 server
从零开始的Spring Security Oauth2(三)
上一篇文章中我们介绍了获取token的流程,这一篇重点分析一下,携带token访问受限资源时,内部的工作流程。 @EnableResourceServer与@EnableAuthorizationServer 还记得我们在第一节中就介绍过了OAuth2的两个核心概念,资源服务器与身份认证服务器。我们对两个注解进行配置的同时,到底触发了内部的什么相关配置呢? 上一篇文章重点介绍的其实是与身份认证相关的流程,即如果获取token,而本节要分析的携带token访问受限资源,自然便是与@EnableResource
程序猿DD
2018/03/26
1.8K0
从零开始的Spring Security Oauth2(三)
实战!Spring Boot Security+JWT前后端分离架构认证登录,居然还有人不会?
前后端分离不同于传统的web服务,无法使用session,因此我们采用JWT这种无状态机制来生成token,大致的思路如下:
爱撒谎的男孩
2023/08/28
5.1K0
实战!Spring Boot Security+JWT前后端分离架构认证登录,居然还有人不会?
OAuth2.0实战!玩转认证、资源服务异常自定义这些骚操作!
感觉如何?是不是很酸爽?很显然这返回的信息不适合前后端交互,别着急,下面介绍解决方案
爱撒谎的男孩
2023/08/28
6230
OAuth2.0实战!玩转认证、资源服务异常自定义这些骚操作!
Spring Security入门到实践(一)HTTP Basic在Spring Security中的应用原理浅析
上面的两点是应用安全的基本关注点,Spring Security存在的意义就是帮助开发者更加便捷地实现了应用的认证和授权能力。
itlemon
2020/04/03
2.4K0
Spring Security入门到实践(一)HTTP Basic在Spring Security中的应用原理浅析
我扒了半天源码,终于找到了Oauth2自定义处理结果的最佳方案!
https://github.com/macrozheng/springcloud-learning/tree/master/micro-oauth2
macrozheng
2020/08/04
3.6K0
实战!Spring Boot Security+JWT前后端分离架构登录认证!
Spring security这里就不再过多介绍了,相信大家都用过,也都恐惧过,相比Shiro而言,Spring Security更加重量级,之前的SSM项目更多企业都是用的Shiro,但是Spring Boot出来之后,整合Spring Security更加方便了,用的企业也就多了。
码猿技术专栏
2024/01/29
1.3K0
实战!Spring Boot Security+JWT前后端分离架构登录认证!
Spring Security 6.x 一文快速搞懂配置原理
Spring Security框架看似比较复杂,但说到底,框架中的各种安全功能,基本上也就是一个个Filter(javax.servlet.Filter)组成的所谓“过滤器链”实现的,这些Filter以职责链的设计模式组织起来,环环相扣,不过在刚接触Spring Security框架时不必盯着每个Filter着重去研究,我们首要的目的是学会如何对Spring Security进行配置,很多人,特别是新手,在看过官方文档中配置示例代码(如下所示)之后,在没有足够背景知识的情况下,都会对这个http.build()方法感到莫名的困惑,想要定制开发也不知从何下手,本文主要对整个Spring Security配置过程做一定的剖析,希望可以对学习Spring Sercurity框架的同学所有帮助。
fullstackyang
2024/05/27
1.6K0
Spring Security 6.x 一文快速搞懂配置原理
spring security自定义指南
AuthenticationManager接口有个实现ProviderManager相当于一个provider chain,它里头有个List providers,通过provider来实现认证。
code4it
2018/09/17
1.6K0
spring security authorization server token端点配置跨域访问
在网页端跨域访问spring-security-oauth2搭建的授权服务器,以ClientCredentials授权模式获取token,发生跨域请求失败。
路过君
2021/12/07
9580
附DEMO| 绝活!Spring Security过滤器就该这么配置
以前胖哥带大家用Spring Security过滤器实现了手机验证码认证,今天我们来改良一下验证码认证的配置方式。这绝对是绝活666,不再看、点赞一波吗?天天白嫖,晚上睡得着觉?
码农小胖哥
2022/04/06
3950
SpringSecurity 遗留小问题
​ 我们前面都是使用@PreAuthorize注解,然后在在其中使用的是hasAuthority方法进行校验。SpringSecurity还为我们提供了其它方法例如:hasAnyAuthority,hasRole,hasAnyRole等。
用户9615083
2022/12/30
4220
推荐阅读
相关推荐
spring security oauth2 allowFormAuthenticationForClients原理解析
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验