周游Linux操作系统——Javad环境定制

作者:Rhythm_2019

Emial:rhythm_2019@163.com

学习时间:2021.02.11

乘胜追击,作为一名Java程序员,应该学会一些软件的安装

  • JDK
  • Tomcat
  • Ecplise(这个直接使用就好,就不搭建了)
  • MySQL
  • MinIO

JDK配置

大家其实可以用yum快速安装的,但是我还是手动安装一下,我先把jdk1.8传过去放在/usr/local/jdk1.8/下面先

大家记不记得jdk配置最重要两个环境变量不

  • JAVA_HOME: 指定jdk安装目录
  • PATH: 指定/bin目录,以后可以快速使用指令

Linux中的环境变量是在/etc/profile文件里面,我们使用vim在最后加上两句话即可

1
2
JAVA_HOME=/usr/local/jdk1.8.0_181
PATH=/usr/local/jdk1.8.0_181/bin:$PATH

最后的冒号相当于Window中的;,其实就是衔接上面的PATH而已,最后需要我们source /etc/profile跟新一下

然后我们可以原地使用javac试一下

javac测试.png

小插曲:

我配置的时候忘记加上$PATH了,导致我一些指令用不了,这时候可以

1
export PATH=/usr/bin:/usr/sbin:/bin:/sbin:/usr/X11R6/bin

设置临时环境变量,然后vi就可以用了

还有一点就是大家不要把Window的jdk直接拿过去用哈,不一样的

这样JDK就好了

Tomcat

我们只需要上传解压Tomcat,在bin中运行startup.sh就可以了

你可以使用netstat -tuanp查看一下,8080端口确实被监听

tomcat配置1.png

不过你在window上使用telnet可能会发现连不上,最大的原因应该是防火墙,你可以选择把防火前关闭

1
2
service stop iptables #CentOS7之前
systemctl stop firewalld #CentOS7

但是这样其他端口也会被外部用户访问,更好的方式是只打开8080端口

1
firewall-cmd --zone=public --add-port=8080/tcp --permanent

然后

1
firewall-cmd --reload

最后查询一下

1
firewall-cmd --zone=public --query-port=8080/tcp --permanent

他会返回yes,如果你想要删掉可以

1
firewall-cmd --zone=public --remove-port=8080/tcp --permanent

好啦,在我们的电脑上输入虚拟机IP:8080就可以看到我们的Tomcat首页啦

当然啦,我们其实也可以将其作为一个服务来启动,我们就拿Tomcat为例子学习一下服务的添加和自启动

我们需要先编写一个tomcat的服务脚本

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
#!/bin/sh
#chkconfig: 2345 10 90
# description: Starts and Stops the Tomcat daemon.
#by jj
##############################################
#Startup script for Tomcat on Linux

#filename tomcat.sh

#Make sure the Java and the tomcat installation path has been added to the PATH
JAVA_HOME=/usr/local/java/jdk1.8.0_141
#JDK安装目录
CATALINA_HOME=/usr/local/tomcat/tomcat-eoa-8074
#tomcat安装目录
export JAVA_HOME
export CATALINA_HOME

###############################################
start_tomcat=$CATALINA_HOME/bin/startup.sh #tomcat启动文件
stop_tomcat=$CATALINA_HOME/bin/shutdown.sh #tomcat关闭文件
start() {
echo -n "Starting tomcat: "
${start_tomcat}
echo "tomcat start ok."
}
stop() {
echo -n "Shutting down tomcat: "
${stop_tomcat}
echo "tomcat stop ok."
}
# See how we were called

case "$1" in
start)
start
;;
stop)
stop
;;
restart)
stop
sleep 10
start
;;
*)
echo "Usage: $0 {start|stop|restart}"
esac
exit 0

Shell看不懂没关系,后面学完Shell回来再看,我们把该文件保存在/etc/rc.d/init.d/目录下,命名为tomcat.sh,然后给予它可执行的权限

1
chmod u+x tomcat.sh

最后使用

1
2
chkconfig --add tomcat
chkconfig --level 3 tomcat on

最后查询一下

1
chkconfig --list

这样就可以了

如何让一个程序开机就跑起来

只需要在/etc/rc.local最后添加

1
sh 脚本

即可

MySQL

MySQL作为我们最常用的数据库,想必大家在搭建它的时候都遇到了不少的问题。这里使用的时Source Code来演示,也是体验一下搭建的全过程,让我们来捋一下整个安装的过程吧

第一步:下载MySQL

