云服务器搭建部署全流程

2023-05-16

本篇记录在centos7.3上部署web项目的全流程及一些问题的解决方案

工具准备

putty安装及使用

  • PuTTY可用来在windows上连接linux服务器,可去PuTTY官网下载安装
  • 如果不想每次登录都输入密码,可在快捷方式目标后追加
     -load  -ssh -l root -pw 123456
    

    root是用户名,123456是密码


    设置putty自动登录

    这样每次登录输入用户名即可登录

  • 设置每30秒给服务器发送空包,保持连接不中断 (如不需要请忽略)


    保持putty连接
  • 保存session,每次双击即可连接


    保存puttysession

pscp安装及使用

  • pscp可用来在windows与linux间传输文件,可在PuTTY官网下载安装

  • windows上传文件至linux

     pscp .\dev.war root@xxxx.xx.xx.xx:/usr/deva/downloads
    

    windows从linux下载文件

    pscp -r root@xxxx.xx.xx.xx:/usr/src "D:/test"
    

    上述操作针对文件无需 -r,针对目录需要加 -r
    root是你的用户名,xxxx.xx.xx.xx为你的服务器ip

环境安装及配置

serverjre(或jdk)安装及配置

  • serverjre可去oracle官网下载,可在linux中wget下载,也可以windows上下载好通过pscp上传至服务器
  • 解压tar.gz
    tar -zxvf serverjre-9.0.4_linux-x64_bin.tar.gz -C /opt/serverjre --strip-components 1
    
    --strip-components N 可以去除压缩文件的N级目录
  • 配置环境变量
    vim /etc/profile 添加下列配置
    # serverjre config
    
    export JAVA_HOME=/opt/serverjre
    export JRE_HOME=${JAVA_HOME}
    export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib
    export PATH=${JAVA_HOME}/bin:$PATH
    
    # end serverjre config
    
  • 测试
    source /etc/profile
    
    上述命令使配置生效,java -version 测试是否成功

mysql安装及配置

  • 在mysql官网下载对应的yum源安装包
  • 参考A Quick Guide to Using the MySQL Yum Repository安装即可
  • 上述过程如果想用yum-config-manager可用如下命令安装
    yum -y install yum-utils
    
  • 配置远程连接数据库
    授权远程连接
     GRANT ALL PRIVILEGES ON *.* TO root@"1.1.1.1" IDENTIFIED BY "youpassword" WITH GRANT OPTION;
    
    1.1.1.1为你要授权的ip,如果不限制ip,则为 “%”
    重载授权表
    FLUSH PRIVILEGES;
    
    查看授权
    select user,host from mysql.user;
    
  • 云服务器安全组配置


    无法连接mysql

    授权成功后仍不能远程连接,需要配置安全组规则
    这边使用的是阿里云,去阿里云控制台给实例添加安全组规则


    添加安全组规则

    选择协议类型为mysql 3306 (此处为默认配置,如果你的端口改变,请选择自定义)
    授权对象为你想要授权的ip,如果不限制,则为 0.0.0.0/0
  • 如果添加规则后,仍然报上述错误,检查服务器防火墙
    查看防火墙是否开启
    systemctl status firewalld
    
    如果开启,关闭防火墙查看是否可连接,判断是否是防火墙的问题
    systemctl stop firewalld
    
    如果是防火墙的问题且需要开启防火墙,请配置防火墙规则

Tomcat 安装及配置

  • 从tomcat官网下载对应版本
  • 解压
    tar -zxvf apache-tomcat-9.0.16.tar.gz --strip-components 1 -C /opt/tomcat
    
  • 去tomcat的bin目录启动tomcat
    cd /opt/tomcat/bin
    ./startup.sh
    
  • 外部尝试访问tomcat根目录,无法访问,添加安全组规则
    授权外部访问8080端口
    开启防火墙的配置开放8080端口
  • 配置tomcat管理员页面权限
    cd /opt/tomcat/conf
    vim tomcat-users.xml
    

    取消底部role 及user的注释,按需配置角色


    tomcat角色权限

    三个rolename 分别对应tomcat
    tomcat角色权限

    在未配置前可点击进去会出配置教程,按需配置
    server status 页面可查看服务器当前资源使用情况

    manager app 页面可查看当前session,可部署项目(直接上传文件部署)

