一、linux安装软件常用方法
1、rpm(或pkg)安装,类似于windows安装程序,是预编译好的程序。
a.使用的是通用参数编译,配置参数不是最佳。
b.可控制性不强,比如对程序特定组件的定制性安装
c.通常安装包间有复杂依赖关系,操作比较复杂
d.安装简单,出错几率低。
2、yun(或apt-get)安装,改良版的rpm,自动联网下载安装包,自动管理依赖关系
3、编译安装(方式在各类linux发行版中差异不大)
a.可控性强,config时可根据当前系统环境优化参数,可定制组件及安装参数
b.易出错,难度略高
二、linux下编译安装nginx
1.下载地址:
http://nginx.org/en/download.html
2.解压
tar -zxvf nginx-1.12.1.tar.gz
3.检查和安装依赖项
yum -y install gcc pcre pcre-devel zlib zlib-devel openssl openssl-devel
4.运行configure命令 (pre是指定安装目录)
./configure --pre=/home/szjz/nginx
5.make && make install
6.启动nginx
./home/szjz/nginx/sbin/nginx
7.查看nginx进程
ps aux|grep nginx
8.设置开机运行
CenterOS6与CenterOS7是有区别的,这是个很大的坑!!!
(1)在centerOS6下:
1) 首先,在linux系统的/etc/init.d/目录下创建nginx文件,使用如下命令:
vi /etc/init.d/nginx
在脚本中添加如下命令:
#!/bin/bash
# nginx Startup script for the Nginx HTTP Server
# it is v.0.0.2 version.
# chkconfig: - 85 15
# description: Nginx is a high-performance web and proxy server.
# It has a lot of features, but it's not for everyone.
# processname: nginx
# pidfile: /usr/local/nginx/logs/nginx.pid
# config: /usr/local/nginx/conf/nginx.conf
nginxd=/home/szjz/nginx/sbin/nginx
nginx_config=/home/szjz/nginx/conf/nginx.conf
nginx_pid=/home/szjz/nginx/logs/nginx.pid
RETVAL=0
prog="nginx"
# Source function library.
. /etc/rc.d/init.d/functions
# Source networking configuration.
. /etc/sysconfig/network
# Check that networking is up.
[ "${NETWORKING}" = "no" ] && exit 0
[ -x $nginxd ] || exit 0
# Start nginx daemons functions.
start() {
if [ -e $nginx_pid ];then
echo "nginx already running...."
exit 1
fi
echo -n $"Starting $prog: "
daemon $nginxd -c ${nginx_config}
RETVAL=$?
echo
[ $RETVAL = 0 ] && touch /var/lock/subsys/nginx
return $RETVAL
}
# Stop nginx daemons functions.
stop() {
echo -n $"Stopping $prog: "
killproc $nginxd
RETVAL=$?
echo
[ $RETVAL = 0 ] && rm -f /var/lock/subsys/nginx /home/szjz/nginx/logs/nginx.pid
}
# reload nginx service functions.
reload() {
echo -n $"Reloading $prog: "
#kill -HUP `cat ${nginx_pid}`
killproc $nginxd -HUP
RETVAL=$?
echo
}
# See how we were called.
case "$1" in
start)
start
;;
stop)
stop
;;
reload)
reload
;;
restart)
stop
start
;;
status)
status $prog
RETVAL=$?
;;
*)
echo $"Usage: $prog {start|stop|restart|reload|status|help}"
exit 1
esac
exit $RETVAL
2) 保存脚本文件后设置文件的执行权限:
chmod a+x /etc/init.d/nginx
将nginx服务加入chkconfig管理列表:
chkconfig --add /etc/init.d/nginx
再次查看
chkconfig --list
显示的情况应该是这样的
tomcat 0:off 1:off 2:off 3:off 4:off 5:off 6:off
然后chkconfignginx on设置开机启动
chkconfig --list
tomcat 0:off 1:off 2:on 3:on 4:on 5:on 6:off
这是后看到的情况变了,这时候就达到了开机就启动nginx服务了!
(2)centerOS7以上:
centos 7以上是用Systemd进行系统初始化的,Systemd是 Linux系统中最新的初始化系统(init),它主要的设计目标是克服sysvinit 固有的缺点,提高系统的启动速度。关于Systemd的详情介绍在这里。
Systemd服务文件以.service结尾,比如现在要建立nginx为开机启动,如果用yum install命令安装的,yum命令会自动创建nginx.service文件,直接用命令
设置开机启动即可。
在这里我是用源码编译安装的,所以要手动创建nginx.service服务文件。
开机没有登陆情况下就能运行的程序,存在系统服务(system)里,即:
/lib/systemd/system
具体步骤如下:
1)在系统服务目录里创建nginx.service文件
vi /lib/systemd/system/nginx.service
内容如下:
[Unit]
Description=nginx
After=network.target
[Service]
Type=forking
ExecStart=/home/szjz/nginx/sbin/nginx
ExecReload=/home/szjz/nginx/sbin/nginx -s reload
ExecStop=/home/szjz/nginx/sbin/nginx -s quit
PrivateTmp=true
[Install]
WantedBy=multi-user.target
2)设置开机启动
systemctl enable nginx.service
3)其他命令
启动nginx服务
systemctl start nginx.service
查看服务当前状态
systemctl status nginx.service
查看所有已启动的服务
systemctl list-units --type=service
9.其他nginx的命令
重启: ./nginx -s reload
关闭: ./nginx -s stop
强杀: kill -9 (nginx进程id)
三、安装jdk
1、下载jdk
2、解压
tar -zxvf jdk-7u79-linux-x64.gz
3、设置环境变量
vi /etc/profile.d/java.sh (每次linux启动时会去检查这个目录下的sh文件)
JAVA_HOME=/home/szjz/jdk1.7.0_79
PATH=$JAVA_HOME/bin:$PATH
export JAVA_HOME PATH
:wq! 保存
4.让环境变量生效
source /etc/profile (或者重启linux系统)
5.检验是否成功
echo $JAVA_HOME
java -version
四、安装tomcat
1、下载
2、解压
tar -zxvf apache-tomcat-7.0.68.tar.gz
3.启动tomcat
./bin/startup.sh
4.查看日志
在logs/下
cat catalina.out (或 tail -f catalina.out)
5.其他操作
停止tomcat ./bin/shutdown.sh
6.设置开机启动
在centos的/etc/init.d/tomcat中配置如下
Vi /etc/init.d/tomcat
--------------tomcat 文件 START-------------------
#!/bin/bash
#
# tomcat startup script for the Tomcat server
#
# chkconfig: 345 80 20
# description: start the tomcat deamon
#
# Source function library
. /etc/rc.d/init.d/functions
prog=tomcat
#下面这句需要给成你自己的jdk路径(bin的上一层)
JAVA_HOME=/usr/java/jdk1.7.0_79
export JAVA_HOME
#下面这句需要给成你自己tomcat目录(bin的上一层)
CATALANA_HOME=/usr/local/yuzhilongx/apache-tomcat-7.0.62
export CATALINA_HOME
case "$1" in
start)
echo "Starting Tomcat..."
$CATALANA_HOME/bin/startup.sh
;;
stop)
echo "Stopping Tomcat..."
$CATALANA_HOME/bin/shutdown.sh
;;
restart)
echo "Stopping Tomcat..."
$CATALANA_HOME/bin/shutdown.sh
sleep 2
echo
echo "Starting Tomcat..."
$CATALANA_HOME/bin/startup.sh
;;
*)
echo "Usage: $prog {start|stop|restart}"
;;
esac
exit 0
--------------tomcat 文件 END-------------------
再把 tomcat 修改为可运行的文件
chmod a+x tomcat
查看服务器开机启动项情况查找tomcat的情况
chkconfig --list
如果没有找到tomcat项
使用chkconfig命令把 tomcat 命令加入到系统启动队列中: chkconfig --add tomcat
再次查看
chkconfig --list
显示的情况应该是这样的
tomcat 0:off 1:off 2:off 3:off 4:off 5:off 6:off
然后chkconfig tomcat on设置开机启动
chkconfig --list
tomcat 0:off 1:off 2:on 3:on 4:on 5:on 6:off
这是后看到的情况变了,这时候就达到了开机就启动tomcat服务了!
7.访问tomcat
浏览器输入 http://192.168.7.103:8080
如何内网正常但 还不能访问的话,尝试关闭linux的防火墙
8.关闭防火墙
centerOS6下
临时关闭:
service iptables start/stop
或
/etc/init.d/iptables stop
出现三个OK,临时关闭成功!
永久关闭:
chkconfig iptables off
查看防火墙
命令: /etc/init.d/iptables status
关闭后查看状态,应该显示 firewall is not running
centerOS7下
临时关闭防火墙 sudo systemctl stop firewalld.service
开机关闭防火墙 sudo systemctl disable firewalld.service
查看默认防火墙状态
firewall-cmd --state
关闭后显示notrunning,开启后显示running
五、负载均衡
1.先讲下nginx的反向代理:
Nginx作为反向代理服务器,实现负载均衡。首先浏览器发起请求,到达Nginx,由Nginx将请求地址转发给相应的tomcat服务器,再由tomcat服务器将结果返回给Nginx,Nginx将结果再转发给浏览器。
在这过程中,对于浏览器来说,并不知道后端的存在, 相对于Tomact来说,当前的客户端是Nginx服务器。这就完成了一个代理的过程。
直接上nginx.conf
user nobody;
worker_processes 1;
events {
worker_connections 1024;
}
http {
include mime.types;
default_type application/octet-stream;
server {
listen 8090;
location / {
index index.html index.htm;
proxy_pass http://192.168.7.103:8080;
}
}
}
2.nginx的负载均衡:
按照第四个步骤安装了两台tomcat,分别是
192.168.0.103:8080
192.168.0.102:8081
直接上nginx.conf:
user nobody;
worker_processes 1;
events {
worker_connections 1024;
}
http {
include mime.types;
default_type application/octet-stream;
#均衡策略
#none 轮询(权重由weight决定)
#ip_hash
#fair (需要安装第三方插件)
#url_hash (需要安装第三方插件)
upstream mytest{
# weight:权重,值越高负载越大
server 192.168.7.103:8080 weight=7;
# max_fails:达到指定次数认为服务器挂掉;
# fail_timeout:挂掉之后过多久再去测试是否已恢复
server 192.168.7.102:8081 weight=3 max_fails=2 fail_timeout=60s;
}
server {
listen 8090;
location / {
index index.html index.htm;
proxy_pass http://mytest;
}
}
}
最后验证:
其他负载的策略类似。。。。