大家可以去官网下载,或者直接yum安装也行,我是顺着老师的教学去官网下载源码包自己编译的

下载MySQL源码包.png

使用FTP上传到服务器中

第二步 删除早期版本、安装相关依赖

大家用rpm -qa | grep就可以看到之前有没有安装过了,有的话用rpm -e卸载

接下来安装下面依赖,很重要,不然预编译的时候会失败

1
yum install –y cmake openssl openssl-devel ncurses ncurses-devel gcc gcc-c++ bison autoconf

第三步 编译安装MySQL

先创建对应文件夹先

1
mkdir -p /usr/local/mysql/data

我打算把MySQL安装在/usr/local/mysql/里面,数据放在data目录里

我的安装包在/opt下,解压安装包

1
tar -xzvf mysql-5.6.51.tar.gz

先对编译做准备

1
cmake . -DCMAKE_INSTALL_PREFIX=/usr/local/mysql -DMYSQL_DATADIR=/usr/local/mysql/data  -DDEFAULT_CHARSET=utf8-DDEFAULT_COLLATION=utf8_general_ci -DEXTRA_CHARSETS=all -DENABLED_LOCAL_INFILE=1  -DWITH_SSL=system

参数说明:

  • -DCMAKE_INSTALL_PREFIX=/usr/local/mysql //安装目录

  • -DINSTALL_DATADIR=/usr/local/mysql/data //数据库存放目录

  • -DDEFAULT_CHARSET=utf8 //使用utf8字符

  • -DDEFAULT_COLLATION=utf8_general_ci //校验字符

  • -DEXTRA_CHARSETS=all  //安装所有扩展字符集

  • -DENABLED_LOCAL_INFILE=1 //允许从本地导入数据

如果编译失败了请检查是否安装依赖,需要重新编译的话要删除该文件

1
rm -f CMakeCache.txt

然后

1
make && make install

这个时间要很长,该恰饭恰饭

  1. 编译时出现Bison executable not found in PATH,检查Bison有没有安装

第四步 配置

现在已经安装好了,需要你创建一个mysql用户以及一个mysql组,让/usr/local/mysql属于该组和该用户

1
2
3
# groupadd mysql
useradd mysql
chown -r mysql:mysql /usr/local/mysql

进去里面,把data目录页做一下归属

1
chown -R mysql:mysql /usr/local/mysql/data

然后需要我们写一下my.conf,但是在这之前需要我们先备份一下/etc/my.conf

1
mv /etc/my.cnf /etc/my.cnf.bak

进入MySQL的support-files目录,找到my-default.cnf,将他放在etc下面

1
cp my-default.cnf /etc/my.cnf

注意:最好自己编辑一下my.cnf的内容:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
[client]
default-character-set=utf8
port=3306
#socket=/var/lib/mysql/mysql.sock

[mysql]
default-character-set=utf8

[mysqld]
init_connect='SET collation_connection = utf8_unicode_ci'
init_connect='SET NAMES utf8'
character-set-server=utf8
collation-server=utf8_general_ci
skip-character-set-client-handshake
datadir=/usr/local/mysql/data
basedir=/usr/local/mysql
#socket=/var/lib/mysql/mysql.sock
user=mysql
symbolic-links=0

[mysqld_safe]
log-error=/var/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid

然后执行一下数据库的初始化

1
scripts/mysql_install_db --user=mysql

/bin加入环境变量中

1
PATH=/usr/local/mysql/bin:$PATH

记得source /ect/profile,输入MySQL会有反应

第五步 启动

大家进行初始化的时候会看到控制台的提示:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
To start mysqld at boot time you have to copy
support-files/mysql.server to the right place for your system

PLEASE REMEMBER TO SET A PASSWORD FOR THE MySQL root USER !
To do so, start the server, then issue the following commands:

./bin/mysqladmin -u root password 'new-password'
./bin/mysqladmin -u root -h localhost.localdomain password 'new-password'

Alternatively you can run:

./bin/mysql_secure_installation

which will also give you the option of removing the test
databases and anonymous user created by default. This is
strongly recommended for production servers.

他的意思是你可以执行上面那两条指令设置密码

1
2
./bin/mysqladmin -u root password 'new-password'
./bin/mysqladmin -u root -h localhost.localdomain password 'new-password'

或者让MySQL给你设置一个密码

1
2
./bin/mysqld & #务必先启动mysql再初始化
./bin/mysql_secure_installation

因为我之前那几个都不行,所以我就用了./bin/mysql_secure_installation这个初始化了,不过在这之前你需要启动一下Mysqld才可以设置

