Linux软件安装方式
本地安装
把需要的软件压缩包下载到linux主机,在主机上直接解压启动即可完成本地安装,即绿色版安装
把需要的rpm软件包下载到linux主机,在主机上使用rpm命令完成本地安装
把需要的源码包下载到linux主机,在主机上执行tar,./configure,make install 命令完成源码安装
源码安装
linux软件都是用C/C++程序开发,所谓源码安装,是直接提供程序源代码,需要自行编译,然后生成目标可执行程序。类似提供的.java文件,需要自己编译.class,然后打包为jar,然后运行。源代码形式的特点:操作复杂、编译时间长、极易出现问题、依赖关系复杂,比较适合于专门做linux系统开发的人员。
绝大多数开源软件都是直接以原码形式发布的
源代码一般会被打成.tar.gz的归档压缩文件
源代码需要编译成为二进制形式之后才能够运行使用
源代码基本编译流程:
1).configure 检查编译环境;
2)make对源代码进行编译;
3)make insall 将生成的可执行文件安装到当前计算机中
RPM安装
RPM 是 LINUX 下的一种软件的可执行程序,你只要安装它就可以了。这种软件安装包通常是一个RPM包(Redhat Linux Packet Manager,就是Redhat的包管理器),后缀是.rpm。RPM是Red Hat公司随Redhat Linux推出了一个软件包管理器,通过它能够更加轻松容易地实现软件的安装。
安装软件:执行rpm -ivh rpm包名,如:rpm -ivh apache-1.3.6.i386.rpm
升级软件: 执行rpm -Uvh rpm包名。
卸载安装: 执行rpm -e rpm包名。
查询软件包的详细信息:执行rpm -qpi rpm包名
查询某个文件是属于那个rpm包的:执行rpm -qf rpm包名
查该软件包会向系统里面写入哪些文件:执行 rpm -qpl rpm包名
一般使用步骤如下:
rpm –i software.rpm(安装);
rpm -e software.rpm(卸载);
rpm –U software.rpm(升级形式安装);
rpm –ivh http://www.linuxcast.net/software.rpm(支持通过http\ftp协议形式安装)
rpm软件包形式的管理虽然方便,但是需要手工解决软件包的依赖关系。很多时候安装一个软件安装一个软件需要安装1个或者多个其他软件,手动解决时,很复杂,yum可以轻松解决这些问题。
在线安装
YUM安装
yum(全称为 Yellow dog Updater, Modified)是一个在Fedora和RedHat以及CentOS中的软件包管理器,简单理解Yum是rpm的前端程序。它能够从指定的服务器自动下载RPM包并且安装,可以自动处理依赖性关系,并且一次安装所有依赖的软件包,无须繁琐地一次次下载、安装。
yum仓库用来存放所有的现有的.rpm包,当使用yum安装一个rpm包时,需要依赖关系,会自动在仓库中查找依赖软件并安装。仓库可以是本地的,也可以是HTTP、FTP、nfs形式使用的集中地、统一的网络仓库。
其特点总结如下:
1) 自动解决依赖关系
2) 可以对rpm进行分组,基于组进行安装操作
3) 引入仓库概念,支持多个仓库
4) 配置简单
常规使用如下:
# yum install 安装;
# yum remove卸载;
# yum update 升级制定软件
软件安装与配置
部署环境(CentOS 7)
服务/软件 | 端口 | 备注 |
jdk8 | - | JAVA的编译和运行环境 |
mysql/mariadb | 3306 | 持久化关系型数据库 |
tomcat | 8080 | 服务器 |
nginx | 80 | 反向代理服务器 |
把拖拽软件中的所有软件拖拽到linux的 /opt目录中。
![](https://i-blog.csdnimg.cn/blog_migrate/9e5918a45df9f39793871031e1169456.png)
scp 上传
#scp 源码文件路径 目标文件路径
# 把本地文件上传到服务器 (当前Windows系统目录)
scp ./*.* root@192.168.200.130:~/soft
# 把远程服务器用户目录/soft下所有文件,下载到本地
scp root@192.168.200.130:~/soft/*.* ./
1、安装jdk【rpm本地安装】
1)查看当前linux系统是否已经安装java
输入 rpm -qa | grep java
如果有已经安装的jdk ,需要使用以下命令删除
2) 卸载JDK
rpm -e --nodeps <包的名字>
3) 上传jdk到linux
4)安装jdk
rpm -ivh jdk-8u181-linux-x64.rpm
5)java -version测试是否成功
java -version
展示以下内容代表OK
java version "1.8.0_181"
Java(TM) SE Runtime Environment (build 1.8.0_181-b13)
Java HotSpot(TM) 64-Bit Server VM (build 25.181-b13, mixed mode)
2、安装mysql(mariadb)【yum在线安装】
MariaDB数据库管理系统是MySQL的一个分支,主要由开源社区在维护,采用GPL授权许可 MariaDB的目的是完全兼容MySQL,包括API和命令行,使之能轻松成为MySQL的代替品。在存储引擎方面,使用XtraDB(英语:XtraDB)来代替MySQL的InnoDB
1)查看CentOS自带的mysql
输入 rpm -qa | grep mysql
2)将自带的mysql卸载
rpm -e --nodeps <包的名字>
3)yum安装
yum -y install mariadb-server
4)启动mysql
systemctl start mariadb
5)设置root密码
注:这只是设置root用户在本机(linux)登录时的密码
mysqladmin -u root password 'root'
6)进入mysql
mysql -u root -p
mysql -u root -p
输入了 root 看不到
![](https://i-blog.csdnimg.cn/blog_migrate/91968a2584a8b6a44d12114b0dcbae41.png)
进入到数据库的执行命令行里面了。
7)进入mysql,并执行下面sql
保证密码和本地一致
下面的话在mysql数据库里面里面执行
-- 查看当前的数据库
show databases;
-- 打开mysql
use mysql ;
-- 查看所有表
show tables;
-- 我们不用ipv6的地址,直接把host改为%,表示所有客户端都可以连接;同时设置密码为root
update user set host='%' ,password=password("root") where user='root' and host = '::1' ;
-- 刷新后才能生效
flush privileges;
退出数据库命令操作
exit;
8) 开放端口号
# 开放端口命令
firewall-cmd --zone=public --add-port=3306/tcp --permanent
#重新加载配置
firewall-cmd --reload
9) 客户端工具
![](https://i-blog.csdnimg.cn/blog_migrate/8aac45e6609cda4bd0ff2edee0e21d38.png)
3、配置tomcat【本地安装--解压缩】
cd /usr/local 下
项目部署需要tomcat , 配置端口号。
下面需要使用uzip命令(根据当前系统情况而定,不是必须),先安装
cd /usr/local
#获取安装列表
yum list | grep zip/unzip
#提示输入时,请输入y
yum install zip
#提示输入时,请输入y
yum install unzip
解压tomcat压缩包到 /local目录下
unzip -d /usr/local apache-tomcat-8.5.47.zip
启动apache-tomcat-8.5.47
#确保启动文件有可执行权限,先修改权限
chmod 755 /usr/local/apache-tomcat-8.5.47/bin/*.sh
#启动
/usr/local/apache-tomcat-8.5.47/bin/startup.sh
开放8080端口
# 开端口命令
firewall-cmd --zone=public --add-port=8080/tcp --permanent
#重新加载配置
firewall-cmd --reload
测试tomcat
![](https://i-blog.csdnimg.cn/blog_migrate/d10df7e7cd424125a9f6e7a0a9b323d0.png)
启动两以上个tomcat,需要配置端口
4、安装Nginx 【本地安装--源码安装】
Nginx* (engine x) 是一个高性能的HTTP和反向代理web服务器,同时也提供了IMAP/POP3/SMTP服务。Nginx是由伊戈尔·赛索耶夫为俄罗斯访问量第二的Rambler.ru站点(俄文:Рамблер)开发的,第一个公开版本0.1.0发布于2004年10月4日,2011年6月1日,nginx 1.0.4发布。
Nginx是一款轻量级的Web 服务器/反向代理服务器及电子邮件(IMAP/POP3)代理服务器,在BSD-like 协议下发行。其特点是占有内存少,并发能力强,事实上nginx的并发能力在同类型的网页服务器中表现较好,中国大陆使用nginx网站用户有:百度、京东、新浪、网易、腾讯、淘宝等。
安装前准备
#安装Nginx依赖环境,-y表示所有提示默认选择y
#nginx的http模块使用pcre来解析正则表达式,所以需要在linux上安装pcre库:
yum -y install pcre pcre-devel
#nginx使用zlib对http包的内容进行gzip,所以需要在linux上安装zlib库:
yum -y install zlib zlib-devel
#nginx不仅支持http协议,还支持https,所以需要在linux安装openssl库:
yum -y install openssl openssl-devel
# 安装gcc编译环境
yum -y install gcc gcc-c++ autoconf automake make
源码安装
cd /opt
#解压,并进入解压文件夹
tar -xvf nginx-1.14.2.tar.gz
cd /opt/nginx-1.14.2
#编译并安装配置
./configure 配置
make 编译
# 安装的意思,就是把可执行文件复制到/usr/loca/nginx下
make install 安装
安装成功之后,就会在/usr/local下多出了一个nginx目录.
使用Nginx
#进入nginx的sbin目录
cd /usr/local/nginx/sbin
#在sbin目录下启动
./nginx
#在sbin目录下停止----需要再用
./nginx -s stop
#在sbin目录下重写加载--需要再用
./nginx -s reload
#修改端口(默认端口80)---需要再用
vi /usr/local/nginx/conf/nginx.conf 配置文件
#开放80端口
firewall-cmd --zone=public --add-port=80/tcp --permanent
#重新加载配置
firewall-cmd --reload
#查看是否有nginx的线程是否存在
ps -ef | grep nginx netstat -an -t -u | grep 80
在浏览器输入:http://192.168.132.131/
![](https://i-blog.csdnimg.cn/blog_migrate/42ab016a9d9f7ea1226910995c6ab348.png)
部署Web项目
部署之前的综合案例,部署前先把数据库安装好,然后再把项目的war包copy到tomcat安装目录即可。
初始化项目数据库
msyql客户端工具连接VM中的mysql
在客户端工具中初始化数据库脚本
部署项目war包
使用IDEA打包web程序为.war文件
停止当前的tomat服务器,执行bin/shutdown.sh
找到 apache-tomcat-8.5.47 --webapps 的ROOT目录,改名为ROOT-bak
把项目war包copy到apache-tomcat-8.5.47目录的webapps目录下
把项目 改名 为ROOT.war名字
启动Tomcat服务器,执行bin/startup.sh
修改配置文件并测试
jdbc.properties如果需要使用vim打开并修改。
在windows浏览器输入网址,并测试是否显示正常
如果显示不正常,请查看日志:
tail -f catalina.2021-05-16.log
Nginx反向代理
正向代理
正向代理类似一个中转站,代理内部访问外部资源。
举个例子:
我是一个用户,我访问不了某网站,但是我能访问一个代理服务器,这个代理服务器呢,它能访问那个我不能访问的网站,于是我先连上代理服务器,告诉他我需要那个无法访问网站的内容,代理服务器去取回来,然后返回给我。从那个网站的角度来看,只在代理服务器来取内容的时候有一次记录,有时候并不知道是用户的请求,也隐藏了用户的资料,这取决于代理告不告诉网站。
注意:客户端必须设置正向代理服务器,当然前提是要知道正向代理服务器的IP地址,还有代理程序的端口。
总结来说:正向代理 是一个位于客户端和原始服务器(origin server)之间的服务器,为了从原始服务器取得内容,客户端向代理发送一个请求并指定目标(原始服务器),然后代理向原始服务器转交请求并将获得的内容返回给客户端。客户端必须要进行一些特别的设置才能使用正向代理。
正向代理的用途:
1. 访问原来无法访问的资源,如google
2. 可以做缓存,加速访问资源
3. 对客户端访问授权,上网进行认证
4. 代理可以记录用户访问记录(上网行为管理),对外隐藏用户信息
反向代理
反向代理(Reverse Proxy)方式是指以代理服务器来接受internet上的连接请求,然后将请求转发给内部网络上的服务器,并将从服务器上得到的结果返回给internet上请求连接的客户端,此时代理服务器对外就表现为一个服务器。反向代理的作用
保证内网的安全,可以使用反向代理提供防火墙(WAF)功能,阻止web攻击。大型网站,通常将反向代理作为公网访问地址,Web服务器是内网。
负载均衡,通过反向代理服务器来优化网站的负载。当大量客户端请求代理服务器时,反向代理可以集中分发不同用户请求给不同的weab服务器进行处理请求。(本阶段不实现,负载均衡技术项目阶段讲解)
反向代理配置
打开nginx默认配置文件
vi /usr/local/nginx/conf/nginx.conf
定义location
http{
upstream goods{
server 192.168.200.130:8080;
#server 192.168.200.129:8080;
}
server {
listen 80;
server_name localhost;
location / {
root html;
#proxy_pass http://192.168.200.130:8080
proxy_pass http://goods;
index index.html index.htm;
}
}
}
http块 一个http处理模块,可进行http的相关参数配置,内可以包含多个server块;
upstream块 配置反向代理及负载均衡,可以写多个upstream块,是定义在server块前面。
server localhost:8080; localhost可以指向网络任何一台主机。
server块 包含在http{}内部,每一个server{}都是一个虚拟主机(站点)监听
listen 监听端口
server_name 用于与http请求header头部的Host匹配
location 路径配置,符合某个路径执行块内规则
/ 代表根下资源
root html 是根下的资源,可以从html目录获取。
index 默认页面(不输入网页时,默认访问页)
![](https://i-blog.csdnimg.cn/blog_migrate/fc30ed015a0c8338710ad92cd7671465.png)
![](https://i-blog.csdnimg.cn/blog_migrate/4276138145716b4d301f30a1f56d742c.png)
需要重新刷一遍 效果会更好
#进入nginx的sbin目录
cd /usr/local/nginx/sbin
#在sbin目录下停止
./nginx -s stop
#重启
./nginx -s reload
#在sbin目录下启动
./nginx
附录
安装iptables服务 【yum安装】
iptables是linux 系统自带的优秀且完全免费的基于包过滤的防火墙工具、它的功能十分强大、使用非常灵活、可以对流入、流出及流经服务器的数据包进行精细的控制。特别是它可以在一台非常低配置下跑的非常好。 centos系统,默认仅仅开放了22端口,其他端口需要使用iptables进行管理(开放、删除、保存规则等)
安装iptables
yum install iptables-services
![](https://i-blog.csdnimg.cn/blog_migrate/d530e5e5f9ca151bb51eb3b9910035ca.png)
添加规则 (比如开放8080端口)
/sbin/iptables -I INPUT -p tcp --dport 8080 -j ACCEPT
保存规则
service iptables save
配置开机启动
把启动防火墙服务的命令,加入到开机启动的配置文件中即可。
vim /etc/profile
![](https://i-blog.csdnimg.cn/blog_migrate/5259c03e43a04f09b5cc65d581e3f978.png)
查看与删除iptables中放行的规则
#查看iptables列表,显示列表编号
iptables -L -n --line-number
Chain INPUT (policy ACCEPT)
num target prot opt source destination
1 ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 tcp dpt:8080
2 ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 tcp dpt:3306
3 ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 tcp dpt:80
4 ACCEPT all -- 0.0.0.0/0 0.0.0.0/0 state RELATED,ESTABLISHED
#删除iptables列表中 编号为1的规则
iptables -D INPUT 1
安装Mysql【yum安装】
yum命令安装
yum -y install mysql-community-server
如果出现如图所示,请参考【手动获取rpm文件】:
![](https://i-blog.csdnimg.cn/blog_migrate/76ab361997bdecee063b6b954068bda4.png)
![](https://i-blog.csdnimg.cn/blog_migrate/0352f52d181dde5d81d450b291d0f12a.png)
需要下载205M的资源,需要根据网络情况,等待比较久的时间。
安装完毕如下:
![](https://i-blog.csdnimg.cn/blog_migrate/52e45de0f83cb10c2795fa96eee15d84.png)
手动获取rpm文件安装
在线获取rpm包
wget http://repo.mysql.com/mysql-community-release-el7-5.noarch.rpm
安装下载的rpm文件
rpm -ivh mysql-community-release-el7-5.noarch.rpm
安装mysql-server
yum install mysql-server
启动mysql服务
service mysqld start
查看初始密码【5.7版本执行如下命令,5.6版本,默认密码是空】
grep "password" /var/log/mysqld.log
![](https://i-blog.csdnimg.cn/blog_migrate/8a6ab6e6aacb4efc7acc49b0878bbd77.png)
登录mysql
mysql -u root -p
输入初始密码,可以复制密码,并粘贴到输入密码的位置
设置root密码
修改安全策略 (mysql5.7不允许设置比较简单的密码策略)
set global validate_password_policy=0;
set global validate_password_length=1;
设置密码:
set password = password('123456');
3. 授权远程连接
默认情况下mysql为安全起见,不支持远程登录mysql,所以需要设置开启远程登录mysql的权限
grant all privileges on *.* to 'root' @'%' identified by '123456';
flush privileges;
SET PASSWORD FOR 'root'@'%'= PASSWORD('123456');
开放3306端口
/sbin/iptables -I INPUT -p tcp --dport 3306 -j ACCEPT
service iptables save
安装与配置JDK [解压缩安装]
tar -xvf 解开压缩包到指定目录
tar -xvf jdk-8u211-linux-x64.tar.gz -C /usr/local
编辑配置文件,并配置环境变量
全局配置或当前用户配置,二选一即可。
全局配置文件: vim /etc/profile 或 用户配置文件 vim ~/.bash_profile 推荐前者。
vim /etc/profile
将以下代码复制到profile文件中的末尾。
#set java environment
JAVA_HOME=/usr/local/jdk1.8.0_211/
CLASSPATH=.:$JAVA_HOME/lib.tools.jar
PATH=$JAVA_HOME/bin:$PATH
export JAVA_HOME CLASSPATH PATH
保存并退出
加载环境变量
source /etc/profile 或 source .bash_profile ,推荐前者。
source /etc/profile
不出现任何提示,说明环境加载成功。
测试环境
输入 java或javac ,出现如下提示即为环境配置成功
![](https://i-blog.csdnimg.cn/blog_migrate/52e12d4b9445e3161b242164aa7e0250.png)
如果出现:
![](https://i-blog.csdnimg.cn/blog_migrate/77ed779631d43a6c9a6780096e06f4dc.png)
前面的路径没有设置正确,请重新检查profile文件设置的路径与磁盘路径是否一致
重新执行 source /etc/profile