赞
踩
为了进行部署,把写好的 java web 程序放到 Linux 上,需要先把对应的依赖的软件 (环境) 搭建好,安装一些必要的软件程序
- JDK
- Tomcat
- MySqL
jdk 直接使用包管理器进行安装(基于yum安装)
yum (Yellow dog Updater, Modified) 是 Linux 下非常常用的一种包管理器,主要应用在 Fedora, RedHat, Centos等发行版上,包管理器就好比 “应用商店”,我们可以在应用商店上下载一些 app
yum 起到的功能和 Maven 的依赖管理功能类似,使用 Maven 能帮我们方便的安装一些第三方 jar 包,而 yum 方便我们方便的安装第三方程序
类似地,Github 也能起到 “软件仓库” 的效果,而且确实有些编程语言的包管理工具就是基于 Github (例如 Go 语言)。只不过,Github 不光能用于分发程序,也能管理源码并进行协同开发,而 yum 和 maven 都是仅用于分发程序
查看软件包列表:
yum list | grep [软件包关键字]
yum list 本身是列出所有的可以安装的包,太多了,使用 grep 筛选一下包含 jdk 关键字的结果,否则罗列的内容会非常多, 导致机器很卡
管道:管道是一种古老的 “进程间通信” 方式,在 Linux 指令中可以使用 |
作为管道标记。意思是将前一个指令标准输出的内容,作为第二个指令的标准输入内容
安装软件包(需要管理员权限):
yum install [软件包名字]
卸载软件包(需要管理员权限):
yum remove [软件包名字]
注意事项:
1). 查看 git 安装包
# 由于带 git 关键字的软件包很多, 可以在 grep 的时候加上 -w , 表示全字匹配.
yum list | grep git -w
2). 安装 git
yum install git.x86_64
3). git 的基本使用(和 Windows 版本的 git 是一致的. 只是使用命令行操作)
git clone
git add
git commit
git push
yum install java-1.8.0-openjdk-devel.x86_64
——使用 yum 筛选:devel: development。64 位系统版本。.i686 是 32 位的
——复制包名,yum install 包名。是否进行安装,输入 y
——使用 javac
,或 java -version
验证是否安装成功,如果提示 “java 命令找不到” 则说明安装失败
注意: yum 上的 JDK 是 OpenJDK,是一个开源版本的 JDK,和 Oracle 官方的 JDK 略有差别,此处我们就使用 OpenJDK 即可。安装 Oracle JDK 比较麻烦
由于 yum 源上默认的 Tomcat 7 版本比较旧,所以 Tomcat 8 需要手动安装,不能使用 yum
noarch 意思是不挑系统 (基于 java 跨平台)
1). 下载 Tomcat 压缩包
2). 将压缩包上传到 Linux
将 .zip 直接拖拽到 xshell 中,如果不成功,需要 yum install lrzsz
,拖拽上传,其实使用到了 Linux 上的 rz 命令,这个命令有的系统自带,有的不自带,需要手动装
2). 解压缩 Tomcat
# 使用 unzip 命令解压缩
unzip apache-tomcat-8.5.47.zip
如果 unzip 命令找不到, 则先 yum install unzip
即可
进入 bin 目录,使用 chmod +x *.sh
,将所有 .sh
后缀的文件赋予可执行权限
chmod +x *.sh
sh startup.sh
Tomcat 的目录结构
Linux 的 Tomcat 目录结构和 Windows 完全一致. (就是同一个 zip 包解压缩出来的)
方法 1: 查看 tomcat 进程是否存在
ps aux | grep tomcat
方法 2: 查看端口 8080 是否被绑定
netstat -anp | grep 8080
方法 3: 使用 curl 命令访问默认 demo
curl 127.0.0.1:8080
如果进程存在或者端口状态正确 (LISTEN 状态) 或者能够访问到默认主页,说明启动成功
外网访问 tomcat 默认 demo
在浏览器地址栏中
http://[服务器外网ip]:8080/
如果出现无法访问此网站,原因:
在外网访问这个页面之前需要先开启服务器的 “安全组” 功能
登陆自己的云服务账户, 在主页中找到 控制台 -> 自己的服务器 -> 安全组
需要配置安全组, 允许外部主机访问服务器的 8080 端口
安全组配置界面如果找不到,可以随时咨询云服务器客服
轻量应用服务器:防火墙。ECS 服务器:安全组
可看到默认的页面:
如果启动不成功,cd logs/
在 logs 目录下查看日志信息,用 vim 去看这些日志中的内容,从大的文件开始看
例:日志中说明 8005 被占用,而 Tomcat 启动需要 8080 和 8005
所以我们查看 8005 被谁占用了 netstat -anp | grep 8005
tcp6 0 0 127.0.0.1:8005 :::* LISTEN 1700/java
此条信息说明,8005 被名为 java ,id 为 1700 的进程占用了
使用 ps -aux | grep 1700
查看具体的信息
解决方法:
- 将 1700 干掉
- 将 8005 端口号改成别的(推荐),修改方法如下:
1). 切换至 conf 目录,放的是配置文件
2). grep 8005
,看看这个端口号是在哪里写的,
3). vim server.xml
,修改成没有被使用的端口号
MySQL 同样也可以使用 yum 安装. 但是要修改一些配置参考文章:CentOS 7 通过 yum 安装 MariaDB
注意:创建数据库时为了支持中文,统一使用 utf8mb4 字符集
MariaDB [(none)]> create database demo_db charset utf8mb4;
yum 上的是 MariaDB,和纯正的 MySQL 还不太一样
MariaDB 和 MySQL 的关系,类似于 CentOS 和 RedHat 关系,从使用角度上, MariaDB 和 MySQL 之间都是兼容的
修改 MySQL 登录密码:
mysql_secure_installation
回车,输入新密码,再次输入新密码,四次 y 确认修改密码
命令行登录使用默认 3306 端口的MySQL:
mysql -uroot -p
使用 netstat -anp
命令来显示所有的网络信息,使用 grep 筛选出 mysql 相关的内容,
mysql 服务器;d => daemon,守护进程的意思 (后台进程);端口号:3306
退出 MySQL: Ctrl + d
在数据库运行过程中出现问题, 可以查看 MySQL 的错误日志.
在 MySQL 中通过这个命令, 获取到日志的路径
mysql> show variables like 'log_error';
# 输出结果
+---------------+------------------------------+
| Variable_name | Value |
+---------------+------------------------------+
| log_error | /var/log/mariadb/mariadb.log |
+---------------+------------------------------+
使用 vim 或 less 查看该文件内容即可
less /var/log/mariadb/mariadb.log
MySQL 中除了错误日志, 还有很多其他类型的日志. 详细可以参考
https://www.cnblogs.com/f-ck-need-u/p/9001061.html
查看当前编码方式:
show variables like 'character%';
进入 etc 目录修改 my.cnf 文件(win 中是 my.ini,Linux 是 my.cnf)
cd /etc
ll
vim my.cnf
在 [client] 下加:
[client]
default-character-set=utf8
在 [mysqld] 最下面加:
default-storage-engine=INNODB
character-set-server=utf8
collation-server=utf8_general_ci
重启 MySQL 服务:
service mysqld restart
部署
工作中涉及到的 “环境”
把程序拷贝安装到生产环境上, 这个过程称为 “部署”,也叫 “上线”
这个过程需要拷贝对应的 .class 文件和依赖的资源文件 (各种配置文件,html等)
一旦程序部署成功,那么这个程序就能被外网中千千万万的普通用户访问到
换句话说,如果程序有 BUG,这个 BUG 也就被千千万万的用户看到了
部署过程至关重要,属于程序开发中最重要的一环,一旦部署出现问题,极有可能导致严重的事故 (服务器不可用之类的)
为了防止部署出错,一般公司内部都有一些自动化部署工具 (如 Jenkins 等),当前我们先使用手工部署的方式来完成部署
在云服务器的 mysql 中,建库建表
输入密码连接数据库,创建数据库,将项目 db.sql 的代码复制到云服务器的数据库中
create databases java_blog charset utf8mb4; --记得字符集
use java_blog;
本地的数据库、端口号、用户名、密码和云服务器的数据库,可能是不同的
本地数据库,是你安装的时候设置了密码
云服务器的数据库是默认没密码,如果没有修改过密码,设置为 “” 即可
切换到项目的主目录 (包含 pom.xml的目录),使用 maven 打包即可,打成 war 包
<!-- 设置包的类型,包的名字 -->
<packaging>war</packaging>
<build>
<finalName>blog_system</finalName>
</build>
双击 package
此时在 target 目录下就会生成对应的 war 包
曾经我们主要是在 IDEA 中通过图形化工具来使用 maven ,事实上 maven 本质是一个基于命令行的工具
曾经在 IDEA 上进行的 maven 操作在 Linux 中同样也可以通过命令行来完成
将 war 包拷贝到云服务器 Tomcat 的 webapps 目录中
注意: 如果该项目之前部署过, 需要先删除之前的包
在浏览器上访问项目的链接. (按照项目的功能进行验证).
注意: 本地能够正确运行,部署到云服务器上,不一定能正确运行!
程序执行的正确性,不仅仅取决于代码,还取决于依赖的数据,配置,等环境信息
访问:http://ip:8080/blog_system/blog_login.html
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。