他会问你几个问题

  1. Change the root password 是否设置密码:你设置一下就好
  2. Remove anonymous users? 是否删除不知名用户,删了i就好
  3. Disallow root login remotely? 是否禁止root远程登录,果断N
  4. Remove test database and access to it?要不要删除test数据库
  5. Reload privilege tables now? 是不是马上更新权限表格,是的
  1. 你可能会遇到ERROR 2002 (HY000): Can’t connect to local MySQL server through socket ‘/tmp/mysql.sock’ (2)。其实就是mysqld没有跑起来,你可以先把socket文件删了,然后运行./bin/mysqld款看能不能起来,不能起来就款看日志

  2. 你可能会从日志中发现:./bin/mysqld: Character set ‘utf8-DDEFAULT_COLLATION=utf8_general_ci’ is not a compiled character set and is not specified in the ‘/work/installed/mysql/share/charsets/Index.xml’ file,需要你修改一下/etc/my.cnf

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    [client]
    default-character-set=utf8
    port=3306
    #socket=/var/lib/mysql/mysql.sock

    [mysql]
    default-character-set=utf8

    [mysqld]
    init_connect='SET collation_connection = utf8_unicode_ci'
    init_connect='SET NAMES utf8'
    character-set-server=utf8
    collation-server=utf8_general_ci
    skip-character-set-client-handshake
    datadir=/usr/local/mysql/data
    basedir=/usr/local/mysql
    #socket=/var/lib/mysql/mysql.sock
    user=mysql
    symbolic-links=0

    [mysqld_safe]
    log-error=/var/log/mysqld.log
    pid-file=/var/run/mysqld/mysqld.pid

    主要是编码

现在只要再mysqld运行情况下就可以进入mysql了,我们还需要允许外部用户链接MySQL

1
2
GRANT ALL PRIVILEGES ON *.* TO '用户(root)'@'%' IDENTIFIED BY '密码' WITH GRANT OPTION;
flush privileges;

不过刚刚初始化的时候我已经设置过了,现在只需要打开3306端口

1
2
firewall-cmd --add-port=3306/tcp --permanent
firewall-cmd --reload

用Navicat连一下试试

mysql链接成功.png

还有一个问题,每次都要启动mysqld会很麻烦,mysql为我们写好了服务脚本,我们只需要拷贝过去启动服务就好

1
cp support-files/mysql.server  /usr/lib/systemd/system/mysql.service

但是你会发现它不行,可能是脚本和当前系统版本对不上,所以我去找了另一个

1
2
3
4
5
6
7
8
9
10
11
12
13
14
[Unit]
Description=Mysql
After=syslog.target network.target remote-fs.target nss-lookup.target

[Service]
Type=forking
PIDFile=/usr/local/mysql/data/host01.pid
ExecStart=/usr/local/mysql/support-files/mysql.server start
ExecReload=/bin/kill -s HUP $MAINPID
ExecStop=/bin/kill -s QUIT $MAINPID
PrivateTmp=false

[Install]
WantedBy=multi-user.target

大家只需要死用ehco "" > mysql.service清空然后复制进去就好,最后记得重启服务

1
systemctl daemon-reload

最后设置系统启动

1
systemctl enable mysql

忘记密码的话再my.cnf加上

1
skip-grant-tables

然后执行

1
set password for ‘root’@‘localhost’=password(‘123456’);

Minio

我们再搭建一个对象存储的服务吧,这个看上不会很麻烦

先下载

1
wget https://dl.minio.io/server/minio/release/linux-amd64/minio

给他一个执行权限

1
chmod 744 minio

然后配置账户密码到环境变量中

1
2
MINIO_ROOT_USER=minioadmin
MINIO_ROOT_PASSWORD=rhythm_2019

记得

1
source /etc/profile

然后后台挂载运行就好

1
nohup /minio server /data > logfile 2>&1 &

打开端口

1
firewall-cmd --add-port=9000/tcp --permanent

浏览器访问虚拟机IP:9000,打开界面之后添加一个Bucket,上床图片

minio搭建1.png

之前有试过使用API一直不能上传图片,主要原因是需要设置权限

minio搭建2.png

minio搭建3.png

设置读写即可,如果你希望将他变成服务可以参考MySQL的脚本

参考

关于配置文件的详细设置:https://blog.csdn.net/lienfeng6/article/details/78140404

安装流程参考:https://www.linuxidc.com/linux/2015-07/119785.htm


需要搭建的东西远远不止这些啦,以前还搭建过FastDFS,有时间的话给大家总结一下