项目部署

上传war包至服务器

  • pscp .\qqq.war root@1.1.1.1:/opt/tomcat/webapps/
    
  • 重启tomcat

tomcat无法启动常见问题

  • 跟踪日志
    tail -f ../logs/catalina.out
    
  • org.apache.catalina.LifecycleException: Failed to initialize component
    检查端口(8080替换为你自己的端口)是否被占用
    netstat -lnp|grep 8080
    
    如被占用可查看该进程详情(2310为占用进程号)
    ps 2310
    
    kill 该进程尝试重新启动tomcat
    kill -9 2310
    
  • 无任何异常,启动极慢或卡死
    Tocmat的Session ID是通过SHA1算法计算得到的,计算Session ID的时候必须有一个密钥。为了提高安全性Tomcat在启动的时候回通过随机生成一个密钥,没有足够的熵来产生随机数
    安装熵服务增大熵池并启动该服务
    yum install rng-tools
    systemctl start rngd
    

去除端口号和目录名访问项目

  • 去端口号,将 8080 改为默认的 80
    修改 tomcat/conf 目录下的 server.xml
    <Connector port="8080" 这一行 8080 改为 80
  • 注意安全组和防火墙需要开放80端口
  • 去项目名,无路径映射至自己的项目名
    修改 tomcat/conf 目录下的 server.xml
    找到 <Host name="localhost" appBase="webapps" 这行
    在Host标签内添加
    <Context path="" docBase="myProject" debug="0"></Context>
    
    虚拟路径也可在此处配置
    如果没有效果或者发现不带项目名访问仍然是去ROOT,检查配置文件是否有拼写错误,比如 docBase写成了doBase

项目无法连接mysql常见问题

  • 检查项目中mysql用户名密码是否正确
  • 连接数据库的url如果是通过服务器的ip(包括127.0.0.1)连接
    需要在安全组/防火墙中配置3306端口授权该ip
    需给mysql对应用户名在此ip授权
    • 如仍未解决,参考此文章,未验证是否有效
    • 如果再不行就别坚持了,localhost多好?

项目中数据乱码

  • 登录mysql查看字符集设置
    show variables like '%char%';
    
    字符集

    发现有latin1编码

  • 修改配置文件
    vim  /etc/my.cnf
    
    在 [mysqld] 下添加
    character_set_server=utf8
    
    重启mysql服务
    systemctl restart mysqld
    
    再次检查字符集变为utf8,则不再乱码
    如仍看到乱码请检查数据库中是否是乱码,将乱码数据清理掉即可

将 tomcat 加入 systemctl 服务设置开机自启动

  • 在 tomcat/bin 目录下创建 setenv.sh 文件添加
    JAVA_HOME=/opt/java
    CATALINA_PID=$CATALINA_BASE/temp/tomcat.pid # 如不需要请忽略
    
    tomcat启动时会创建pid文件存储tomact进程id,该路径可自定义
    此处耽误两三天,可能是tomcat 9 bug,无法生成pid文件,调试catalina.sh时CATALINA_PID的重定向输出并没有执行,更换为tomcat 8.0.53 之后正常生成。为了避免后续问题,也已将jdk换为1.8版本。此处如果不是必须使用pid文件可忽略,因为公司项目需要使用此pid文件,所以耽误两三天来处理此问题。
  • 在 /etc/systemd/system 目录下创建 tomcat.service 添加
    [Unit]
    Description=Apache Tomcat Web Application Container
    After=syslog.target network.target
    
    [Service]
    Type=forking
    CATALINA_PID=/opt/tomcat/temp/tomcat.pid
    ExecStart=/opt/tomcat/bin/startup.sh
    ExecStop=/opt/tomcat/bin/shutdown.sh
    PrivateTmp=True
    User=root
    Group=root
    
    [Install]
    WantedBy=multi-user.target
    
    之后就可以使用
    systemctl start tomcat  # 启动tomcat
    systemctl stop tomcat   # 停止tomcat
    systemctl status tomcat # 查看tomcat状态
    systemctl enable tomcat # 设置开机启动tomcat
    systemctl is-enabled tomcat # 查看tomcat是否开机自启动
    systemctl disable tomcat    # 关闭开机自启动
    

