本文主要介绍了linux和如何在云服务器上部署一个简单的servlet程序.
一.云服务器
真正搞一个网站,是希望这个网站被其他人访问到 , 所以需要一个云服务器(具有外网ip)来让别人也可以访问
云服务器
操作系统是Linux(一般都是通过命令行来操作)
当前市面上常见的系统:
1.windows
2.Linux
3.Mac OS (苹果电脑)
4.Android
5.IOS
1.1Linux
对于Linux , 一般普通用户不会使用. 不适合日常使用,但是非常适合开发. 但作为一个程序员,Linux都是务必要熟悉使用的技能.
Linux诞生于1991年 , 出自一个叫Linus的芬兰大佬,读研时,他无聊就写了个操作系统 ,由于开源免费迅速就火了起来.
为了能够进行更好的多人协同开发, 他又开发了一个工具软件git, 后来的github也是深受linus大佬的影响(github的logo就是一只章鱼猫,据说这个大佬曾经做梦梦见了这样一只章鱼猫 . )
1.2使用领域
linux是世界上第一大操作系统.
1.服务器领域 (也有少数服务器是windows server)
2.嵌入式设备 (路由器/空调/电冰箱/自动门 这些也需要计算机来控制,嵌入式设备功能更简单)
3.移动端(手机) Android本质也是Linux
但是Linux桌面不好用,差不多是windows十年前的水平,有很多bug.
1.3Linux发行版
Linux其实是一个操作系统内核(最核心的功能)
一个完整的操作系统=内核+配套的应用程序
有很多不同的组织和个人,基于Linux内核,搭配上不同的程序,就构成了不同的 发行版.
这些发行版大同小异. , 企业中最常用的发行版 是 red hat (收费的,商业公司维护的)
但是当前我们使用的有两个选择:
1.Centos
和redhat是一摸一样的,就是改了个logo
(遗憾的是,Centos社区快要黄了,Centos8是最后一个版本)
2.Ubuntu乌班图
在企业端的使用市场份额虽然不算很高,但是在社区还是挺火的.
掌握一个发行版的的命令其他的都会了.
1.4Linux环境
如果获取Linux环境呢?
1.虚拟机
用软件模拟硬件,进一步的模拟出来的电脑中,装出来一个linux系统.
不推荐
- 使用虚拟机本身有很多bug
- 虚拟机不能解决外网ip问题
2.WSL
windows subsystem Linux
微软再windows内部内嵌了一个Linux内核.
成熟程度还是挺高的 .
但是仍然不能解决外网ip的问题
3.云服务器
很多服务器厂商,养了很多服务器,可以按需租给别人使用. 完美解决网站IP问题,就相当于租了一个电脑,虽然这个电脑的配置非常低.
各位可以在阿里云/腾讯云/华为云租一个云服务器 .(以学生身份买云服务器非常便宜,平均一个月10块钱左右(双十一/618等经常有促销)
服务器镜像版本选择
Ubuntu 22/20
Centos 7.6/8
注意:可以重装系统的.
买了云服务器之后就可以进入远程登陆到云服务上.
也可以使用单独的终端软件(公司中常用的方式.)来进行登陆 , 比如xshell.
使用终端软件连接到服务器需要以下三个内容
1.服务器的ip地址
2.服务器的用户名(centos-root ; Ubuntu-ubuntu)
2.服务器的密码 (可以在云服务器后台设置)
二.使用xshell安装依赖
使用xshell连接到云服务器
1.新建会话 输入主机号(云服务器的外网ip)
2.输入用户名/密码
centos的用户名:root 密码就是在后台设置的
3.成功进入
~描述的当前所处的目录位置
它是一个特殊的目录,表示该用户的home目录
要想把博客系统部署上去,需要先把javaweb的环境搭建好 (博客系统过程中,依赖一些程序,就需要把一些依赖的程序安装上) , 需要安装一下三个依赖.
1.JDK
2.Tomcat
3.mysql
Linux安装软件方式很多,这里介绍最简单的一种
1.安装KDL
yum(centos) / apt(ubtuntu)
相当于包管理器(相当于软件商店)
1.1搜索
- yum list | grep jdk
- apt search jdk (ubuntu)
安装64位的开发工具包
1.2安装
先确保出在管理员命令下(root)
centos已经是root
ubtuntu通过sudo su - 切换到管理员(exit命令退出)
- yum install 软件包名
- apt install 软件包名
输入javac 如此显示就代表安装成功
2.安装tomcat
centos通过包管理器安装只能装7的版本,太低了.
可以直接把windows上下载的tomcat压缩包传到linux上就行
2.1直接将压缩包拖进命令行
此时就可以显示压缩包
注意:
如果拖不了,需要另外安装一个软件
- yum install Irzsz
- apt install unzip
2.2 使用unzip解压缩
2.3启动tomcat
2.3.1切换到bin目录
2.3.2赋予.sh文件为可执行文件(变绿了)
chmod +x *.sh
2.3.3 启动tomcat
sh startup.sh
2.3.4通过浏览器访问tomcat欢迎页面
云服务器上部署的服务器程序要想被外界访问,需要先开放端口
云服务器厂商为了提高服务器的安全性,就引入了防火墙(轻量应用服务器)和安全组(ECS服务器),来限制端口对外访问的情况 . (注意不要打开mysql的3306和redis的6379 ,很容易被黑客入侵.)
3.安装mysql8.0
安装方式仍然有很多 , 这里使用最简单的方式:基于包管理器来安装
centos安装mysql8.0比较复杂,这里引用这位大佬总结的方法 :Docs (下面的方法基于这篇文章)
3.1先卸载原有 MariaDB 和 MySQL
# MariaDB的卸载
rpm -qa|grep mariadb //查看是否有
rpm -e --nodeps 文件名 //卸载(有则会出现一个 mariaBD-lib.........的文件)
rpm -qa|grep mariadb //确认是否卸载 # MySQL的卸载
rpm -qa|grep mysql //查看是否有(如果没有输出则不需要执行下面的)
systemctl stop mysqld //停止服务
rpm -e --nodeps mysql文件名 //卸载
3.2 下载 mysql 资源包(https://dev.mysql.com/downloads/mysql/)
3.3 上传到 /usr/local 目录下
3.4 解压 mysql 的压缩包(/usr/local 目录下)
tar -Jxvf 文件名
3.5 重命名 mysql 文件夹
mv 原文件名 mysql8
3.6 导入临时环境变量(后面会教怎么配置环境变量)
export PATH=$PATH:/usr/local/mysql8/bin
3.7 测试是否成功安装
mysql --version
3.8 配置用户组,用户(/usr/local 目录下)
groupadd mysql
useradd -r -g mysql mysql
mkdir -p /data/mysql8_data
chown -R mysql:mysql /data/mysql8_data
chmod -R 750 /data/mysql8_data
3.9 配置 my.cnf 文件(/usr/local/etc/ 目录下)
touch my.cnf
vim my.cnf
写入以下数据
[mysql]
# 默认字符集
default-character-set=utf8mb4
[client]
port = 3306
socket = /tmp/mysql.sock
[mysqld]
port = 3306
server-id = 3306
user = mysql
socket = /tmp/mysql.sock
# 安装目录
basedir = /usr/local/mysql8
# 数据存放目录
datadir = /data/mysql8_data/mysql
log-bin = /data/mysql8_data/mysql/mysql-bin
innodb_data_home_dir =/data/mysql8_data/mysql
innodb_log_group_home_dir =/data/mysql8_data/mysql
# 日志及进程数据的存放目录
log-error =/data/mysql8_data/mysql/mysql.log
pid-file =/data/mysql8_data/mysql/mysql.pid
# 服务端字符集
character-set-server=utf8mb4
lower_case_table_names=1
autocommit =1
##### 以上涉及文件夹明,注意修改
skip-external-locking
key_buffer_size = 256M
max_allowed_packet = 1M
table_open_cache = 1024
sort_buffer_size = 4M
net_buffer_length = 8K
read_buffer_size = 4M
read_rnd_buffer_size = 512K
myisam_sort_buffer_size = 64M
thread_cache_size = 128
#query_cache_size = 128M
tmp_table_size = 128M
explicit_defaults_for_timestamp = true
max_connections = 500
max_connect_errors = 100
open_files_limit = 65535
binlog_format=mixed
binlog_expire_logs_seconds =864000
# 创建表时使用的默认存储引擎
default_storage_engine = InnoDB
innodb_data_file_path = ibdata1:10M:autoextend
innodb_buffer_pool_size = 1024M
innodb_log_file_size = 256M
innodb_log_buffer_size = 8M
innodb_flush_log_at_trx_commit = 1
innodb_lock_wait_timeout = 50
transaction-isolation=READ-COMMITTED
[mysqldump]
quick
max_allowed_packet = 16M
[myisamchk]
key_buffer_size = 256M
sort_buffer_size = 4M
read_buffer = 2M
write_buffer = 2M
[mysqlhotcopy]
interactive-timeout
3.10 初始化(/usr/local/mysql8/bin 目录下)
mysqld --defaults-file=/usr/local/etc/my.cnf --basedir=/usr/local/mysql8 --datadir=/data/mysql8_data/mysql --user=mysql --initialize-insecure
3.11后台启动
/usr/local/mysql8/bin/mysqld_safe --defaults-file=/usr/local/etc/my.cnf &
3.12 测试登录
mysql -u root -p 回车 //默认无密码
3.13 修改密码(进入数据库)
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '新密码';
FLUSH PRIVILEGES;
3.14 配置系统环境变量(记得退出数据库)
Vim /etc/profile
追加一行
export PATH=$PATH:/usr/local/mysql8/bin
刷新
source /etc/profile
三.部署
真正开始部署
1.稍微修改代码
* 修改端口为3306
* 确保密码和服务器数据库密码一致
* ip不需要修改,因为程序和服务器仍然在同一个主机上.
2.导入数据库的数据
3.打包达成war
4.把war包上传到webapps目录下
如果tomcat正在运行,就能够自动进行解压缩和部署;
如果没有触发自动解压缩,也可以手动重启tomcat(kill 再startup)
四.问题总结
1.云服务器安装的mysql是8.0的版本,所以代码中引入得mysql驱动包也要是8.0的版本.
2.阿里云云服务器的插件文件
安装mysql的时候,安装之后无法启动,后来发现是服务器缺少插件, 使用yum命令安装了libaio之后就好了
yum install -y libaio
3.xshell拖动不了文件/拖入无法加载
- yum install Irzsz (centos)
- apt install unzip (ubuntu)
4.安装解压缩命令
- yum install -y unzip zip
解压
- unzip 压缩文件
5.ctrl+f5强制刷新浏览器缓存