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

2023-10-27

腾讯云技术社区-博客主页持续为大家呈现云计算技术文章,欢迎大家关注!


作者:刘潇龙

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

第一步,登录

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

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

sudo /bin/su - root

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

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

第二步,下载安装jdk。

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,然后解压

tar vzxf jdk.tar.gz

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

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

末尾加上:

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,在末尾增加(其实只要拉到文件末尾,去掉注释改一下就可以了)

<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文件,写入如下值:

<?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

<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的环境变量:

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中,写到

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

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

~ 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]标签下,增加客户端的字符编码

[client]
default-character-set=utf8

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

[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:

server{
        listen 80;
        server_name localhost;
        location / {
                proxy_pass http://localhost:8080;
        }
}

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

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

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用户登录。

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

ubuntu@VM-5-12-ubuntu:~$ sudo /bin/su - root
root@VM-5-12-ubuntu:~# su - ubuntu
ubuntu@VM-5-12-ubuntu:~$ 

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

相关推荐

【腾讯云的1001种玩法】hadoop伪分布式搭建
【腾讯云的1001种玩法】利用腾讯云搭建实用小工具


此文已由作者授权腾讯云技术社区发布,转载请注明文章出处
原文链接:https://www.qcloud.com/community/article/434193001490839492
获取更多腾讯海量技术实践干货,欢迎大家前往腾讯云技术社区

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

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

  • Tomcat 6找不到mysql驱动

    这里有一个类似的问题 但关于类路径 ClassNotFoundException com mysql jdbc Driver https stackoverflow com questions 1585811 classnotfoundex
  • 如何通过ssh检查ubuntu服务器上是否存在php和apache

    如何通过ssh检查Ubuntu服务器上apache是 否安装了php和mysql 另外如果安装的话在哪个目录 如果安装了其他软件包 例如 lighttpd 那么它在哪里 确定程序是否已安装的另一种方法是使用which命令 它将显示您正在搜索
  • Docker 错误绑定:地址已在使用中

    当我跑步时docker compose up在我的 Docker 项目中 它失败并显示以下消息 启动用户层代理时出错 监听 tcp 0 0 0 0 3000 绑定 地址已在使用中 netstat pna grep 3000 显示这个 tcp
  • 如何查看 Ubuntu 上的 Binutils 版本?

    我已经搜索过 但没有找到一个选项来告诉我我的 Ubuntu 上有哪个版本的 binutils 或者至少我不知道如何解释它 gcc v 没有透露任何有关 binutils 的信息 ld v 告诉我GNU ld GNU Binutils for
  • Pycharm 中的 Traitlets.traitlets.TraitError

    我是Python的初学者 我面临以下问题 每当我启动 pycharm 社区版 版本 5 0 3 时 Python 控制台无法启动并显示以下错误 usr bin python2 7 usr lib pycharm community help
  • git 错误:无法处理 https

    当我尝试使用 git clone 时https xxx https xxx我收到以下错误我不处理协议 https 有人可以帮我吗 完整消息 dementrock dementrock A8Se git 克隆https git innosta
  • 有人可以解释一下 Postgresql 角色、Postgresql 用户和 Linux 用户之间的关系吗?

    我正在尝试在 Ubuntu 14 服务器上设置 Postgres 9 3 此时我感到非常沮丧 我以前使用过 MySQL 所以我对一般数据库概念以及客户端 服务器模型等很满意 我从两个用户开始 root 和 sam 我 作为 sam 我使用
  • Ubuntu systemd 自定义服务因 python 脚本而失败

    希望获得有关 Ubuntu 中的 systemd 守护进程服务的一些帮助 我写了一个 python 脚本来禁用 Dell XPS 上的触摸屏 这更像是一个问题 而不是一个有用的功能 该脚本可以工作 但我不想一直启动它 这就是为什么我想到编写
  • Rstudio 更有意义的窗口标题

    我在 Ubuntu 16 04 下使用 R studio 版本 1 0 143 窗口标题仅显示一个非常无信息的 RStudio 我希望至少有当前选项卡的名称 或者最好是与此选项卡对应的文件的完整路径 在 Windows 下 完整路径似乎出现
  • OpenSSL 未签名证书静默

    遇到了麻烦 还有其他一些相关的帖子 但没有那么具体 我正在尝试为开发机器默默地生成证书 这些是我最初运行的命令 但被要求输入密码 openssl genrsa des3 out server key 1024 openssl req new
  • Nginx 作为负载均衡器,具有 75% 和 25% 加权路由

    我是 Nginx 新手 我有两台服务器 serverA 和 serverB 我希望 75 的请求发送到 serverA 其余 25 的请求发送到 serverB 这可能吗 使用nginx加权路由 stream upstream stream
  • BASH 中的空函数

    我正在使用 FPM 工具创建 deb 包 此工具在从支持的文件中删除包之前 之后创建 不幸的是FPM生成的bash脚本包含这样的函数 dummy 该脚本退出时出现错误 语法错误 意外 BASH 不允许空函数吗 哪个版本的 bash linu
  • PostgreSQL 错误:无法连接到数据库 template1:​​无法连接到服务器:没有这样的文件或目录

    我需要创建数据库 首先我运行 sudo su postgres then createdb test 我不断收到此错误 createdb could not connect to database template1 could not c
  • Eclipse Kepler 在 64 位 ubuntu 上冻结

    几天前我刚刚将 Ubuntu 升级到 14 04 并在此过程中从 32 位切换到 64 位 从那时起 Eclipse 就变得非常不稳定 运行几分钟后 它将开始随机冻结越来越长的时间 特别是在代码完成时 已经必须禁用它 而且在剪切 粘贴时 偶
  • 无法连接到 Azure Ubuntu VM - 公钥被拒绝

    我们在 Azure 上使用 Ubuntu VM 一段时间了 很少遇到任何问题 然而 其中一台虚拟机最近出现了问题 出乎意料的是 Ubuntu VM 开始拒绝公钥 ssh i azure key email protected cdn cgi
  • 有没有办法在 TypeScript 2+ 中全局添加类型定义?

    我有一堆简单的 ts files 不是项目 即独立的 ts 脚本 他们使用一些 Node js 功能 TypeScript 和节点类型定义通过安装 npm install g typescript npm install g types n
  • 在 Android 2.2 上运行 HelloCordova 时找不到类“android.webkit.WebResourceResponse”

    我尝试按照本教程进行操作 http docs phonegap com en 2 7 0 guide getting started android index md html Getting 20 Started 20with 20 An
  • 优化 Keras 以使用所有可用的 CPU 资源

    好吧 我真的不知道我在说什么 所以请耐心听我说 我正在使用 Theano 后端运行 Keras 以在 MNIST 图像上运行基本的神经网络 目前只是一个教程 过去 我一直使用我的旧 HP 笔记本电脑 因为我有 Windows 和 Ubunt
  • 如何为 Python 2 安装 pip

    I run python version and get Python 2 7 3 I run pip version and get pip 1 5 from usr local lib python3 2 dist packages p
  • 终端从包含空格的变量传递参数

    在终端中如何将包含空格的字符串作为参数传递 它实际上跳过了空格后面的部分 只取第一个单词 word soccer ball shell exec casperjs test js word word 那么我怎样才能转义空白它只运行这个命令

随机推荐

  • termux基本使用教程[通俗易懂]

    初始化 下载并初始化termux 安装vim 安装编辑器vim pkg install vim 解决中文乱码问题 在home目录下 新建 vimrc文件 vim vimrc 添加内容如下 set fileencodings utf 8 gb
  • 华为机试题67-24点游戏算法

    描述 给出4个1 10的数字 通过加减乘除运算 得到数字为24就算胜利 除法指实数除法运算 运算符仅允许出现在两个数字之间 本题对数字选取顺序无要求 但每个数字仅允许使用一次 且需考虑括号运算 此题允许数字重复 如3 3 4 4为合法输入
  • flex实现简单计算机程序,Macromedia Flex 制作计算器源码和制作步骤

    这个计算器是由两个部分组成 一个前台界面的MXML文件 一个后台控制器的AS文件 mxml文件负责显示计算器的界面 as文件负责处理用户发送的信息并计算结果 在这个教程中我们主要学习 list The Application class T
  • 音乐小程序项目

    目录 一 开放前的准备 1 项目展示 2 项目分析 1 音乐小程序项目页面结构图 2 音乐小程序项目目录结构 3 音乐小程序项目目录结构 3 项目初始化 二 标签页切换 1 任务分析 2 前导知识 1 swiper组件编写滑动页面结构 2
  • 字符检测:C语言ispunct()函数--判断字符是否为标点符号或特殊字符

    ispunct 函数用来检测一个字符是否为标点符号或特殊字符 其原型为 int ispunct int c 参数 c 为需要检测的字符 返回值 若 c 为标点符号或特殊符号 非空格 非数字和非英文字母 返回非 0 值 否则返回 0 注意 此
  • 第二次 的面试题目 (自闭!!)

    1 qt 调试时遇见过的报错信息 1 遇到过 最常见的是 没有加头文件 2 未定义错误 2 在linux上使用过gdb吗 怎么使用 什么是GDB 能干啥 gdb是GNU开源组织发布的一个强大的Linux下的程序调试工具 一般来说 GDB主要
  • 云函数(go)部署-腾讯云

    目录 1 云函数入口 2 上传本地函数代码 2 1 进入创建云函数 2 2 定义函数名称 选择运行环境 2 3 上传本地云函数 2 3 配置高级属性 可选填 2 4 点击完成 云函数代码没有问题 则可正常部署 2 5 函数管理 重新上传部署
  • Antv L7 + mapbox 实现简单地图场景

    实现场景 1 创建地图场景 2 自定义marker样式 3 mapbox 实现3D地图 代码实现 1 创建地图场景 div div
  • postman接口测试工具,实现Jmeter+Ant+Jenkins持续集成

    一 中小型公司 中小型项目 jmeter Ant Git jmx Jenkins持续集成 Postman Newman Git Jenkins持续集成 大中型公司 接口自动化框架 接口自动化平台 二 Jmeter常用组件 执行顺序 测试计划
  • 微信小程序支付完整流程(前端)

    微信小程序中 常见付款给商家的场景 下面列出企业小程序中 从0起步完整微信支付流程 一 注册微信支付商户号 由上级或法人注册 接入微信支付 微信商户平台 此商户号 需要由主管及更上级领导进行注册 会成为公司收款账户 不是由前端程序员注册 不
  • XSS和CSRF攻击

    一 XSS攻击 跨脚本攻击 是一种普遍的Web应用安全漏洞 这类漏洞能够使得攻击者嵌入恶意脚本代码到正常用户会访问到的页面中 当正常用户访问该页面时 则可导致嵌入的恶意脚本代码的执行 从而达到恶意攻击用户的目的 本质是 网站没有对恶意代码进
  • C++ 常量

    常量是固定值 在程序执行期间不会改变 这些固定的值 又叫做字面量 常量可以是任何的基本数据类型 可分为整型数字 浮点数字 字符 字符串和布尔值 常量就像是常规的变量 只不过常量的值在定义后不能进行修改 整数常量 整数常量可以是十进制 八进制
  • 企业微信cgi-bin/gateway/agentinfo接口存在未授权访问漏洞 附POC

    文章目录 企业微信cgi bin gateway agentinfo接口存在未授权访问漏洞 附POC 1 企业微信cgi bin gateway agentinfo接口简介 2 漏洞描述 3 影响版本 4 fofa查询语句 5 漏洞复现 6
  • GNU汇编程序中的分段(.section伪操作)

    GNU汇编程序中的分段 lt 1 gt section伪操作 section Starts a new code or data section Sections in GNU are called text a code section
  • JQ插件OrgChart实现组织结构图

    最近在做一个OA系统的组织结构图 需求如下 第一眼看起来让人联想到脑图 思维导图大家都比较熟悉 但这不是脑图 是组织结构图 有添加 编辑 删除等功能 随后我就找了一些插件 1 jsMind 脑图 查看文档 jsMind目前有左右伸展的 没有
  • docker镜像和仓库

    文章目录 一 docker镜像 1 镜像的分层结构 1 分层结构案例 2 容器层详解 2 镜像的构建 1 创建一个Dockerfile 2 构建镜像 3 查看镜像的分层结构 4 镜像的缓存特性 3 Dockerfile基本语法 1 dock
  • mysql 5.7安装详细步骤(图片+文字,图片为主)【软件安装+环境配置】

    首先双击软件开始安装 加载完成出现这个页面 选择Custom gt next 找到并选择x64位的 点击绿色箭头 选中 gt 更改安装位置 我安装的是T盘 你们可以安装在D盘 E盘等等 不建议C盘 C盘崩了数据就损坏 Mysql gt ne
  • 调用阿里云语音合成Python版SDK

    一 阿里云介绍 阿里云创立于2009年 是全球领先的云计算及人工智能科技公司 致力于以在线公共服务的方式 提供安全 可靠的计算和数据处理能力 让计算和人工智能成为普惠科技 阿里云服务着制造 金融 政务 交通 医疗 电信 能源等众多领域的领军
  • 简单四边形不等式优化dp(下)

    广义决策单调性 强烈推荐题解视频 设 f k i f k i fk i 表示前
  • 【腾讯云的1001种玩法】JavaWeb项目部署指南

    腾讯云技术社区 博客主页持续为大家呈现云计算技术文章 欢迎大家关注 作者 刘潇龙 如何快速直接地在腾讯云上部署JavaWeb项目 第一步 登录 我选了ubuntu系统 账户是ubuntu 于是在终端里 ssh ubuntu aa bb cc