前言
首先,我觉得任何技术和知识都有被记录的必要。其次,前一段时间看视频,主播开玩笑的说一个mysql安装一天,我竟然莫名觉得扎心了,毕竟当年我是自学的,别说mysql的安装了,有时候版本的差异都能让我卡住好几天。
虽然现在大多数技能已经get,再学习新东西也有了一定的思维能力和调错方式,甚至百度中能搜出大多数问题的解决方案。但是今天从一个什么都没有的服务器到搭建环境,部署jar包,反向代理允许访问。这一个过程拆分下来也都是基础的知识,可是我还是想记录下来。更多的是想要献给一如我当年那般没有人教,一个人磕磕绊绊学习的小伙伴吧。
线上环境需要什么?
这个其实很重要,我今天部署的东西比较简单,项目用到的技术栈也没什么。spring boot写的后台。用到了mysql数据库。还有redis做了简单的缓存。还有因为有后台所以要把ip+端口换成域名,这里用的是nginx。另外我个人习惯所有的mysql操作都用navicat。当然了,我是个白嫖党,所以这里的安装的破解版的。整理一下:
- jdk必不可少,我用的1.8
- 刚刚都说了用的mysql,用的是5.5版本。mysql下载安装。
- mysql的伴生产物:navicat破解版很重要。我这里有个经常使用的是navicat11.虽然版本比较老但是够用了,而且破解很方便。
- redis简单的用到了,不过我这次部署的服务器也是windows系统,所以也简单的不得了。
- nginx的反向代理。这个就没沙说的了,总不能直接暴露ip端口了。
然后就是一步一步操作了。因为需要很多安装包啥的,所以我把这些资料都传到qq群里,群号130031711,有需要的小伙伴可以加群自己找群文件。反正我个人是不到一小时都搭建完了并且项目跑起来了。下面一步一步走。
java环境jdk
这个怎么说呢,听说现在去oracle官网下载还要注册的,反正我n久没下载了,以前有个u盘,里面有现成的,复制粘贴到本地就可以安装了。现在觉得u盘麻烦,就存到qq群里了。直接下载到本地双击,一步步按照要求往下,就安装完成了。
如果是从群里下载,下载完就是图中框起来的样子,双击按照要求来就行了。最后打开cmd,输入 java -version 。如果能弹出版本号说明jdk安装没问题了。
安装完成记得要配置环境变量,我简单的说一下:
- 我的电脑(此电脑)->右键属性->高级系统设置->环境变量。
-
系统变量中新建->名称是 JAVA_HOME 值是jdk的安装目录
- 在变量名是path的属性中编辑:最末尾加上%JAVA_HOME%\bin;
这里有点区别,如果是windows10的话弹出来的编辑框特别人性化,一条是一条的,所以不用后面的分号“;”。但是如果不是这样的话最后面的分号千万别忘记。
mysql数据库的下载和安装
说实话开发的话我一般都使用mysql5.5.其实现在市面上这个版本也是用的最多的一个。毕竟很多8以上容易出bug而且很多东西不兼容。当然也有可能是公司环境就这样。反正我这里用的就是5.5版本。
其实这些东西很多官网都是国外的,我以前也有曾经下载mysql下了一天的历史。加上个人习惯,所以还是习惯于安装包下载后保存起来。和jdk一样传到了qq群里。
其实mysql这个包解压到本地就没啥大事了,如图是解压后的目录。
- 网上好多说创建data文件夹,但是我这边这个解压后是有的,所以不用再创建了。
- 创建一个my.ini文件,文件里的内容大概如下:
[mysql]
# 设置mysql客户端默认字符集
default-character-set=utf8
[mysqld]
#设置3306端口
port = 3306
# 设置mysql的安装目录
basedir=C:\MySQL Server 5.5\MySQL Server 5.5
# 设置mysql数据库的数据的存放目录
datadir=C:\MySQL Server 5.5\MySQL Server 5.5\data
# 允许最大连接数
max_connections=200
# 服务端使用的字符集默认为8比特编码的latin1字符集
character-set-server=utf8
# 创建新表时将使用的默认存储引擎
default-storage-engine=INNODB{\rtf1}
其实这里可以设置的东西不少,不过精简的话,我甚至见过就三行设置的,看个人吧,简单实用的话上面是够了的。
其中注意basedir还有datadir是要根据你的安装目录写的。需要注意的是这个mysql.ini和my.ini有一个就行了。我上传的这个安装包里就有了my.ini。
理论上讲,如果下载我上传的这个包,只需要改动下my.ini中两个输出路径就ok了的。
然后下载成功,配置文件改完后,我个人习惯还是设置成系统环境变量,毕竟比每次都到bin目录下方便的多,接下来mysql的环境变量:
直接找到环境变量中的path,编辑,追加。和上面说的一样,如果是一串的记得最后的分号,如果不是直接输入到mysql的bin目录就行了,如下是我这边的:
C:\Program Files\MySQL Server 5.5\MySQL Server 5.5\bin
然后下载完毕,配置文件改完了,环境变量也配置完了,用管理员身份打开cmd。
个人习惯操作是先移除,可以省略很多莫名其妙的问题。具体命令如下:
- mysqld --remove(先移除一遍,纯粹为了方便,成功不成功都无所谓)
- mysqld --install(安装,如果完全按照上面教程来肯定是成功的。返回Service successfully installed说明你安装成功)
-
net start mysql(启动服务,一般到这如果是启动成功就说明成功了。)
需要注意的是在第三步容易报错系统找不到指定文件,那就说明你my.ini或者mysql.ini中的输出地址错误了,去改了就好了。
改完之后记得重新启动cmd控制台。不然控制台不会更新会一直报这个错。
其实上面的三步就已经是mysql安装完成了。初始密码一般是没有的,可以用mysql -u root -p 登录一下试试。我这边确定安装完成就去下载navicat了。
破解版navicat
这个怎么说呢,其实我也不想白嫖的,但是真的穷我也没办法。所以用的是破解版。网上很多破解版教程,很多麻烦的很,又是断网,又是下载补丁的。我用的这个是navicat for mysql 11 版本。当然了我之前闲着的时候也看了,现在网上流传的比较多的破解版一般就是11,12。反正11的功能够我用了。老规矩,下载压缩包,然后安装,破解,我一步步说。
安装包下载解压后如下:
- 点击绿色的那个navicat安装,按照要求一步步来,记得最终项目安装到哪里了。
-
点击第二个PatchNavicat.exe然后选择第一步安装到的路径,点击navicat.exe。会出现破解成功的字样。
需要注意的是第二个点进去要选择安装的那个程序,而不是这个未安装的。附上个截图。
至此,可以打开navicat使用啦,记得不要自动升级就行。
正好我们可以连接本地测试下之前下载安装的mysql。
我的话是直接把开发环境中的数据库转存sql文件,直接在服务器的数据库中运行了,反正数据不多,就这样把数据库这块搞定啦!
redis安装使用
这个是很有意思的。redis在windows系统中的安装使用更简单,但是redis官网建议不要用windows环境使用redis。不管这些了,直接上干货。同样我把包上传到群里了。windows系统的redis还是3点几版本,linux已经6点多了。简直是个孤儿。不过这个不影响使用。
其实到这里就完事了,只要双击redis.server.exe就能启动redis了。
不过这里有两种情况:
- 有的可以启动成功,那么直接挂着就行(窗口不能关)。
-
有的人会闪退,这里有说法是内存不足,反正如果遇到这种情况那么cmd到这个页面启动运行也行。
其实我这里就是一个最简单的配置,好多redis的详细配置也是在配置文件里改的,比如改密码啊,比如换端口啊,比如更改默认数据库之类的啊(redis默认16个数据库,默认用第0个)下图是改密码的一张图
至此,java的环境就搭建完毕了。我现有的jar是spring boot打包的,直接粘贴过来,控制台启动就没问题了。而且也测试了接口,证明jar是没问题了的。
接下来只要把nginx反向代理弄完,用域名代替ip+端口,前端的项目包导入进来能访问就ok啦。
nginx配置
这个其实就比较简单了,我对nginx也仅仅是能使用的地步,所以就是简单用用。(nginx使用前有个域名算是标配,所以不用说了)
老规矩,压缩包上传到qq群文件里了。然后下载下来解压。分三步操作。
-
解压后打开conf文件,里面有个nginx.conf。是咱们要做配置的主要文件。另外有个证书文件和秘钥文件一般也存在conf中cert文件中(这是一对文件。分key和pem)。
- 证书自己存进去就行了,证书名字记得复制,要在配置文件里面用。重点是配置文件如何写。下面是我的配置文件,贴出来大家可以参考下:
#user nobody;
worker_processes 4;
#error_log logs/error.log;
#error_log logs/error.log notice;
error_log logs/error.log debug;
#pid logs/nginx.pid;
# worker_processes 4; #处理器个数
events {
worker_connections 1024;
}
http {
include mime.types;
default_type application/octet-stream;
#nginx优化----------------------
#隐藏版本号
server_tokens on;
#优化服务器域名的散列表大小
server_names_hash_bucket_size 64;
server_names_hash_max_size 2048;
#开启高效文件传输模式
sendfile on;
#减少网络报文段数量
#tcp_nopush on;
#提高I/O性能
tcp_nodelay on;
#连接超时 时间定义 默认秒 默认65秒
keepalive_timeout 60;
#读取客户端请求头数据的超时时间 默认秒 默认60秒
client_header_timeout 15;
#读取客户端请求主体的超时时间 默认秒 默认60秒
client_body_timeout 15;
#响应客户端的超时时间 默认秒 默认60秒
send_timeout 25;
#上传文件的大小限制 默认1m
client_max_body_size 8m;
#gzip on;
# 很重要的虚拟主机配置
# HTTPS server
#如果有多个设置多个server
server {
listen 443 ssl; #SSL协议访问端口号为443。此处如未添加ssl,可能会造成Nginx无法启动。
server_name apis.lsj.cn; #将localhost修改为您证书绑定的域名,例如:www.example.com。我这里apis.lsj.cn是域名
root html;
index index.html index.htm;
ssl_certificate cert/4649643_apis.lsj.cn.pem; #这个文件放在conf/cert
ssl_certificate_key cert/4649643_apis.lsj.cn.key; #这个文件放在conf/cert
ssl_session_timeout 5m;
ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4; #使用此加密套件。
ssl_protocols TLSv1 TLSv1.1 TLSv1.2; #使用该协议进行配置。
ssl_prefer_server_ciphers on;
location / {
proxy_pass http://127.0.0.1:9999; #这里用域名 等同于http://127.0.0.1:9999
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Real-IP $http_x_real_ip; # 针对非首层代理,一直传下去
root html/monitor; #这里的html是项目的登录页,也就是我们想用apis.lsj.cn/monitor这个地址访问时进入到的页面
#html是与conf同级的一个文件夹。里面monitor是我们这个项目的首页和static源码。如果只有一个的话放在根目录也ok
index index.html index.htm;
}
}
server {
listen 80;
server_name localhost;
location /sys-lsj/ {
proxy_pass http://127.0.0.1:9999/sys-lsj/; #这里用域名/sys-lsj/等同于http://127.0.0.1:9999/sys-lsj/
}
#error_page 404 /404.html;
# redirect server error pages to the static page /50x.html
#
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
}
}
其中要配置的就是server。如果是多个就配置多个server。反正这个就这样了,有问题的欢迎问我。
至此,这个线上环境就差不多完事了。这篇笔记就记到这里。附上一个群里资料的截图:
这篇笔记就记到这里,如果稍微帮到你了记得点个喜欢点个关注。顺便打个广告:java技术交流群130031711,欢迎各位踊跃加入!另外祝大家工作顺顺利利!