30 Linux中安装JDK, MySQL, tomcat, 部署nginx集群, 以及window中部署tomcat+nginx集群
1.1 Linux系统上安装JDK:
1.1.1 安装步骤:
1.1.1.1 卸载OpenJDK
执行命令查看:
rpm –qa | grep java
卸载OPENJDK:
[[email protected] /]# rpm -e --nodeps java-1.7.0-openjdk-1.7.0.79-2.5.5.4.el6.i686
[[email protected] /]# rpm -e --nodepsjava-1.6.0-openjdk-1.6.0.35-1.13.7.1.el6_6.i686
1.1.1.1 创建JDK的安装路径:
在/usr/local/ 创建文件夹java
mkdir java
1.1.1.2 上传安装文件jdk到linux:
使用day29中的软件包中的FileZilla-3.7.3软件直接点开使用.
将本地的文件复制到Linux的root环境中.
cd ~
ll 可以查看到复制到Linux 目录root下的jdk文件
1.1.1.1 解压tar.gz
首先需要安装依赖:
yum install glibc.i686 需要网络
tar –xvf xxx.tar.gz –C /usr/local/java
解压完成后进入/usr/local/java可以看到jdk1.7.0_71的文件
1.1.1.1 配置环境变量:
vim /etc/profile 进入编辑配置环境变量,将下面的语句加到文件最后一行
#setjava environment
JAVA_HOME=/usr/local/java/jdk1.7.0_71
CLASSPATH=.:$JAVA_HOME/lib.tools.jar
PATH=$JAVA_HOME/bin:$PATH
exportJAVA_HOME CLASSPATH PATH
黏贴上后按esc再加上冒号wq回车,完成编辑.
cd ~ 回到root目录后重新加载配置文件:
执行source/etc/profile
至此完成jdk的安装, 输入java命令检查成功否.
1.2 Linux系统上安装MySQL:
1.2.1 安装MySQL:
1.2.1.1 上传mysql到Linux:
与上传jdk方式相同拖拽进Linux即可.
1.1.1.1 卸载自带mysql:
rpm –qa | grep mysql 查看自带的mysql,把查询的名字复制到下面的语句中执行卸载.
[[email protected] ~]# rpm –e --nodeps mysql-libs-5.1.73-5.el6_6.i686
总体流程:
1.1.1.1 创建mysql的安装路径:
Mkdir mysql
1.1.1.2 解压mysql:
tar -xvf MySQL-5.6.22-1.el6.i686.rpm-bundle.tar-C /usr/local/mysql
1.1.1.3 安装依赖:在线安装
yum -y install libaio.so.1 libgcc_s.so.1libstdc++.so.6
yum update libstdc++-4.4.7-4.el6.x86_64
1.1.1.4 安装mysql的服务端:
rpm -ivh MySQL-server-5.6.22-1.el6.i686.rpm
1.1.1.5 安装mysql的客户端:
rpm -ivh MySQL-client-5.6.22-1.el6.i686.rpm
1.1.1.6 启动mysql的服务:
service mysql status
service mysql start
1.1.1.7 登录mysql:
产生一个随机的密码存放在/root/.mysql_secret
所以我们进到文件中复制密码:
[[email protected]~]# vim .mysql_secret
查看密码进行登录:
msyql –u root -p
修改密码:
set password = password('123456');
至此已经可以使用mysql数据库了,但是还不能远程访问mysql
1.1.1.1 设置开机自动启动mysql:
如果已经进入mysql了要exit先进到Linux目录中.再执行下面的两句
加入到系统服务:
chkconfig --add mysql
自动启动:
chkconfig mysql on
1.1.1.2 开启远程服务:
下面第一句是设置权限,第二句是刷新权限
首先登录mysql:
grant all privileges on *.* to 'root' @'%'identified by '123456';
flush privileges;
此时还是连接不上Linux的mysql,还需要处理防火墙
1.1.1.3 设置Linux的防火墙:
第一句是:将3306端口添加到防火墙放行该端口(再次启动后无法再次放行)
第二句是:将这个放行设置永久的保存到防火墙中.
/sbin/iptables -I INPUT -p tcp --dport 3306-j ACCEPT
/etc/rc.d/init.d/iptables save
奇怪的事:使用SQLyog登录Linux中的mysql数据库, 使用我改过的密码登录报错 , 但是使用123456的密码的时候就能登录上.
1.2 Linux系统上安装tomcat:
1.2.1 安装tomcat:
1.2.1.1 上传tomcat的安装文件:
也是软件工具中直接拖入root目录即可.
1.2.1.2 创建tomcat的安装路径:
进入到/usr/local 下创建文件夹
mkdir tomcat
1.2.1.3 解压tomcat
tar –xvf xxx.tar.gz –C /usr/local/tomcat
1.2.1.4 设置防火墙:
要先进到根路径下执行下面的设置命令:
cd ~
/sbin/iptables -I INPUT -p tcp --dport 8080 -jACCEPT
/etc/rc.d/init.d/iptables save
1.2.1.5 启动tomcat:
说明:windows中执行的是bat后缀的, 但是Linux中是执行sh后缀名的脚本.
进入到tomcat/bin
执行 ./startup.sh 或者 sh startup.sh
关闭tomcat
执行 ./shutdown.sh
1.1 发布项目到Linux:
1.1.1 将数据库还原到Linux上:
1.1.1.1 备份Window上的数据库:
方法一:
使用命令备份:
mysqldump –u root -p mystore > c:/mystore.sql
方法二:
使用可视化工具:
直接右键备份导出 , 以SQL转储….就可以生成一个sql文件.此次导出的文件名叫做mystore .
1.1.1.2 在Linux上还原数据库:
方法一:
进入数据库后先建立一个数据库,
Create database mystore ;
use mystore
source /root/mystore.sql
show tables ; 就能查看到已经将数据库导入成功.
方法二: 此外还可以在可视化SQLyog中还原数据库.
1.1.2 将程序的代码发布到Linux上:
1.1.2.1 将工程制作为war包:
1.1.2.2 将war包上传到linux服务器:
1.1.2.3 将war包copy到linux下的tomcat的webapps中:
1.1.2.4 修改配置文件就可以:
配置项目下的C3p0文件的数据库连接信息.
进入到tomcat下的webapps中的对应项目的c3p0文件
[[email protected] apache-tomcat-7.0.57]# cd webapps/
[[email protected] webapps]# ll
总用量 36344
drwxr-xr-x. 14 root root 4096 9月 28 02:24 mystore_2.0
[[email protected]]# cd mystore_2.0
[[email protected] mystore_2.0]# ll
总用量 56
drwxr-xr-x. 4 root root 4096 9月 28 02:24 WEB-INF
[[email protected] mystore_2.0]# cd WEB-INF/
[[email protected] WEB-INF]# ll
总用量 16
drwxr-xr-x. 3 root root 4096 9月 28 02:42 classes
[[email protected]]# cd classes/
[[email protected] classes]# ll
总用量 16
-rw-r--r--. 1 root root 705 9月 28 02:42 c3p0-config.xml
[[email protected]]# vimc3p0-config.xml
<?xml version="1.0"encoding="UTF-8"?>
<c3p0-config>
<default-config>
<propertyname="driverClass">com.mysql.jdbc.Driver</property>
<propertyname="jdbcUrl">jdbc:mysql://192.168.75.129:3306/mystore</property>
<property name="user">root</property>
<property name="password">123456</property>
<property name="initialPoolSize">5</property>
<property name="maxPoolSize">20</property>
</default-config>
配置好之后再关闭tomcat重启tomcat生效.
1.2 Windows系统配置Nginx
1.2.1 Nginx的概述:
1.1.1 什么是代理和反向代理:
1.1.2 Nginx+Tomcat的集群配置:
1.1.2.1 在一台电脑上安装两个tomcat
需要在一台电脑模拟:在E盘解压两个tomcat,分别命名为tomcat1,tomcat2.
1.1.2.2 修改tomcat的配置文件,将端口进行修改:
修改tomcat2中conf目录下的server.xml文件中的端口:
1.将原来的关闭的端口8005端口改为8006
2.将启动的端口8080改为8081
1.1.1.1 将项目分别发布到两个tomcat中:
将项目war文件直接放到tomcat的webapps目录下就行.
1.1.1.2 安装Nginx:路径绝对不能有中文
解压
双击nginx.exe
启动完以后访问http://localhost 或者localhost:80因为80是默认端口所以可以不用输入.显示如下页面表示安装成功.否则没有.
另外可以在进程中看到有连个nginx的进程也表示安装成功了,
其中我遇到启动exe后进程中没有nginx的情况,此时用右键管理员权限启动exe的nginx程序就可以了.
1.1.1.1 配置Nginx:
修改nginx/conf/nginx.conf文件:
upstream server_lb{
serverlocalhost:8080;
serverlocalhost:8088;
}
server {
listen 80;
server_name localhost;
#charset koi8-r;
#access_log logs/host.access.log main;
location / {
root html;
proxy_pass http://server_lb;
index index.html index.htm;
}
以上配置完成后,
在cmd窗口中重新加载配置文件.
Nginx –s reload
此时只需要在浏览器中输入localhost就可以进入到tomcat的主页了, 而不再需要输入localhost:80.可以通过localhost/test1访问到我们的两个项目了
我遇到的问题;
问题一: nginx:[alert] could not open error log file: CreateFile() "logs/error.log"failed (5: Access is denied)
设置nginx文件夹的属性, 安全标签中设置权限为允许..fuck
问题二:nginx:[error] OpenEvent("Global\ngx_reload_9780") failed (5: Access isdenied) 干掉 nginx进程, 重新启动nginx, 然后执行重新加载配置命令.
1.1.1.1 Tomcat集群的session共享:
分布式用到session共享:不同功能模块分布在不同的服务器上,所以用户在提交数据的时候另一台机器上没有相应的session信息,所以需要session共享.
一种解决办法:一个用户进来以后只在tomcat1上进行操作,另一个用户进行只在tomcat2上进行操作.
在配置中可以设置固定IP实现用户只在一个机器上访问 , 还可以设置服务器的权重.
2.session的共享
一种使用tomcat广播机制完成session的共享(不推荐的方式)
一种使用redis服务器的方式完成session的共享(推荐的方式)
1.1.1.1 使用tomcat的广播机制完成session的共享。(了解)
修改两个tomcat中的server.xml:
在项目中web.xml中添加一个配置:
<distributable/>
1.1 Linux上搭建Nginx+Tomcat集群:
1.1.1 在Linux上安装多个Tomcat:
1.1.1.1 解压tomcat
分别解压tomcat到/usr/local/tomcat1 和 tomcat2
1.1.1.2 修改tomcat2中server.xml:
:配置tomcat2的3个端口信息 , 与在windows系统下修改的文件一样.
[[email protected] apache-tomcat-7.0.57]# cd /usr/local/tomcat2/apache-tomcat-7.0.57/
[[email protected] apache-tomcat-7.0.57]# ll
[[email protected] apache-tomcat-7.0.57]# cd conf
[[email protected] conf]# ll
总用量 204
-rw-------. 1 root root 6613 9月 28 02:47 server.xml
[[email protected] conf]# vim server.xml
修改一下三行的内容:
<Server port="8008" shutdown="SHUTDOWN">
<Connector port="8088"protocol="HTTP/1.1" 原来是8080端口
<Connector port="8010" protocol="AJP/1.3" redirectPort="8443"/>
***** 将修改后的端口添加到防火墙中.
要先进到根路径下执行下面的设置命令:
cd ~
/sbin/iptables -I INPUT -p tcp --dport 8088-j ACCEPT
/etc/rc.d/init.d/iptables save
1.1.1.3 将项目发布到Linux中的tomcat中
通过FileZilla可视化软件将项目的war或者项目文件放到前面创建的tomcat1和tomcat2中的webapps中
修改项目下的C3p0文件的数据库连接信息.
进入到tomcat下的webapps中的对应项目的c3p0文件
[[email protected] apache-tomcat-7.0.57]# cd webapps/
[[email protected] webapps]# ll
总用量 36344
drwxr-xr-x. 14 root root 4096 9月 28 02:24 mystore_2.0
[[email protected] webapps]# cd mystore_2.0
[[email protected] mystore_2.0]# ll
总用量 56
drwxr-xr-x. 4 root root 4096 9月 28 02:24 WEB-INF
[[email protected] mystore_2.0]# cd WEB-INF/
[[email protected] WEB-INF]# ll
总用量 16
drwxr-xr-x. 3 root root 4096 9月 28 02:42 classes
[[email protected] WEB-INF]# cd classes/
[[email protected] classes]# ll
总用量 16
-rw-r--r--. 1 root root 705 9月 28 02:42 c3p0-config.xml
[[email protected] classes]# vim c3p0-config.xml
<?xml version="1.0"encoding="UTF-8"?>
<c3p0-config>
<default-config>
<propertyname="driverClass">com.mysql.jdbc.Driver</property>
<property name="jdbcUrl">jdbc:mysql://192.168.75.129/mystore</property>
<property name="user">root</property>
<property name="password">123456</property>
<property name="initialPoolSize">5</property>
<property name="maxPoolSize">20</property>
</default-config>
此时就已完成了两个tomcat的项目发布.
1.1.1.4 Linux上安装Nginx:
Nginx
1.2 什么是Nginx
Nginx("engine x") 是一个高性能的 HTTP和反向代理服务器,也是一个 IMAP/POP3/SMTP 服务器。
很多大网站都是使用nginx做反向代理,应用非常广泛。
Nginx是一款高性能的http 服务器/反向代理服务器及电子邮件(IMAP/POP3)代理服务器。由俄罗斯的程序设计师Igor Sysoev所开发,官方测试nginx能够支支撑5万并发链接,并且cpu、内存等资源消耗却非常低,运行非常稳定。
1.1.1 应用场景
1、http服务器,可以做静态网页的http服务器。
2、配置虚拟机。
一个域名可以被多个ip绑定。可以根据域名的不同吧请求转发给运行在不同端口的服务器。
3、反向代理,负载均衡。把请求转发给不同的服务器。
1.2 安装及配置
1.2.1 下载
官方网站:http://nginx.org/
最后的一个稳定版本:1.8.0版本。有两个版本windows版本和linux版本。生产环境都是使用linux版本。
1.1.1 安装
1.1.1.1 环境要求
nginx是C语言开发,建议在linux上运行,本教程使用Centos6.4作为安装环境。
n gcc
安装nginx需要先将官网下载的源码进行编译,编译依赖gcc环境,如果没有gcc环境,需要安装gcc:yum install gcc-c++
n PCRE
PCRE(Perl Compatible Regular Expressions)是一个Perl库,包括 perl 兼容的正则表达式库。nginx的http模块使用pcre来解析正则表达式,所以需要在linux上安装pcre库。
yum install -y pcre pcre-devel
注:pcre-devel是使用pcre开发的一个二次开发库。nginx也需要此库。
n zlib
zlib库提供了很多种压缩和解压缩的方式,nginx使用zlib对http包的内容进行gzip,所以需要在linux上安装zlib库。
yum install -y zlib zlib-devel
n openssl
OpenSSL 是一个强大的安全套接字层密码库,囊括主要的密码算法、常用的**和证书封装管理功能及SSL协议,并提供丰富的应用程序供测试或其它目的使用。
nginx不仅支持http协议,还支持https(即在ssl协议上传输http),所以需要在linux安装openssl库。
yum install -y openssl openssl-devel
1.1.1.2 编译及安装
第一步:把nginx的源码包上传至linux服务器
第二步:解压源码包到指定文件夹。
[[email protected]~]# cd /usr/local/
[[email protected]]# mkdir nginx
[[email protected]]# cd ~
[[email protected]~]# tar -zxf nginx-1.8.0.tar.gz -C/usr/local/nginx
或者tar -xvf nginx-1.8.0.tar.gz -C /usr/local/nginx 指令也可以
第三步:进入nginx-1.8.0文件夹。使用configure命令创建makefile。
./configure
第四步:参数设置如下:
./configure
--prefix=/usr/local/nginx\ 使用configure没指定路径是默认解压到此路径
--pid-path=/var/run/nginx/nginx.pid\
--lock-path=/var/lock/nginx.lock\
--error-log-path=/var/log/nginx/error.log\
--http-log-path=/var/log/nginx/access.log\
--with-http_gzip_static_module\
--http-client-body-temp-path=/var/temp/nginx/client\
--http-proxy-temp-path=/var/temp/nginx/proxy\
--http-fastcgi-temp-path=/var/temp/nginx/fastcgi\
--http-uwsgi-temp-path=/var/temp/nginx/uwsgi\
--http-scgi-temp-path=/var/temp/nginx/scgi
注意:上边将临时文件目录指定为/var/temp/nginx,需要在/var下创建temp及nginx目录
第五步:make
第六步 make install
然后返回nginx的路径就可以看到安装上几个路径,表示安装成功了
1.1 Nginx的启动及关闭
1.1.1 启动
在nginx目录下有一个sbin目录,sbin目录下有一个nginx可执行程序。
./nginx就可以执行启动nginx了.下面我们还查看一下进程
1.1.1.1 同windows中一样我们也需要配置一下nginx.conf文件,
[[email protected] local]# cd ./nginx/nginx-1.8.0/
[[email protected] nginx-1.8.0]# ll
总用量 660
drwxr-xr-x. 2 1001 1001 4096 9月 28 03:32 conf
[[email protected] nginx-1.8.0]# cd conf
[[email protected] conf]# ll
总用量 36
-rw-r--r--. 1 1001 1001 2656 4月 21 2015 nginx.conf
[[email protected] conf]# vim nginx.conf
修改的内容如下:
upstream server_lb{
server localhost:8080;
serverlocalhost:8088;
#ip_hash; fuck#是注释的意思
}
server {
listen 80;
server_name localhost;
#charset koi8-r;
#access_log logs/host.access.log main;
location / {
root html;
proxy_passhttp://server_lb;
index index.html index.htm;
}
保存完以后一定要进到sbin中重新加载配置文件:
[[email protected] nginx]# cd sbin
[[email protected] sbin]# ./nginx -s reload
[[email protected] sbin]#
1.1.1.2 格外注意:此时的nginx的默认端口是80所以还需要设置80端口的防火墙:
/sbin/iptables -I INPUT -p tcp --dport 80-j ACCEPT
/etc/rc.d/init.d/iptables save
1.1.1 关闭nginx
关闭命令:相当于找到nginx进程kill。
./nginx -s stop
退出命令:
./nginx-s quit
等程序执行完毕后关闭,建议使用此命令。
1.1.2 动态加载配置文件
./nginx-s reload
可以不关闭nginx的情况下更新配置文件。
补充oracle的工具PLSQL Developer正确配置后可能出现登录时没有数据库下拉列表的问题:
打开软件界面的help-about 点击叹号查看其中的TNS FIle配置,将我的电脑的环境变量如下的TNS_ADMIN中配置的路径与之相同即可.