ubuntu+jdk+tomcat+mysql

1 与正文无关的吐槽

  • 几个月前用JSP写了个小OJ,感觉不记录一下的话,就快要看不懂自己写的代码了=_=||由于之前的服务器就买了两个月的,到期之后没续费,东西都没了(不过当初机智地导出了数据库数据文件),今天重新买了一波,刚好要重新搭建,就从头开始记录一波吧。
  • 其实呢,之所以要记录,是因为……上次弄了一天才弄完,结果没有记下来,导致今晚我又得疯狂找方法。所以还是记录一下,免得以后又要再来一次,同时也给遇到同样问题的网友们提供一点小帮助。

正文开始


2 ubuntu 新账号创建

2.1 创建新账号

用ubuntu,总不能从头到尾都是用root账号在干活吧,万一手抖就gg了,所以还是要新建用户的。

useradd 用户名 -m -s /bin/bash

其中,-m表示为这个用户创建主目录,-s /bin/bash 表示用户登录的shell。没有-s /bin/bash的话,新用户登录进去之后,最左边只有一个$符,看着很不习惯。。

2.2 权限分配

创建完账号,迫不及待换成新账号登录,准备大展身手安装一波,然后。。。sudo权限就把我干倒了……于是乎,用root账号登录,修改/etc/sudoers这个文件,给新账号加个权限。然后改的时候又发现,root账号也没有权限修改sudoers这个文件,于是,还得修改一波这个文件的权限。

具体做法如下:(使用的是root账号)
使用cd /etc进入目录,然后使用下面这条命令查看当前目录下所有文件名含有“sudoers”的文件或目录的详细情况。

ls -al | grep sudoers

我这边显示的结果是这样的:
查看sudoers文件的权限
可以发现,sudoers这个文件只给了root用户以及root组“读”的权限,没有写入权限,所以呢,我们需要修改一下权限:

chmod 640 sudoers

640呢其实就是将上面截图左边那个r–r—-(第一位表示的不是权限,不看它)变成下面图中的rw-r—–,实际上就是二进制啦。前三位是所属用户的权限,中间三位是文件所属组的权限,后三位是其它用户的权限。我们只需要让root用户有写入权限就行,所以就640就得了,当然,如果你想要权限给满,改成777,也是可以的,开心就好。
修改sudoers文件权限
修改完权限之后,就可以进去修改文件啦。由于搞这个OJ只有我自己solo,不需要分配什么组权限啥的,就只改我这个账号的权限就好,所以就只需要在root ALL=(ALL:ALL) ALL后面加上一行用户名 ALL=(ALL:ALL) ALL,保存退出就行啦。
赋予sudo权限
图中hwf就是我的用户名啦。新加的这句命令按理说可以放在别的地方,不过既然它的注释都写在那了,那就干脆放那里得了。

弄好sudo权限之后,顺手把sudoers文件的权限改回去吧

chmod 440 sudoers


3 安装JDK

搞定用户权限后,就可以切换用户然后开始装东西啦。

本来我是想装oracle java8的,然后过程十分曲折。。。
本来呢,按顺序使用下面这些命令是可以安装oracle java8的:

# 前期准备,否则系统会提示找不到第三句中add-apt-repository这个指令
sudo apt-get install python-software-properties
sudo apt-get install software-properties-common
# 加载源
sudo add-apt-repository ppa:webupd8team/java
# 更新系统
sudo apt-get update
# 安装
sudo apt-get install oracle-java8-installer
# 设置oracle-java8为默认
sudo apt-get install oracle-java8-set-default
# 查看版本信息
java -version
# 设置环境变量
cat >> /etc/environment << EOL
JAVA_HOME=/usr/lib/jvm/java-8-oracle
JRE_HOME=/usr/lib/jvm/java-8-oracle/jre
EOL
# 结束

但是!!在执行安装java8的时候,一直报错,说是http 400错误,下载失败,看得我一脸懵逼。于是上网搜了一波怎么清理掉刚才下载失败的东西重来一次,然而还是失败。最后心灰意冷,打算在win10这边进oracle官网下载完扔服务器,结果发现,官网的链接全都废了,都是400错误。。。。本来还以为是出了jdk10之后,官网就把8和9弃了,内心还有点小滑稽,直到我看到jdk10的链接也是400,才发现,我折腾了那么久,最后的原因居然是官网链接崩了。。。

于是乎,换成openjdk8,就一句话就安装完毕

sudo apt-get install openjdk-8-jdk


PS: 在我写这篇博客的时候,因为要看一下官网好了没,所以进去看了一波,然后就发现……oracle又正常了,于是就跑了一波上面贴的指令,把系统的jdk换成oracle java8,心满意足了。


4 tomcat

4.1 安装

这个似乎有没什么技术含量了,直接上tomcat官网下载一个tar.gz格式的压缩包,扔服务器(我直接放在刚才创的用户的主目录下),然后解压:

sudo tar -zxvf apache-tomcat-9.0.6.tar.gz

因为名字太长很烦,就重命名一下:

sudo mv apache-tomcat-9.0.6 tomcat9

网上的教程很多都说要打开xx文件写入jdk路径,不过我并没写入就可以正常使用tomcat了(玄学问题吗?)

