可以用用户名和密码在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.sh
。cd
到这个文件夹下运行./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
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
。
@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
即可。开启的命令就在tomcat
的bin
目录下的./startup.sh
。