周游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 | JAVA_HOME=/usr/local/jdk1.8.0_181 |
最后的冒号相当于Window中的;
,其实就是衔接上面的PATH而已,最后需要我们source /etc/profile
跟新一下
然后我们可以原地使用javac试一下
小插曲:
我配置的时候忘记加上
$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端口确实被监听
不过你在window上使用telnet
可能会发现连不上,最大的原因应该是防火墙,你可以选择把防火前关闭
1 | service stop iptables #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 | !/bin/sh |
Shell看不懂没关系,后面学完Shell回来再看,我们把该文件保存在/etc/rc.d/init.d/
目录下,命名为tomcat.sh
,然后给予它可执行的权限
1 | chmod u+x tomcat.sh |
最后使用
1 | chkconfig --add tomcat |
最后查询一下
1 | chkconfig --list |
这样就可以了
如何让一个程序开机就跑起来
只需要在
/etc/rc.local
最后添加
1 sh 脚本即可
MySQL
MySQL作为我们最常用的数据库,想必大家在搭建它的时候都遇到了不少的问题。这里使用的时Source Code来演示,也是体验一下搭建的全过程,让我们来捋一下整个安装的过程吧
第一步:下载MySQL
大家可以去官网下载,或者直接yum
安装也行,我是顺着老师的教学去官网下载源码包自己编译的
使用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 |
这个时间要很长,该恰饭恰饭
- 编译时出现Bison executable not found in PATH,检查Bison有没有安装
第四步 配置
现在已经安装好了,需要你创建一个mysql用户以及一个mysql组,让/usr/local/mysql
属于该组和该用户
1 | groupadd 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 | To start mysqld at boot time you have to copy |
他的意思是你可以执行上面那两条指令设置密码
1 | ./bin/mysqladmin -u root password 'new-password' |
或者让MySQL给你设置一个密码
1 | ./bin/mysqld & #务必先启动mysql再初始化 |
因为我之前那几个都不行,所以我就用了./bin/mysql_secure_installation
这个初始化了,不过在这之前你需要启动一下Mysqld才可以设置
他会问你几个问题
- Change the root password 是否设置密码:你设置一下就好
- Remove anonymous users? 是否删除不知名用户,删了i就好
- Disallow root login remotely? 是否禁止root远程登录,果断N
- Remove test database and access to it?要不要删除test数据库
- Reload privilege tables now? 是不是马上更新权限表格,是的
你可能会遇到ERROR 2002 (HY000): Can’t connect to local MySQL server through socket ‘/tmp/mysql.sock’ (2)。其实就是mysqld没有跑起来,你可以先把socket文件删了,然后运行
./bin/mysqld
款看能不能起来,不能起来就款看日志你可能会从日志中发现:./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 | GRANT ALL PRIVILEGES ON *.* TO '用户(root)'@'%' IDENTIFIED BY '密码' WITH GRANT OPTION; |
不过刚刚初始化的时候我已经设置过了,现在只需要打开3306端口
1 | firewall-cmd --add-port=3306/tcp --permanent |
用Navicat连一下试试
还有一个问题,每次都要启动mysqld
会很麻烦,mysql
为我们写好了服务脚本,我们只需要拷贝过去启动服务就好
1 | cp support-files/mysql.server /usr/lib/systemd/system/mysql.service |
但是你会发现它不行,可能是脚本和当前系统版本对不上,所以我去找了另一个
1 | [Unit] |
大家只需要死用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 | MINIO_ROOT_USER=minioadmin |
记得
1 | source /etc/profile |
然后后台挂载运行就好
1 | nohup /minio server /data > logfile 2>&1 & |
打开端口
1 | firewall-cmd --add-port=9000/tcp --permanent |
浏览器访问虚拟机IP:9000
,打开界面之后添加一个Bucket
,上床图片
之前有试过使用API一直不能上传图片,主要原因是需要设置权限
设置读写即可,如果你希望将他变成服务可以参考MySQL的脚本
参考
关于配置文件的详细设置:https://blog.csdn.net/lienfeng6/article/details/78140404
安装流程参考:https://www.linuxidc.com/linux/2015-07/119785.htm
需要搭建的东西远远不止这些啦,以前还搭建过FastDFS,有时间的话给大家总结一下