Ubuntu服务器部署Java Web项目

可以用用户名和密码在MAC本地远程登录。

ssh root@xx.xx.xx.xx

之后输入密码即可登录。然后做下面的操作。

1、安装JRE

Ubuntu服务器,部署JAVA项目。

apt install default-jre

用这个命令检查一下版本:

java -version

2、安装Tomcat

去官网下载吧,下载那个Core里面的tar.gz。这里我们下载8的版本。我一般都是先cd user/下面,把所有的软件都放在这个目录下面。

wget http://mirrors.hust.edu.cn/apache/tomcat/tomcat-8/v8.5.24/bin/apache-tomcat-8.5.24.tar.gz

下载完成会发现这个目录下有这个源文件了。我们解压即可。因为tomcat是不需要安装的,所以解压即可。解压的命令是:

tar -zvxf apache-tomcat-8.5.24.tar.gz

解压之后发现多了一个文件夹,这个时候可以吧源文件删除掉。

rm -rf apache-tomcat-8.5.24.tar.gz

接下来就是配置了,简单的配置之后就可以访问了。配置文件就在这个文件夹里。

vim apache-tomcat-8.5.24/conf/server.xml

我这边只修改了一个默认端口,默认是8080,但是我们一般访问都是80端口,所以改成80即可,找到那个有8080的地方改成80即可。然后用IP地址访问,出现小猫就算是可以了。如果你有域名,并且已经解析到这个IP地址上的话,可以直接用域名访问。

3、安装和使用ftp工具

在Ubuntu上要安装ftp服务,这个安装简单:

apt install vsftpd

安装完之后,需要配置一下,大体上就是允许什么用户和密码来上传,上传到哪个文件夹里面之类的。首先要配置的就是:

vim /etc/vsftpd.conf

里面主要修改和增加一下几个地方(参考这边Linux下搭建FTP服务器(Ubuntu16.04)):

#这些设置系统默认是开启的,可以不管
listen=NO
listen_ipv6=YES
dirmessage_enable=YES
use_localtime=YES
xferlog_enable=YES
connect_from_port_20=YES

#下面的就要自定义设置了,建议系统默认的不管,然后复制下面的

#是否允许匿名访问,NO为不允许
anonymous_enable=NO
#是否允许本地用户访问,就是linux本机中存在的用户,YES允许
local_enable=YES
#是否开启写模式,YES为开启
write_enable=YES
#新建文件权限,一般设置为022,那么新建后的文件的权限就是777-022=755
local_umask=022

#是否启动userlist为通过模式,YES的话只有存在于userlist文件中的用户才能登录ftp(可以理解为userlist是一个白名单),NO的话,白名单失效,和下面一个参数配合使用
userlist_enable=YES
#是否启动userlist为禁止模式,YES表示在userlist中的用户禁止登录ftp(黑名单),NO表示黑名单失效,我们已经让userlist作为一个白名单,所以无需使用黑名单功能
userlist_deny=NO
#指定哪个文件作为userlist文件,我们稍后编辑这个文件
userlist_file=/etc/vsftpd.user_list

#是否限制本地所有用户切换根目录的权限,YES为开启限制,即登录后的用户不能访问ftp根目录以外的目录,当然要限制啦
chroot_local_user=YES
#是否启动限制用户的名单list为允许模式,上面的YES限制了所有用户,可以用这个名单作为白名单,作为例外允许访问ftp根目录以外
chroot_list_enable=YES
#设置哪个文件是list文件,里面的用户将不受限制的去访问ftp根目录以外的目录
chroot_list_file=/etc/vsftpd.chroot_list
#是否开启写模式,开启后可以进行创建文件夹等写入操作
allow_writeable_chroot=YES

#设置ftp根目录的位置,这个文件我们稍后自己创建
local_root=/var/myftp

上面这个local_root这行如果不配置的话,其实没法约束用户只在根目录下活动。我有时候就不写这一行,这样可以到处看看其他文件夹(但是不能上传到其他文件夹,只能看看,这样至少一方面控制住了权限,一方面也没有很死板吧),建议开发的时候可以用。

然后就是设置一个目录了,我这里设置的是/home/uftp,然后再设置这个目录的权限:

chmod -R 755 home/

给这个目录创建用户和用户的密码:

useradd -d /home/uftp uftp
passwd uftp

上面一堆配置文件里面涉及到2个文件,我们手动创建一下,比如下面这个,然后添加uftp进去作为白名单的一员:

vim /etc/vsftpd.user_list

然后,就是这个,设为空即可:

vim /etc/vsftpd.chroot_list

在MAC上使用Transmit或者FileZilla都可以,但注意在连接之前需要在阿里云后台给这台实例开通相关的安全组权限,就是开放一个端口。
这里写图片描述

最后一步就是连接,连接需要注意的是要用SFTP连接,直接用FTP我试了很久没有连接上,可能我的配置有问题,但用SFTP就ok的,而且SFTP的端口是22,所以用工具的时候不要填写端口,用默认的即可。

这里面有一个问题,我们一般情况下,如果不需要严格到限制用户限制访问目录的话,在/etc/vsftpd.conf中只需要配置简单的不允许匿名、允许本地几个选项即可,在阿里云管理后台貌似也不需要设置,这个下次再验证。

4、MySQL的配置

(1)MySQL的安装什么的就不多说了,远程连接在当你死活都无法远程连接到服务器上的MySQL时,你得考虑一下远程工具配置了(Navicat)里也说了,这里提几个小注意点。第一个是是需要注意大小写的问题。MySQL在Windows平台是不区分大小写的,但是在Linux平台是区分的,这里说的区分是指数据库和表名,字段仍然是不区分的。如果我们开发的时候在代码有涉及到表名的话,那么久需要检查,统一成大写或者小写。当然,这是笨办法,简单的方法就是,配置一下,让Linux上的MySQL也不要去区分大小写即可。

vim /etc/mysql/mysql.conf.d/mysql.conf

[mysqld]下面增加一行即可:

lower_case_table_names=1

(2)还有一个需要注意的是,我们创建的表,如果借助Navicat之类的工具创建日期类型的字段时,它会自动帮我们设置成On update Current-Timestamp,这个设置的意思就是如果这条记录有update操作,那么这个时间会改变,如果你不想这个时间一直变来变去的话,就取消勾选这个设置即可。

(3)还有一个,我们建库建表的时候选择的是utf8mb4,但是在服务器上同样的配置,往数据库插入数据的时候会出现问号,我们在本地测试的时候可能是没有问题的。这个时候在mysql.conf配置文件中加这个配置即可:

character-set-server = utf8mb4

5、上传war包

具体操作可以参照这边博客:如何将一个SpringBoot简便地打成一个war包(亲测有效)

1、加个依赖,因为本地开发有自带tomcat,部署的话需要依赖(目前看来,我们如果要本地开发的话,注释以下依赖并且把启动类改回去即可,其他的改动不影响)。

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-tomcat</artifactId>
    <scope>provided</scope>
</dependency>

2、还是在配置文件中,把jar变成war

3、将启动类修改一下,即继承一个类,然后重写一个方法即可。

@SpringBootApplication
public class YourApplication extends SpringBootServletInitializer{
    @Override
    protected SpringApplicationBuilder configure(SpringApplicationBuilder builder) {
        return builder.sources(YourApplication .class);
    }


    public static void main(String[] args) {
        SpringApplication.run(YourApplication .class, args);
    }
}

4、开始打包。

idea右侧如果没有Maven Projects这个工具栏的话,在View-Tool Windows里面找到Maven Projects点击就出来了,然后展开在Lifecycle里双击package,下面控制台有输出,最终会输出提示成功还有路径,去那个路径,找到war包即可。

5、上传war包,上传到tomcat的webapps里即可。

6、但是如果你只是这样上传过去的话,那么访问的时候应该是这样访问http://域名或ip/项目名,这个项目名就是打成的war包的名字,如果你是默认的话,那么一般是xxx-0.0.1-SNAPSHOT之类。但我们是不想要这个项目名在url里面的,有2中方法,要么设置一个虚拟路径,要么直接简单粗暴替代webapps里原来的ROOT文件夹,替代就是直接把我们的war包改成ROOT.war,这样它会自动解压成ROOT文件夹,替代原先的ROOT文件夹。或者你自己解压然后把解压后的文件放在原先的ROOT文件夹下(记得删除原先ROOT下的文件即可),是一回事。其实,本质上就是,tomcat配置了一个默认的根目录,就是webapps下的ROOT目录,所以谁占领它谁就可以直接用http://域名或ip来访问了。

7、为什么不要那个项目名在路径里?如果只是访问的时候多写一个项目名路径那还不算问题,问题在于,有的程序如果访问路径写的不严谨的话,是会相对根路径去的,那么就会出现加载错误的问题。

相关文章
相关标签/搜索