弄好tomcat,我发现tomcat9这个文件夹下,有些文件的root账号才能处理的,这就又需要改权限了。。。

sudo chown -R hwf:hwf tomcat9/

这样就可以递归地把tomcat9目录下的文件和文件夹的所有者和群组都改成我这个账号啦。大伙自行把hwf改成你们的用户名就好。

启动tomcat,很简单,进入tomcat9/bin路径,用sudo运行startup.sh文件就好啦,注意,一定要是sudo或者root账号运行。

sudo ./startup.sh

之后在自己电脑浏览器网址栏输入ip:8080(或者域名:8080),发现居然上不去(如果是一直在加载中,就等一会,一开始启动tomcat可能会有点慢,直到浏览器说找不到网址之类的才是上不去),而在cmd里又能ping通,搜了一波才发现,是阿里云服务器默认禁用8080端口。。。进阿里云官网,登录后进入控制台,找到自己的服务器后,在安全->防火墙->添加规则那里把8080加进去。由于后续还有远程操控数据库,就顺便把数据库的也弄了。
阿里云服务器权限

弄完之后,在自己主机浏览器输入ip:8080,(这里的ip就是你服务器的ip),能进入到tomcat首页就是连接成功啦。

4.2 修改端口

弄完之后,我觉得每次都要输8080这个端口号很烦,就想把端口改成80,这样就不用输入端口号了(因为http默认端口就是80)。方法为:进入tomcat9/conf目录,然后编辑server.xml这个文件,把端口8080改成80,保存退出就好了。

cd tomcat9/conf
vim server.xml

修改端口
图中的port原本是8080,被我改成80了。

改完之后,重启tomcat就行了。进入tomcat9/bin目录下,然后:

./ shutdown.sh
./ startup.sh

之后在浏览器试一下,只输入ip或域名,看看能不能进。(老样子,刚启动得等大概十几秒才能加载进去)

4.3 修改项目路径

端口也搞定了,然后我又想折腾了。因为这个服务器我只要部署online judge这个服务而已,如果每次访问都要输入ip+项目名,那也是挺烦的,于是我把tomcat9/webapps/ROOT目录下的东西都删了,然后把项目的全部东西都扔到这个目录下,重启一波就行了(我也不确定需不需要重启,习惯性就重启了,没去验证)。这时候,在浏览器输入ip,就能直接进入到我们部署的服务啦。当然,项目的web.xml文件还需要有设置默认的主页。我这里是用JSP做的项目,修改的方式跟其它的可能不一样:进入tomcat9/webapps/ROOT/WEB-INF目录,修改web.xml文件。当然,在主机修改后再上传也是可以的。下图中红色方框内的东西就是啦。
ps:我还另外加了404错误和500错误的显示页面,一方面是原始页面太丑了,另一方面就是500错误原始页面会把代码出错的地方显示出来,这个给用户看到可不行。
修改欢迎界面

至此,tomcat的部署就告一段落了。

5 mysql

5.1 安装

因为我只需要装mysql服务就行了,所以就直接安装

sudo apt-get update # 更新系统
sudo apt-get install mysql-server

安装过程中会要求设置root密码,设置一波就好了。
安装完毕后,查看mysql是否已运行

systemstl status mysql.service

如果有提示Active:active (running),则说明mysql正在运行,否则的话就手动启动

sudo systemctl start mysql

然后就可以进入mysql啦

mysql -u root -p

然后输入安装的时候设置的密码就行了。

5.2 远程连接mysql

创建个叫做onlineJudge的数据库:

create database onlineJudge;

然后新建一个用户,给他操作onlineJudge这个数据库的权限:

create user '用户名'@'%' identified by '密码'; # %表示可以在任意IP使用
grant all privileges on onlineJudge.* to '用户名'@'%' identified by '密码';
flush privileges; # 刷新权限

然后在自己主机远程访问,发现居然报错,错误代码10061。搜了一波,网友说是mysql server绑定了本地地址,于是就打开 /etc/mysql/mysql.conf.d路径下的mysqld.cnf文件(我用的ubuntu 16.04,其它服务器的路径不确定是不是这个),找到

bind-address    = 127.0.0.1

把这一行前面加个#注释掉,重启mysql就好了:

sudo /etc/init.d/mysql restart

PS:如果使用的是阿里云服务器,然后没有把3306端口添加进去的话,远程访问好像也是会失败。具体的设置方式在上面tomcat安装那里有讲到。

5.3 修改mysql字符串编码

装完之后发现字符串编码是个难受的东西,所以又要改一波。
登录进去之后,先查看目前的编码格式

show variables like ‘character%’;

查看mysql字符串编码
发现mysql默认的编码居然不是utf8,所以要改一下。一共要改两个地方:

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

增加下图中框出来的那行:character-set-server=utf8
修改mysqld.cnf

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

增加下图中框出来的那行: default-character-set=utf8
这里写图片描述

都改好之后,重启mysql

sudo /etc/init.d/mysql restart

这时候登录进去,查看字符串编码,可以发现已经修改完毕了。
查看字符串编码

6 结束

搞定收工,服务器的配置大概就这样。mysql的一些基本命令我也写了一篇小记录。
https://blog.csdn.net/feng964497595/article/details/79642157

猜你喜欢

转载自blog.csdn.net/feng964497595/article/details/79683373