远程连接Linux搭建环境

远程连接、Linux环境搭建

1. 安装工具

环境准备:

各种安装包:Xshell Plus 6|Xshell 6、Xftp 5、linux版本的jdkLinux版本的MySQLLinux版本的Nginx

现在下载jdk需要登录Oracle:Oracle账号分享

我当时用的账号

用户名:nicabeta@email-wizard.com

密码:MQEemoh3pOsRAn2c4tjh

注册机:NetSarang_AIO_7in1_Keygen_v1.4_DFoX_URET

百度网盘(可能会失效):

Xshell Plus 6 【j5r8】

Xftp 5 【d3jq】

注册机 【6zcp】

RDM 【2m91】

Nginx-Linux 【xnno】

jdk-Linux 【bph9】

开始安装

  • Xshell Plus 6 或 Xshell 6
  1. 运行注册机,选择你安装的软件,点击Fix Host+Register,然后点击Generate,然后复制生成的序列号

  1. 输入上一步获得的序列号,用户名和公司名称随意,选择路径后安装即可。

  • Xftp同上:

​ 点下一步,安装即可。

2. 更换服务器的JDK

2.1. 拿到服务器ip

买的服务器会直接给你ip的,这里我用的虚拟机,桥接模式下与我本机的ip应该是一样的。

点左上角Applications,点Favorites下的 Terminal:

在弹出的命令行窗口,输入:

1
2
ifconfig
#获取ip配置信息,windows下命令是ipconfig

回车,即可看到ip信息,复制ens33里的inet后的ip地址:

2.2. 使用Xshell建立连接

打开Xshell 6,新建会话,名称随意,主机是刚刚的ip地址:

点击连接,在提示框输入服务器需要的用户名密码,都正确的话会连接成功,有时候第一次连接会报错,再连一次就好了。连接成功会显示:

2.3. 卸载open JDK

1.Xshell输入:

1
java -version

可看到当前java版本:

2.Xshell输入:

1
2
rpm -qa | grep jdk
#抓取jdk

3.Xshell输入:

1
2
3
rpm -e --nodeps #加要删除对象的完整名称(上面抓取时显示了),需要root身份,这里是:
rpm -e --nodeps java-1.8.0-openjdk-1.8.0.181-7.b13.el7.x86_64
rpm -e --nodeps java-1.8.0-openjdk-headless-1.8.0.181-7.b13.el7.x86_64

不报错,并且输入java -version提示找不到文件,即卸载成功:

2.4. 安装准备的JDK

1.Xshell输入:

1
2
pwd
#获取当前所在的目录(文件夹)路径

此时在/root目录下。

2.Xshell输入:

1
2
3
4
5
6
cd /usr/local
#进入指定目录,可用pwd确认当前所在的目录
mkdir java
#在当前目录 创建java文件夹
cd java
#进入java文件夹内,可用pwd确认当前所在的目录

点击帮助正下方的绿色按钮,打开Xftp,右边一般会自动定位到服务器的当前目录,左边是本机电脑,把下载好的jdk拖到右边就行了,注意目录:

3.Xshell输入

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
ls
#列出当前目录的文件名称
ll
#列出当前目录文件的详细信息

tar -zxvf 文件名
#解压tar包压缩文件,此处为:
tar -zxvf jdk-8u221-linux-x64.tar.gz

ls
#列出当前目录的文件名称
cd jdk1.8.0_221
#进入jdk解压后的文件夹
ls
#列出当前目录的文件名称

4.Xshell输入

1
2
vim /etc/profile
#编辑指定的文件,这里是配置环境变量

5.键盘按I键,进入Insert编辑,按方向键把光标移到最下方:

输入(##是注释):

1
2
3
4
##jdk1.8
export JAVA_HOME=/usr/local/java/jdk1.8.0_221
export PATH=$JAVA_HOME/bin:$PATH
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar

键盘按esc,输入冒号wq(意为保存并退出),回车。

此处输入:

1
2
:wq
#保存并退出

扩展知识:

1
2
:q!
#不保存强制退出s

6.Xshell输入:

1
2
3
4
5
6
cat /etc/profile
#将指定文件显示出来,这里是看一下刚刚的文件是否已保存
source /etc/profile
#使刚刚的配置文件生效
java -version
#验证jdk

正常的结果:

到此JDK安装配置结束。

3. 安装MySQL

环境准备

卸载mariadb

1
2
rpm -qa | grep mariadb
rpm -e maria....

安装mysql

  • yum安装方式:
1
2
3
4
5
6
#下载rpm文件
wget https://dev.mysql.com/get/mysql80-community-release-el7-3.noarch.rpm
#yum安装
yum -y install mysql80-community-release-el7-3.noarch.rpm
#安装mysql
yum -y install mysql-community-server
  • 官网下载mysql-8.0.17-1.el7.x86_64.rpm-bundle.tar安装包的方式

解压安装包,会得到common、server、client等rpm文件,依次安装即可。

安装common

1
2
3
4
#rpm -ivh rpm文件名 --nodeps --force
#--nodeps就是安装时不检查依赖关系
#--force就是强制安装
rpm -ivh mysql-c...-common... --nodeps --force

同样的命令再去装libs、client、server

配置mysql

  • 检查数据包
1
rpm -qa | grep mysql
  • 初始化
1
mysqld --initialize
  • 防火墙授权
1
2
3
4
5
6
#赋予myslq操作文件夹的权限
chown mysql:mysql /var/lib/mysql -R;
#启动mysql服务
systemctl start mysqld.service;
#设置开启启动
systemctl enable mysqld;
  • 查看密码
1
cat /var/log/mysqld.log | grep password
  • 登录
1
mysql -u root -p
  • 修改密码
1
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '123456';
  • 退出
1
exit

再用自己密码登录就行了

  • 开启远程访问,新建用户然后授权
1
2
3
4
5
6
7
#创建新用户,地址是任意地址
#@后面可以填ip
create USER 'sh'@'%' IDENTIFIED WITH mysql_native_password BY '123456';
#授权
grant all privileges on *.* to 'root'@'%' with grant option;

flush privileges;
  • 开放防火墙端口
1
2
3
4
5
6
7
8
#查看防火墙状态
systemctl status firewalld
#开启
systemctl start firewalld
#防火墙开放xxxx端口,xxx是端口号
firewall-cmd --zone=public --add-port=xxx/tcp --permanent
#重启防火墙
firewall-cmd --reload
  • 注意,linux严格区分大小写,查询语句也是如此,配置mysql忽略大小写的方法:

修改mysql配置文件

1
2
3
vim /etc/my.cnf
[mysqld]
lower_case_table_names=1
  • 若没找到该文件,用which看下mysql的安装位置
1
which mysqld

然后用得到的路径:

1
路径 --verbose --help |grep -A 1 'Default options'

会显示几个默认的文件位置,都没有的话,在这几个位置建个cnf文件就行了:

1
2
#参考的cnf文件:
安装路径/mysql/support-files/my-default.cnf

mysql日志位置:

1
2
3
cat /var/log/mysqld.log
#G跳到最后一行
vim /var/log/mysqld.log

4. 安装Redis

非关系型数据库,Redis是一个开源的使用C语言编写(3万多行代码),支持网络,可基于内存亦可持久化的日志型,Key-Value数据库,并提供多种语言的API。

持久化

Redis是内存数据库,数据都是存储在内存中,为了避免进程退出导致数据的永久丢失,需要定期将Redis中的数据以某种形式(数据或命令)从内存保存到硬盘。

  • RDB模式,默认启用,每隔一段时间,达到指定操作次数后,将数据存为文件。

  • AOF模式,默认不用,根据设置的条件,每秒或每次操作或由系统决定,将数据经历的指令保存为文件。

    • AOF重写,Redis会根据AOF的体积进行AOF重写,重写是将指令重新执行,然后把等价于最后结果的指令替换原来的一堆指令。
    • 持久化文件损坏修复,会把文件损坏的部分切掉,会牺牲部分数据,相当于截肢,之后数据会有所偏差。
  • 两种模式都启用时,以AOF为准。

通常,Redis将数据存储于内存中,或被配置为使用虚拟内存。通过两种方式可以实现数据持久化:使用快照(snapshot)的方式,将内存中的数据不断写入磁盘,或使用类似MySQL的binlog日志(aof但并不用于主从同步)方式,记录每次更新的日志。前者性能较高,但是可能会引起一定程度的数据丢失;后者相反。

数据类型

作为Key-value型存储系统数据库,Redis提供了键(Key)和值(value)映射关系。但是,除了常规的数值或字符串,Redis的键值还可以是以下形式之一,下面为最为常用的数据类型:

1
2
3
4
5
6
> String 字符串
> Hash 哈希表
> List 列表
> Set 集合
> Sorted set 有序集合
>

4.1. 准备安装包或wget下载

离线下载

服务器上选个存放安装包的目录,用wget下载

1
2
3
4
#进入存放目录
cd /usr/local
#wget加下载地址
wget http://download.redis.io/releases/redis-5.0.5.tar.gz

4.2. 准备安装环境

安装需要gcc编译,所以安装前需要看一下gcc的版本

1
2
#查看gcc版本
gcc -v

确认gcc版本是不是4.2以上,若没有gcc或版本不够,需要再安装gcc

1
2
#安装gcc
yum install gcc

装好后确认一下gcc版本。

4.3. Redis安装

解压下载好的Redis的压缩包

1
2
3
4
#解压
tar -zxvf redis-5.0.5.tar.gz
#进入解压出的文件夹
cd redis-5.0.5

尝试安装测试(必要)

1
2
3
4
#若报错,去百度对应提示
make MALLOC=libc
#测试安装,不管有没有错误,都会回滚。出错的话,根据错误提示去百度解决
make test

我这里错误是提示需要tcl支持,所以要安装tcl

1
2
3
4
#安装tcl
yum install tcl
#继续make测试,直到无错误提示
make test

正式安装

1
2
cd src
make install

无错,即成功。

4.4. 运行Redis

前台运行

在Redis安装目录下

1
2
#前台运行redis
./redis-server

前台运行的话,不能关闭那个界面,关闭的话就会关闭服务。

后台运行

配置服务

应该使用后台运行的方式,需要进行如下配置:

修改redis配置文件为后台模式启动

1
2
#修改redis配置文件
vi /usr/local/redis-5.0.5/redis.conf
  • 按i进入编辑模式,将daemonize no改为daemonize yes,esc,:wq保存退出。

daemonize意思为:是否守护线程启动(是否后台模式启动)

  • 修改ip绑定,将bind 127.0.0.1 修改为bind 0.0.0.0 (4个0),表示所有ip都可以连接。注意别改错了,是没有#号的bind 127.0.0.1。(这个时指定redis的客户端地址,安全考虑)
1
2
3
#bind 127.0.0.1
#->
bind 0.0.0.0
  • 设置密码(可选)

esc退出编辑模式,输入/require(搜索require),把#号去掉,然后requirepass后的值就是你的密码

1
requirepass password

将redis配置文件redis.conf复制到/etc/redis目录下,并改名为6379.conf

1
2
3
4
5
6
7
8
cd /etc
mkdir redis
cd redis
#把目标文件复制到当前目录
cp /usr/local/redis-5.0.5/redis.conf ./
#把目标文件移动到本目录,并重命名为
mv redis.conf 6379.conf
#tips:把目标文件覆盖复制到当前目录并改名为(cp -f 目标目录 6379.conf)

复制启动脚本到/etc/rc.d/init.d/,并改名为redisd

启动脚本为:/usr/local/redis-5.0.5/utils/redis_init_script

1
2
3
4
5
6
#把目标文件复制到指定目录下,并命名为redisd
cp /usr/local/redis-5.0.5/utils/redis_init_script /etc/rc.d/init.d/redisd
#或手动改名:
#cd /etc/rc.d/init.d/
#ls
#mv redis_init_script redisd

修改刚刚重命名的redisd文件,让它成为服务

1
2
cd /etc/rc.d/init.d/
vim redisd

按i进入编辑模式

  • 老版本需要在脚本文件的第一行后,加入一行(包括#号):
1
#chkconfig:2345 80 90

新版不用加。

  • 然后,修改EXEC、CLIEXEC的路径:
1
2
3
4
5
6
7
#原内容
EXEC=/usr/local/bin/redis-server
CLIEXEC=/usr/local/bin/redis-cli

#修改后的内容
EXEC=/usr/local/redis-5.0.5/src/redis-server
CLIEXEC=/usr/local/redis-5.0.5/src/redis-cli
  • 最后,找到case**in什么的那一块代码,在$EXEC $CONF 后面加上 &(空格+&符号+空格)

启动Redis

1
2
3
4
5
#添加开机启动
chkconfig redisd on
#防火墙开放6379端口
firewall-cmd --zone=public --add-port=6379/tcp --permanent
firewall-cmd --reload
1
2
3
4
5
6
7
8
9
10
11
12
#运行redis
service redisd start
#停止redis
service redisd stop
#修改redis配置文件
vi /etc/redis/6379.conf
#查看运行状态
ps -ef | grep redis
#强行kill进程,14399是目标进程的id
kill -9 14399
#移除pid文件
rm -f /var/run/redis_6379.pid

4.5. Redis使用

1
2
3
4
cd /usr/local/redis-5.0.5/src/
ls
#redis客户端
redis-cli

redis的一些命令,自行百度

1
2
3
4
5
6
#设置
set abc 123
#取值
get abc
#显示全部key
keys *

Redis命令表

RDM 提取码:【2m91】

5. 安装Nginx

5.1. 准备安装包

把安装文件传到服务器。

或者使用weget方式在服务器内下载也行:

1
2
3
cd /usr/local
weget http://nginx.org/download/nginx-1.17.1.tar.gz
#下载安装包到usr/local

解压

1
2
3
4
tar -zxvf nginx-1.17.1.tar.gz
#解压,z表示gzip压缩格式,x表示提取文件,v表示显示解压过程,f指定文件
ll
#显示当前文件夹的文件

5.2. 准备安装环境

安装前必须安装nginx所需的依赖库。

安装依赖,仔细执行:

1
2
3
4
5
6
7
8
yum install gcc-c++
yum install pcre
yum install pcre-devel
yum install zlib
yum install zlib-devel
yum install openssl
yum install openssl-devel
#遇到选项输y即可

5.3. Nginx安装

1
2
3
4
5
6
7
ll
#显示当前文件夹的文件
cd nginx-1.17.1
ll
#显示当前文件夹的文件
./configure
#执行configure文件,输一半名字按tab会自动补全文件名的

执行make安装

1
2
3
4
5
6
7
8
9
10
make install
#注意在nginx-1.17.1目录下执行
#它会将nginx安装到/usr/local/nginx目录下
cd ..
#返回上一目录
ll
#显示当前文件夹的文件
cd nginx
pwd
#显示当前所在的目录

配置Nginx开机启动

1
2
3
4
cd /lib/systemd/system
vim nginx.service
#创建nginx.service文件并编辑,也可以用touch命令创建。
#vim不行就vi

按I,添加如下内容:

1
2
3
4
5
6
7
8
9
10
11
12
13
[Unit]
Description=nginx
After=network.target

[Service]
Type=forking
ExecStart=/usr/local/nginx/sbin/nginx
ExecReload=/usr/local/nginx/sbin/nginx reload
ExecStop=/usr/local/nginx/sbin/nginx quit
PrivateTmp=true

[Install]
WantedBy=multi-user.target

esc

:wq 保存并退出,用cat检查下刚刚的文件。

接着输入:

1
2
systemctl enable nginx.service
#使其开机启动

安装配置,到此就完成了。

5.4. Nginx指令、运行检查

1
2
3
4
5
6
7
8
systemctl start nginx.service
#启动

systemctl stop nginx.service
#停止

systemctl restart nginx.service
#重启

启动Nginx,浏览器输入ip,若访问不到:

1
2
3
4
#添加80端口配置防火墙
firewall-cmd --zone=public --add-port=1422/tcp --permanent
#重新加载
firewall-cmd --reload

再去访问即可。

1
2
chmod a+x /usr/local/nginx
#访问权限,a+x ==> all user can execute 所有用户可执行

关于路径

nginx根目录是/nginx/html文件夹。我的是:/usr/local/nginx/html

比如在html文件夹下建images文件夹,里面放张图片123.png,那么图片的路径就是:http://ip地址/images/123.png

路径配置

比如在根部吗建立data文件夹,在data下建立www和images两个文件夹:

1
2
3
4
5
6
mkdir /data
cd /data
mkdir www
cd ..
mkdir images
ll

然后打开nginx的配置文件/usr/local/nginx/conf/nginx.conf

注释掉原文http{}代码块,或者再其基础上修改成:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
http{
server {
#root的路径实际是nginx文件夹内的相对路径,/是主机根目录
#把访问时的ip地址/,设置为本机根目录下的/data/www文件夹
# 首页设为其文件夹下的index.html或index.htm
location / {
root /data/www;
index index.html index.htm;

}
#地址栏里"/"后的路径是直接匹配目录/data下的路径
#如访问ip地址/images时,配匹配/data/images
#把访问时的ip/images路径,设置为
location /images/ {
root /data;
}
}
}

关于SSL证书

6.Tomcat&Maven热部署

Tomcat准备

Tomcat的安装与Windows一致,解压相应的tomcat-*.tar.gz文件即可

  • 端口号的修改在conf/server.xml配置文件中改
  • 增加角色和权限,修改conf/tomcat-user.xml:
1
2
3
<role rolename="manager-gui" />
<role rolename="manager-script" />
<user username="tomcat" password="tomcat" roles="manager-gui, manager-script"/>

然后在tomcat-manager界面,deploy你的war包即可,热部署无需重启服务器。

Maven插件配置

增加Pom.xml中的tomcat7插件

1
2
3
4
5
6
7
8
9
10
11
12
<!-- 配置Tomcat插件 -->
<plugin>
<groupId>org.apache.tomcat.maven</groupId>
<artifactId>tomcat7-maven-plugin</artifactId>
<configuration>
<port>8081</port>
<path>/</path> <!--对应tomcat中的ROOT文件夹-->
<url>http://yourIpAndPort/manager/text</url> <!--其中/manager/text是固定写法-->
<username>tomcat</username> <!--你的tomcat角色用户名和密码-->
<password>tomcat</password>
</configuration>
</plugin>

路径为/时,由于tomcat中ROOT目录已经存在,所以使用tomcat7:redeploy命令,若path为其他值,直接deploy即可,建议先clean,-Dskiptest可以跳过测试阶段,-X输出debug信息。