Linking

Capturing Life & Tech

  • 主页
  • 随笔
  • 关于我
所有文章 外链

Linking

Capturing Life & Tech

  • 主页
  • 随笔
  • 关于我

Linux下部署web服务踩坑记

阅读数:次 2018-03-04
字数统计: 1.5k字   |   阅读时长≈ 5分

目录

1
2
3
4
5
6
7
8
9
10
11
1. 部署准备
1.1 需要环境及软件
1.2 基本步骤
1.3 MySQL安装及设置
2. 踩到的坑
2.1 端口被占
2.2 防火墙开放端口
2.3 MySQL的一些错误
2.4 数据库大小写敏感性
2.5 不同系统间文件夹路径问题
3. 最后

事由

3月1号到某单位部署一个项目,折腾了一天,总算是功德圆满,成功跑起来了。

这是我第一次独立部署项目到Linux服务器上,出现了许多问题,我觉得有必要记录一下。总结是技术积累的必经之路。

期间,还与该单位某领导闹了不愉快;回头想想不值得;职场上还是要加强沟通技巧啊;许多的不愉快都是言语的不恰当引起的。

好了,废话不多说了,下面是记录内容。

1、部署准备

1.1 需要环境及软件

  • war包

  • sql数据

  • Windows连接Linux程序,如xShell,

  • 文件传送程序,如filezilla,

  • jdk Linux版,

  • redis Linux版,

  • MySQL软件Linxu版,

  • tomcat Linux版

1.2 基本步骤

  1. 安装对应版本JDK

注意:一般的Linux发行版本可能已经安装了JDK的开源版本,openjdk,所以首先检查一下Java版本。

1
~# java -version

如果已经安装可用的版本,则可进行下一步,配置环境变量;否则需要先删除该版本,再来下载安装需要的版本。

解压命令:

1
~# tar zxvf jdk...tar.gz 

可以考虑建立链接到 /usr/local,但不建议直接拷贝到该地址,也可以直接在项目文件夹中存放。

一般需要将安装路径链接到/usr/local/文件夹下。

配置环境变量:

1
~# vi /etc/profile
1
2
3
4
# 路径视自己的安装路径决定
export JAVA_HOME=/usr/local/java
export JRE_HOME=/usr/local/java/jre 
export CLASSPATH=.:JAVAHOME/lib:JRE_HOME/lib:CLASSPATHexportPATH=JAVA_HOME/bin:JREHOME/bin:PATH

保存退出后,使生效命令:

1
~# source /etc/profile

然后再运行java -version查看是否安装配置成功。

  1. 安装Tomcat并测试服务可用

解压命令:

1
~# tar zxvf apache-tomcat-7.0.65.tar.gz 

可以考虑建立链接到 /usr/local,但不建议直接拷贝到该地址,也可以直接在项目文件夹中存放。

修改配置,vi ~/tomcat/bin/catalina.sh

1
JAVA_OPTS=”-Xms128m -Xmx256m -Xss512k -XX:PermSize=64m -XX:MaxPermSize=128m”

配置内存大小,保存生效。

配置完成后,启动tomcat服务

1
2
3
4
5
6
7
8
# 启动 
./startup.sh
# 停止
./shutdown.sh
# 查看服务
ps -ef|grep tomcat
# 杀死进程
kill -9 5110

启动查看页面是否可见,在logs/下查看catalina.out查看输出日志 。

如果未能访问,有可能是因为端口被占

1
port aready in use

也有可能是防火墙未关闭,端口未开放;有两种解决方式,一种直接关闭防火墙,这样所有端口就都开放了,不推荐,另一种是开放需要的端口,这种方式更安全点。

需开放 80、3306及所部署的服务端口地址。

1
2
3
4
5
6
7
8
9
# 设置8080端口可被访问

# 1.修改文件/etc/sysconfig/iptables
-A RH-Firewall-1-INPUT -m state –state NEW -m tcp -p tcp –dport 8080 -j ACCEPT

# 2. 将iptables服务重启:
service iptables restart
# 或者直接执行命令:
iptables -I INPUT -p tcp –dport 80 -j ACCEPT

vim命令: 复制yy粘贴p整行, 向上翻页ctrl+b向下翻页ctrl+f

  1. 安装MySQL数据库并启动服务

可参考 http://www.runoob.com/mysql/mysql-install.html

  1. 安装Redis并启动服务

可参考 https://www.cnblogs.com/KunGe-13/p/8340309.html

  1. 部署war包并启动Tomcat

将war包丢到webapp目录下,启动tomcat/bin/startup.sh

1.3 MySQL安装及设置

可参考 http://www.runoob.com/mysql/mysql-install.html

数据库执行sql创建数据

进入mysql,运行以下命令执行sql文件,生成数据库表和数据

1
souce ..../data.sql

数据库设置用户名密码

安装后一般是没有用户的,需要设置用户名密码

还需要设置其他用户的访问权限,设置root-%

2. 踩到的坑

2.1 端口被占

  • 问题:port aready in use
  • 解决:修改tomcat/conf/server.xml中的默认端口号,先需要确认修改后的端口未被占用,且在防火墙中开放。

2.2 防火墙开放端口