稍做优化

参考tomcat优化详细教程

jvm参数优化

vim /opt/tomcat/bin/catalina.sh

第一行添加

set JAVA_OPTS='-server -Xms1024m -Xmx1024m'

-server 启用服务器模式,提升性能

-Xms 初始内存
-Xmx 最大内存
二值根据服务器配置设置,建议二值相等,避免在GC后调整堆大小带来的压力

开启线程池

vim /opt/tomcat/bin/server.xml

取消红框的注释


取消此处注释

根据服务器配置调整

maxThreads="800"   # 线程池最大线程数
minSpareThreads="100"   # 最小线程数
maxQueueSize="100"   # 最大等待数

给Connector指定线程池


指定线程池

Connector 关键属性

maxConnections="800"  # 并发请求数
acceptCount="200" # 最大等待数

神器APR

参考CentOS安装配置APR
安装依赖

yum install apr-devel apr apr-util

安装tomcat-native

yum install tomcat-native

配置环境变量

vim /etc/profile
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/apr/lib
source /etc/profile

配置成功重启tomcat可见


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

云服务器搭建部署全流程 的相关文章

  • [CentOS] 四、安装 ranger

    四 安装 ranger 作者 xff1a 解琛 时间 xff1a 2020 年 9 月 15 日 ranger ranger 安装Nerd Fonts字体 span class token function git span clone h
  • java实习两个月总结

    实习两个月总结 刚开始实习的时候激情满满 慢慢的激情也退却了 在杭州月薪3000干了两个月我自己都觉得不可思议 杭州的物价大家有目共睹 先谈谈收获 认识了java8的新特性 了解了开发中常用的工具和工具包 持续集成部署的jenkins sw
  • chrome各种版本下载地址:

    Download older versions of Google Chrome for Windows Linux and Mac Download older versions of Google Chrome for Windows
  • idea 注入mapper报错报红的几种解决方案

    方法1 xff1a 为 64 Autowired 注解设置required 61 false 使用 64 Autowired 注解时 xff0c 若希望允许null值 xff0c 可设置required 61 false 像这样 xff1a
  • 当node遇上Egg遇上TypeScript

    快速入门 通过骨架快速初始化 xff1a npx egg init type 61 ts showcase cd showcase amp amp npm i npm run dev 上述骨架会生成一个极简版的示例 xff0c 更完整的示例
  • fastjson 导致 swagger 页面无法显示

    问题 xff1a 增加swagger后 xff0c 无法访问 http localhost 8080 swagger ui index html xff0c 去除fastjson配置后确可以访问 相关配置信息 xff1a lt fastjs
  • springboot发送HTTP请求

    1 添加依赖 使用RestTemplate进行发送请求 xff0c 添加相关依赖 lt 发送请求的依赖 gt lt dependency gt lt groupId gt org apache httpcomponents lt group
  • 启动docker容器一致提示端口被占用,即使是已经删除相关端口的进程

    1 重启docker服务 systemctl restart docker 2 启动对应的docker容器 docker start tomcat 3 如果提示端口已被占用 xff0c 则查看占用进程并杀死 netstat ntulp gr
  • windows上的IDEA连接Docker

    docker中勾选 查看连接
  • MySQL将字段的值进行拼接

    应用场景 xff1a 1 同张表分组时将某个字段的值进行拼接 将学生按班级分组 xff0c 对同一班级的学生姓名进行拼接 SELECT classid group concat stu name as stu names FROM stud
  • Maven异常:Could not find artifact

    Maven异常 xff1a Could not find artifact 执行maven install的时候出现了以下异常 xff1a INFO Scanning for projects ERROR ERROR Some proble
  • git获取最新的tag

    获取git最新的tag标签 git tag n sort 61 taggerdate head n 1 这样获取到的会有合并信息 如果只需要获取到tag名称 xff0c 也可以这样 git tag sort 61 taggerdate he
  • 使用阿里云的函数计算来实现OSS资源的打包下载

    文档地址 xff1a 如何使用函数计算将多个文件打包下载到本地 对象存储 OSS 阿里云 计算函数可以通过对外公网域名进行访问 xff1a 计算函数的参数有几个 xff1a bucket xff1a 使用的OSS的bucket xff0c
  • linux系统上nodejs 报错:node: /lib/x86_64-linux-gnu/libm.so.6: version `GLIBC_2.27‘ not found

    原因 xff1a 因为当前系统不支持GLIBC 2 27 xff0c 而且node的版本过高 xff0c 但是后来降低了版本还是报这个错误 xff0c 后来发现低版本的软链接在 usr bin xff0c 而高版本的软链接在 usr loc
  • 使用nvm控制nodejs版本

    原因 xff1a 由于项目需要用到两个版本的nodejs xff0c 如果只是一个版本的nodejs的话 xff0c 其中一个项目就会报错 xff0c 所以需要用到nvm进行nodejs版本控制 xff0c 使用不同版本的nodejs来进行
  • opencv 实战案例 (一)

    目录 xff1a 1 用 Canny 算子检测图像轮廓提取车道线任务 xff08 Canny xff09 2 用 findContours 发现硬币轮廓任务 Canny 43 findContours 3 用概率霍夫变换检测车道线任务 Ca
  • 企业微信-构造网页授权链接实现登录

    文档地址 xff1a 构造网页授权链接 接口文档 企业微信开发者中心 注意 xff1a 1 redirect uri xff1a 回调链接地址 xff0c 需要使用urlencode对链接进行处理 2 scope xff1a 如果需要获取成
  • dpkg: 处理软件包 xxx (--configure)时出错解决方法

    问题 xff1a dpkg 处理软件包 libicu dev configure 时出错 xff1a 依赖关系问题 仍未被配置 dpkg 依赖关系问题使得 libxml2 dev amd64 的配置工作不能继续 xff1a libxml2
  • oracle 删除表以及回复数据

    找回删除的表 select object name original name partition name type ts name createtime droptime from recyclebin WHERE original n

随机推荐

  • 银行卡信息查询

    银行卡bin 银行卡信息 请移步到github xff1a https github com burningmyself bank
  • ProcessDefinition是干这个用的

    流程定义ProcessDefinition是对业务过程的完整描述 xff0c 例如请假流程定义 报销流程定义等 流程定义的管理包括部署流程定义 查询流程定义 查看流程定义图和删除流程定义 1 部署流程定义 使用RepositoryServi
  • 截取字符串的三种方法

    众所周知 xff0c java提供了很多字符串截取的方式 下面就来看看大致有几种 span class hljs number 1 span span class hljs built in split span 43 正则表达式来进行截取
  • Iterator主要有三个方法:hasNext()、next()、remove()详解

    一 Iterator的API 关于Iterator主要有三个方法 xff1a hasNext next remove hasNext 没有指针下移操作 xff0c 只是判断是否存在下一个元素 next xff1a 指针下移 xff0c 返回
  • @ModelAttribute用法详解

    转载于 xff1a https blog csdn net harry zh wang article details 57329613 之前项目中并自己并没有怎么使用到过 64 ModelAttribute这个注解 xff0c 接手一个老
  • mysql除法运算保留小数的用法

    参照 xff1a https www cnblogs com owenma p 7097602 html 在工作中会遇到计算小数而且需要显现出小数末尾的0 xff0c 我们会用到DECIMAL这个函数 xff0c 这是一个函数非常强悍 xf
  • IDEA—点击文件代码与目录自动同步对应

    关注微信公众号 xff1a CodingTechWork xff0c 一起学习进步 引言 在使用IDEA的时候 xff0c 我们Ctrl 43 Shift 43 F搜索文件后 xff0c 总是要慢慢找文件在哪个包路径下 如查看路径顶端 xf
  • springboot打包完成之后无法读取到resources下的资源文件

    File privateKeyFile 61 ResourceUtils getFile classpath wx pfx PrivateKey privateKey 61 getPrivateKey privateKeyFile priv
  • 接口签名实现拦截的两种方式

    1 采用spring的aop思想进行拦截 需要自定义注解 xff0c 然后定义切面 xff08 五大类 xff09 然后在定义 xff0c 可以获取所有的参数 2 拦截器的实现方式 自定义拦截器 xff0c 然后对拦截器进行配置即可 配置
  • Java程序员利器,lombok神搭档:delombok插件

    Lombok是一款非常实用Java工具 xff0c 它可以帮助开发人员减少样板代码 xff0c 使开发人员专注业务逻辑 xff0c 在Java界几乎无人不知 但也有一些明显的缺点 xff0c 例如 xff1a 对插件强依赖 xff0c 在团
  • C++bind函数

    1 基本概念 bind函数定义在头文件 functional 中 可以将 bind 函数看作一个通用的函数适配器 xff0c 它接受一个可调用对象 xff0c 生成一个新的可调用对象来 适应 原对象的参数列表 C 43 43 Primer
  • C++值的分类 —— 摘自维基百科

    在C 43 43 11 xff0c 对于值的分类 xff0c 要考虑标识 xff08 identity xff09 与可移动性 xff08 movability xff09 xff0c 二者的组合产生了五种分类 xff1a 基础值类型 左值
  • pytorch 深度学习入门代码 (一)线性回归代码实现

    34 34 34 一维线性回归代码实现 34 34 34 import torch from torch autograd import Variable import matplotlib pyplot as plt import tor
  • pytorch 深度学习入门代码 (三)Logistic 回归代码实现

    span class hljs string 34 34 34 Logistic 回归的代码实现 34 34 34 span span class hljs keyword import span matplotlib pyplot spa
  • pytorch 深度学习入门代码 (四)多层全连接神经网络实现 MNIST 手写数字分类

    net py span class hljs keyword import span torch nn span class hljs keyword as span nn span class hljs class span class
  • CentOs云服务器部署项目全流程

    目录 序工具准备putty安装及使用pscp安装及使用 环境安装及配置serverjre 或jdk 安装及配置mysql安装及配置Tomcat 安装及配置 项目部署上传war包至服务器tomcat无法启动常见问题去除端口号和目录名访问项目项
  • 快速上手MybatisPlus

    首先附上mybatis plus官方文档 本篇参考官方文档记录spring mvc项目接入mybatis plus的全流程及一些问题的解决方案 xff0c 建议优先参考官方文档 开始之前 xff0c 假设数据库已建好并已能正常访问 依赖配置
  • FTP工具类一

    public class FTPClientUtils public static String FTPCONFIG 61 34 config ftpConfig properties 34 private static String LO
  • 在 SourceTree 中使用 git rebase (变基)

    原始状态 假如我们要在 master 分支上进行开发 xff0c 在远端的 master 分支上右键 xff0c 检出 一个自己的开发分支 dev 1 做一些开发 xff0c 提交到本地 xff0c 不要推送 xff08 push xff0
  • 云服务器搭建部署全流程

    本篇记录在centos7 3上部署web项目的全流程及一些问题的解决方案 工具准备 putty安装及使用 PuTTY可用来在windows上连接linux服务器 xff0c 可去PuTTY官网下载安装如果不想每次登录都输入密码 xff0c