Ubuntu服务器部署Java Web项目

可以用用户名和密码在MAC本地远程登录,如果在终端出现警告提示,那么就在下面命令前面加sudo来操作。

ssh root@xx.xx.xx.xx

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

1、安装JRE

Ubuntu服务器,部署JAVA项目。

建议先更新一下apt,使用apt update即可。因为不更新的情况下安装下列包时有可能提示unable to locate package xxx

apt install default-jre

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

java -version

2、安装Tomcat

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

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即可。

最后一步就是启动tomcat了。我们启动的命令在/apache-tomcat-8.5.24/bin/startup.shcd到这个文件夹下运行./startup.sh或者直接在当前目录下执行该文件都可以。

然后用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,然后再设置这个目录的权限,第一次设置755是有效的,后来就不行了,然后索性设置成777了:

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都可以。但是建议使用FileZilla,因为Transmit经常出现不知所云的错误。

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

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

4、MySQL的配置

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

vim /etc/mysql/mysql.conf.d/mysqld.cnf

[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.bootgroupId>
    <artifactId>spring-boot-starter-tomcatartifactId>
    <scope>providedscope>
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、为什么不要那个项目名在路径里?如果只是访问的时候多写一个项目名路径那还不算问题,问题在于,有的程序如果访问路径写的不严谨的话,是会相对根路径去的,那么就会出现加载错误的问题。

8、有的时候为了测试反复部署了war包后,突然发现某一次的war包没有被自动解压,无法访问,查看日志经常有些莫名其妙的提示,按照提示也实在找不到问题,这个时候,有可能是之前在某一次部署war包运行的时候有发生过错误,这个错误直接导致tomcat停止运行了,这个时候只需要开启tomcat即可。开启的命令就在tomcatbin目录下的./startup.sh

你可能感兴趣的:(Java)