一、购买阿里云服务器,重装宝塔应用镜像,部署服务器环境

image.png

image.png

第一步:安装宝塔面板

阿里云服务器默认的不是宝塔应用镜像,所以需要重装系统镜像,或者说,你在服务器上另外安装宝塔也可以,具体流程在我那篇如何网站提示不安全的博客里面有

第二步:下载nginx和mysql

按照阿里云如上图所给的提示信息,登录进宝塔界面,成功登录后他会提示你安装应用,只勾选nginx和mysql就可以了

第三步:下载Tomcat和Redis

进入面板的软件商店,搜索下载Tomcat和Redis,然后将他们设置成首页显示(方便用)

image.png

第四步:修改Tomcat版本

点击首页中的tomcat,选择切换版本,将Tomcat版本改为8.5.69(因为Tomcat8 默认会安装一个JDK 1.8.0_121),其实宝塔面板有个一键部署Java项目的软件,看上图就知道,但是,怎么说呢,我暂时没用明白,哈哈哈哈哈,有点没搞懂他的内部操作,能搞懂怎么玩的话,你也可以直接用它部署项目,到时候发个链接给我学习学习

image.png

第五步:创建数据库,并用Navicat连接,然后将之前在本地的项目数据库表导出再导入到这个服务器数据库上

image.png

创建数据库,修改密码,特别注意,访问权限要选所有人,不然在本地navicat连接不了

image.png

image.png

二、执行到这里,服务器上的准备工作就准备好了,接下来就是检查项目配置,打包项目,配置代理了,我这里是JeecgBoot项目,后端是spring boot,前端是vue

1、确定后端映射地址和前端请求地址

image.png

image.png

2、确定之前开发环境中修改的配置是否做了同步修改

image.png

3.确定数据源配置和服务器上的端口、数据库名字、账号密码等配置同步,其次是检查redis配置

我这里redis是安装在同一服务器上,所以host就为127.0.0.1没变,如果你将redis的绑定ip设置成了0.0.0.0也就是所有ip都可以访问,这时由于会导致服务器被入侵,所以就需要给redis设置密码,那么就需要在下图requirepass设置密码,并在下面项目的部署环境配置中将password改成你redis设置的密码

image.png

image.png

4.后端项目打包

检查系统模块的pom.xml中是否有下面标示的配置

image.png

打开maven,选择根模块,一次点击如下所示三个操作(注意检查没步操作执行时是否成功)

image.png

5.后端jar包上传

编译都成功后,找到系统模块的target,找到打包好的jar包,右键show in Explorer

image.png

image.png

然后将打包好的jar包,上传到服务器的文件夹中,我这里是在wwwroot下面创了一个项目名称的文件夹,然后将jar包上传到服务器

image.png

6.前端项目打包

找到package.json,右键show npm Scripts,然后双击下面的serve

image.png

image.png

7.打包成功后找到生成的dist文件夹,将文件夹上传到nginx的html文件夹中

image.png

image.png

8.修改nginx的配置文件,你可以在nginx的配置修改里面进行更改,也可以找到nginx.conf双击进去进行更改,我的配置参考如下:

user  www www;
worker_processes auto;
error_log  /www/wwwlogs/nginx_error.log  crit;
pid        /www/server/nginx/logs/nginx.pid;
worker_rlimit_nofile 51200;

events
    {
        use epoll;
        worker_connections 51200;
        multi_accept on;
    }