关闭不好,开关机会改变,永远关闭不安全,所以开放需要的端口。

2.3 MySQL的一些错误

无法访问,3306端口未开放。

2.4 数据库大小写敏感性

Linux发行版中MySQL对大小写敏感,导致代码错误。可修改lower_case_table_names为1,0表示区分大小写。

1
2
3
1.用ROOT登录,修改/etc/my.cnf
2.在[mysqld]下加入一行:lower_case_table_names=1
3.重新启动数据库即可

2.5 不同系统间文件夹路径问题

由于在Windows进行开发,Linux部署时,如果前期的文件夹,如文件上传路径不一致的问题就突显出来了。

解决办法是,在代码中判断平台,然后读取不同的路径;当然如果路径不存在需要创建,Java代码应该能调用系统命令来创建文件夹的。

3. 最后

一些具体的步骤可以自己去搜索,主要记录的自己遇到的问题及解决思路;思想是最重要的,有了思路,问题也就解决了一半。

基本上,先要理清楚思路,大体需要哪些步骤,然后具体的步骤和遇到的问题可以去搜索解决。

重点是遇到问题不要怕,去看log,定位问题,解决之。

部署也是一个程序员需要掌握的技能,而不能仅仅以为是运维的工作就忽视了其重要性。

再次验证了,折腾是技术进步的阶梯。

  • 本文作者: Linking
  • 本文链接: https://linking.fun/2018/03/04/Linux下部署web服务踩坑记/
  • 版权声明: 版权所有,转载请注明出处!
  • operation
  • Linux
  • deploy
  • operation

扫一扫,分享到微信

写在读书节后一天
微信好友城市分布分析
  1. 1. 目录
  2. 2. 事由
  3. 3. 1、部署准备
    1. 3.1. 1.1 需要环境及软件
    2. 3.2. 1.2 基本步骤
    3. 3.3. 1.3 MySQL安装及设置
      1. 3.3.1. 数据库执行sql创建数据
      2. 3.3.2. 数据库设置用户名密码
  4. 4. 2. 踩到的坑
    1. 4.1. 2.1 端口被占
    2. 4.2. 2.2 防火墙开放端口
    3. 4.3. 2.3 MySQL的一些错误
    4. 4.4. 2.4 数据库大小写敏感性
    5. 4.5. 2.5 不同系统间文件夹路径问题
  5. 5. 3. 最后
© 2015-2026 Linking
GitHub:hexo-theme-yilia-plus by Litten
本站总访问量次 | 本站访客数人
  • 所有文章
  • 外链

tag:

  • weather
  • 需求
  • essay
  • basketball
  • olympic
  • nginx
  • APPScan
  • SQl盲注
  • xss
  • Ajax
  • ajax
  • ai
  • agent
  • openclaw
  • ccf
  • Nginx
  • HTML5
  • html5
  • hmtl5
  • sse
  • JavaScriptCore
  • Oracle
  • operation
  • Linux
  • deploy
  • Mac Office
  • markdown
  • ListView
  • GridView
  • MySQL
  • 慢查询
  • mongodb
  • 转置
  • thought
  • network
  • ubuntu
  • NetworkManager
  • RFKill
  • Netplan
  • avatar
  • cocoa
  • blog
  • Gitalk
  • container
  • macvlan
  • docker
  • oracle
  • cookie
  • patch
  • gitea
  • git
  • iOS
  • https
  • 多线程
  • bundle
  • 兼容性
  • HTTP
  • 绘图
  • cs
  • java
  • 效率
  • 快捷键
  • route
  • nodejs
  • pip
  • arcgis
  • arcgis 建模
  • 标识
  • redis
  • read
  • bookList
  • running
  • showdoc
  • disk
  • unit-test
  • D.Wade
  • thoughts
  • duoduo
  • Python
  • python
  • tomcat
  • 读书节
  • session
  • jdk
  • war
  • 加班
  • Android onclick事件监听
  • 正则
  • 手机品牌匹配
  • ntp
  • OpenLayers
  • Geoserver
  • wechat
  • 微信公众号
  • 爬虫
  • WeChat
  • 张靓颖
  • 动漫
  • vpn
  • PPT
  • MarkDown
  • plan
  • 朱赟
  • 极客时间专栏
  • 极客邦
  • 模块化
  • MVC
  • excel
  • NBA
  • kobe
  • team
  • crawler
  • 进度条
  • ssl
  • book
  • anti-stealing-link
  • Agentic Engineering
  • Vibe Coding
  • Software 3.0
  • Andrej Karpathy
  • LLM
  • Programming

    缺失模块。
    1、请确保node版本大于6.2
    2、在博客根目录(注意不是yilia-plus根目录)执行以下命令:
    npm i hexo-generator-json-content --save

    3、在根目录_config.yml里添加配置:

      jsonContent:
        meta: false
        pages: false
        posts:
          title: true
          date: true
          path: true
          text: false
          raw: false
          content: false
          slug: false
          updated: false
          comments: false
          link: false
          permalink: false
          excerpt: false
          categories: false
          tags: true
    

  • GitHub Trending
  • OpenAI ChatGPT
  • Gitee码云
  • 简书
  • CSDN