http
    {
        include       mime.types;
		#include luawaf.conf;

		include proxy.conf;

        default_type  application/octet-stream;

        server_names_hash_bucket_size 512;
        client_header_buffer_size 32k;
        large_client_header_buffers 4 32k;
        client_max_body_size 50m;

        sendfile   on;
        tcp_nopush on;

        keepalive_timeout 60;

        tcp_nodelay on;

        fastcgi_connect_timeout 300;
        fastcgi_send_timeout 300;
        fastcgi_read_timeout 300;
        fastcgi_buffer_size 64k;
        fastcgi_buffers 4 64k;
        fastcgi_busy_buffers_size 128k;
        fastcgi_temp_file_write_size 256k;
		fastcgi_intercept_errors on;

        gzip on;
        gzip_min_length  1k;
        gzip_buffers     4 16k;
        gzip_http_version 1.1;
        gzip_comp_level 2;
        gzip_types     text/plain application/javascript application/x-javascript text/javascript text/css application/xml;
        gzip_vary on;
        gzip_proxied   expired no-cache no-store private auth;
        gzip_disable   "MSIE [1-6]\.";

        limit_conn_zone $binary_remote_addr zone=perip:10m;
		limit_conn_zone $server_name zone=perserver:10m;

        server_tokens off;
        access_log off;

server
    {
        listen 80;
        server_name 47.108.248.64;
        index index.html index.htm index.php;
        root  /www/server/nginx/html/;

        #error_page   404   /404.html;
        # include enable-php.conf;

        # location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)$
        # {
        #     expires      30d;
        # }

        # location ~ .*\.(js|css)?$
        # {
        #     expires      12h;
        # }

        # location ~ /\.
        # {
        #     deny all;
        # }
        
        location ^~ /nongjt {
			proxy_pass              http://127.0.0.1:8088/nongjt/;
			proxy_set_header        Host 127.0.0.1;
			proxy_set_header        X-Real-IP $remote_addr;
			proxy_set_header        X-Forwarded-For $proxy_add_x_forwarded_for;
		}
		
		location / {
			root   html/dist;
			index  index.html index.htm;
			if (!-e $request_filename) {
				rewrite ^(.*)$ /index.html?s=$1 last;
				break;
			}
		}

        access_log  /www/wwwlogs/access.log;
    }
include /www/server/panel/vhost/nginx/*.conf;
}

配置的简单说明:

其实要改的也就server里面,上面的时监听请求地址为http://47.108.248.64/,且请求端口为80的请求,后面的

location ^~ /nongjt {
			proxy_pass              http://127.0.0.1:8088/nongjt/;
			proxy_set_header        Host 127.0.0.1;
			proxy_set_header        X-Real-IP $remote_addr;
			proxy_set_header        X-Forwarded-For $proxy_add_x_forwarded_for;
		}

则是将前端项目中发起的请求,反向代理成http://127.0.0.1:8088/nongjt/,请求后端,还记得前端配置的时候为什么要这要配吗,就是这个道理,其次就是80端口也就是默认端口,在地址栏输入后会省略,这就是为什么你在地址栏服务器地址后面输入了:80之后,请求时,地址没有显示:80,另外,如果服务器不止部署一个项目的话,则在配置里面再添加一个server结构即可

image.png

image.png

image.png

9.修改Redis配置,开启后台启动

开启后台启动,将daemonize改为yes

daemonize yes

如果要解除本机ip访问绑定,则将bind 127.0.0.1修改成bind 0.0.0.0,但同时也要关闭保护模式

bind 0.0.0.0

protected-mode yes 更改为 protected-mode no

protected-mode no 

10.后端启动项目jar包

找到项目jar包放的位置,点击终端,并在控制面板中输入以下指令

image.png

查看已运行的Java进程

ps -ef|grep java

如果有多余的进程,则可输入以下指令杀死线程

kill 进程号

启动项目

#后台启动
nohup java -jar jeecg-boot-module-system-2.2.1.jar >catalina.out 2>&1 &  
#启动并查看日志
nohup java -jar jeecg-boot-module-system-2.2.1.jar >catalina.out 2>&1 & tail -f  catalina.out

最后查看进程,如下即可,上面那两个jdk1.8的进程,是tomcat启动时自动运行的,如果杀死他们两个进程也可以通过在tomcat管理中重启tomcat来运行jdk,为什么要启动jdk的原因也很简单,因为我们后端是Java项目,如果没有jdk环境,是跑不起来的:

image.png

image.png

11.最后,到这里,你就可以用你的服务器ip地址加上80去访问你项目界面啦,至此整个前后端项目部署完毕

三、又到了最后总结的时候了

其实,之前在服务器上部署我这个博客网站的时候,最开始并没有用宝塔面板,然后就是用xshell去纯粹地操作linux系统,也就是通过指令安装jdk,ngnix,mysql,redis等,对于当时的我来说,那叫一个痛苦,当时至少重装了3次系统,后来也是在安装证书时,被宝塔的简单利索的操作给震惊到,所以后面才用宝塔重写搭了这个博客网站,同时也是在那之后,对宝塔有了更加熟练的运用,但是,对于个人要求来说,我还是会用原生的linux指令去再操作一遍,去部署项目,毕竟熟练掌握Linux指令操作,也是一项重要的技能技巧,另外,环境配置如此麻烦,换一台机器,就要重来一次,很费力费时。其实这时候我们就应该想到,能不能从根本上解决问题,软件可以带环境安装?也就是安装的时候,把原始环境一模一样地复制过来。答案是能,于是这也就有了Docker容器,这里如果大家感兴趣的话,可以去学习了解一下,有时间我在给大家整理,最后,整理不易,望喜欢,最后也提一下(因为有人在问),博客的背景图是用的是kelvin李的图,如果大家喜欢可以去他的微博下载原图,我觉得拿来当电脑桌面壁纸什么的都挺好看的

L.X.Q.


温柔赠于四方,自由灵魂独享