Linux前后端分离jdk+tomcat+nginx+mysql
前言:
1、该部署方案的为了方便后续维护,软件包都安装在了home目录底下
2、为了在部署工作中少踩坑,建议大家参考下项目部署工作准备规范:https://www.jianshu.com/p/9713a633c933
3、无网络情况下部署需要配置本地云源,参考文章:https://www.jianshu.com/p/7aafd76e1b7a
https://www.jianshu.com/p/6d2095c66f1c
4、软件包下载:
https://pan.baidu.com/s/1MtKVGSBiynJ7T4TlSVdkRg
一、安装JDK
1、从本地上传安装包文件到服务器 /root目录下,
2、在/home目录下新建文件夹webuser,复制jdk-8u65-linux-x64.gz文件到/home/webuser目录下。
cd /root
cp jdk-8u65-linux-x64.gz /home/webuser
2、进入webuser目录下解压安装包:
tar -zxvf jdk-8u65-linux-x64.gz
最后在/usr/webuser目录下产生jdk1.8.0_65文件夹。
3、设置环境变量:
使用vi编辑器 在/etc/rc.local和/etc/profile的文件内增加填写以下信息,并保存:
JAVA_HOME=/home/webuser/jdk1.8.0_65
export JAVA_HOME
JRE_HOME=/home/webuser/jdk1.8.0_65/jre
export JRE_HOME
CALSSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar:$JRE_HOME/lib
export CLASSPATH
PATH=$PATH:$JAVA_HOME/bin:$JRE_HOME/bin
export PATH
4、使修改生效:
[root@admin]# source /etc/profile //使修改立即生效
[root@admin local]# echo $PATH //查看PATH值
5、测试是否安装成功:
[root@admin local]# java -version
java version "1.8.0_65"
Java(TM) SE Runtime Environment (build 1.8.0_181-b13)
Java HotSpot(TM) Client VM (build 25.181-b13, mixed mode)
如果看到JVM的有关信息正确,则安装成功。
二、tomcat的安装
1、将安装包上传到/root目录下:
2、进到/root目录下,复制apache-tomcat-7.0.70.tar.gz文件到/home/webuser目录下。
cd /root/
cp apache-tomcat-7.0.70.tar.gz /home/webuser
3、解压安装包
tar -zxvf apache-tomcat-7.0.70.tar.gz
最后在/home/webuser目录下产生apache-tomcat-7.0.70文件夹
4、在/etc/rc.local和/etc/profile文件内填写以下内容:
使用vi编辑器 在/etc/rc.local和/etc/profile的文件内增加填写以下信息,并保存:
BASEDIR=/home/webuser/apache-tomcat-7.0.70
export BASEDIR
JAVA_HOME=/home/webuser/jdk1.8.0_70
export JAVA_HOME
JRE_HOME=/home/webuser/jdk1.8.0_70/jre
export JRE_HOME
CALSSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar:$JRE_HOME/lib
export CLASSPATH
PATH=$PATH:$JAVA_HOME/bin:$JRE_HOME/bin
export PATH
/home/webuser/apache-tomcat-7.0.70/bin/catalina.sh start
5、重启计算机,在浏览器中输入http://IP:8080打开网页,测试是否运行正常。
6、如无法运行尝试分配权限或查看端口号是否冲突
7、一般web页面及程序放于
/home/webuser/apache-tomcat-7.0.70/webapps目录下。
8、重启,进入Tomcat bin文件夹:./startup.sh
./shutdown.sh关闭 ./startup.sh启动
9、设置TOMCAT管理员密码,使管理工具可用:
①关闭 tomcat
/home/webuser/apache-tomcat-7.0.70/bin/catalina.sh stop
②在conf文件夹的tomcat-users.xml文件中添加一个"manager"的权限,并添加一个 登陆名为admin,登陆密码为123456的用户,指定其权限为manager.
在tomcat-user.xml的最下面添加代码:
<user username="admin" password="123456" roles="admin-
gui,admin,manager-gui,manager"/>
③保存好tomcat-user.xml,在bin目录下输入./startup.sh重启动tomcat, 输入:http://IP:8080/ 看到熟悉的tomcat界面;点击“Tomcat Manager”,输入用户名admin, 密码123456,看到管理界面了.
10.分配给tomcat更多内存
如果想加大tomcat可使用的虚机内存,则在tomcat/bin/catalina.sh中第一行, 加入以下内容
JAVA_OPTS='-Xms256m -Xmx1024m'
保存退出重启Tomcat
[root@localhost ~]# /home/webuser/apache-tomcat-7.0.70/bin/startup.sh
检查配置是否成功
[root@localhost ~]# ps aux|grep tomcat-Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager -Xms256m -Xmx1024m
返回信息中存在该字段说明配置成功
11.设置部署文件大小的上传限制。
[root@localhost ~]# vi /home/webuser/apache-tomcat-7.0.70/webapps/manager/WEB-INF/web.xml
<multipart-config>
<!-- 50MB max -->
<max-file-size>552428800</max-file-size>#(默认52428800=50M,设置成500M=552428800)
<max-request-size>52428800</max-request-size>#(默认52428800=50M,设置成500M=552428800)
<file-size-threshold>0</file-size-threshold>
</multipart-config>
保存退出重启Tomcat
[root@localhost ~]# /home/webuser/apache-tomcat-7.0.70/bin/startup.sh
三、MySQL的安装
1、传送安装包到服务器/root目录下
2、复制安装包到/home/webuser下面
cp /root/soft/mysql-5.6.27-linux-glibc2.5-x86_64.tar.gz //home/webuser
3、检查原服务器上是否已安装mysql(grep的-i选项表示匹配时忽略大小写)
命令:
rpm -qa|grep -i mysql
显示结果:mysql-libs-5.1.61-4.el6.x86_64
*以上显示结果表示已经安装了库文件,应该先卸载,不然会出现覆盖错误。注意卸:载时使用了--nodeps选项,忽略了依赖关系,命令如下:
rpm -e mysql-libs-5.1.61-4.el6.x86_64 --nodeps
4.添加mysql组和mysql用户,用于设置mysql安装目录文件所有者和所属组。
groupadd mysql
useradd -r -g mysql mysql
*useradd -r参数表示mysql用户是系统用户,不可用于登录系统。
5.将二进制文件解压到指定的安装目录,我们这里指定为/home/webuser
cd/home/webuser
tar zxvf mysql-5.6.27-linux-glibc2.5-x86_64.tar.gz
*解压后在/home/webuser生成了解压后的文件夹mysql-5.6.27-linux-glibc2.5-x86_64,这名字太长,我们为它建立一个符号链接mysql,方便输入。
ln -s mysql-5.6.27-linux-glibc2.5-x86_64 mysql
6.进入mysql文件夹,也就是mysql所在的目录,并更改所属的组和用户。
[root@iZwz9aabuytiml4sfqrnihZ local]#cd mysql
[root@iZwz9aabuytiml4sfqrnihZ mysql]#chown -R mysql .
[root@iZwz9aabuytiml4sfqrnihZ mysql]#chgrp -R mysql .
7.执行mysql_install_db脚本,对mysql中的data目录进行初始化并创建一些系统表格。注意mysql服务进程mysqld运行时会访问data目录,所以必须由启动mysqld进程的用户(就是我们之前设置的mysql用户)执行这个脚本,或者用root执行,但是加上参数--user=mysql。
*指定安装目录:
[root@iZwz9aabuytiml4sfqrnihZ mysql]scripts/mysql_install_db --user=mysql --datadir=/home/webuser/data/mysql/
*默认安装路径(/usr/local):
[root@iZwz9aabuytiml4sfqrnihZ mysql]# scripts/mysql_install_db --user=mysql
8.将mysql/目录下除了data/目录的所有文件,改回root用户所有,mysql用户只需作为mysql/data/目录下所有文件的所有者。
[root@iZwz9aabuytiml4sfqrnihZ mysql]chown -R root .
[root@iZwz9aabuytiml4sfqrnihZ mysql]chown -R mysql data
复制配置文件
[root@iZwz9aabuytiml4sfqrnihZ mysql] cp support-files/my-default.cnf /etc/my.cnf
9.将mysqld服务加入开机自启动项。
*首先需要将scripts/mysql.server服务脚本复制到/etc/init.d/,并重命名为mysqld。
[root@iZwz9aabuytiml4sfqrnihZ mysql] cp support-files/mysql.server /etc/init.d/mysqld
*通过chkconfig命令将mysqld服务加入到自启动服务项中。
[root@iZwz9aabuytiml4sfqrnihZ mysql]#chkconfig --add mysqld
*注意服务名称mysqld就是我们将mysql.server复制到/etc/init.d/时重命名的名称。
*查看是否添加成功
[root@iZwz9aabuytiml4sfqrnihZ mysql]#chkconfig --list mysqld
mysqld 0:off 1:off 2:on 3:on 4:on 5:on 6:off
*重启系统,检查是否启动
[root@iZwz9aabuytiml4sfqrnihZ mysql]#netstat -anp|grep mysqld
tcp 0 0 0.0.0.0:3306 0.0.0.0:* LISTEN
2365/mysqld
unix 2 [ ACC ] STREAM LISTENING 14396 2365/mysqld /tmp/mysql.sock
*不能正常启动修改启动脚本
vi /etc/init.d/mysqld
修改项:
basedir=/home/webuser/mysql/
datadir=/home/webuser/mysql/data/mysql
*启动服务
service mysqld start
*如果不想重新启动,那可以直接手动启动。
[root@iZwz9aabuytiml4sfqrnihZ mysql]#service mysqld start
Starting MySQL.. SUCCESS!
10.运行客户端程序mysql,在mysql/bin目录中,测试能否连接到mysqld。
[root@iZwz9aabuytiml4sfqrnihZmysql]#/home/webuser/mysql/bin/mysql
Welcome to the MySQLmonitor. Commands end with ; or \g.
Your MySQL connection idis 2
Server version:5.5.29-log MySQL Community Server (GPL)
Copyright (c) 2000, 2012,Oracle and/or its affiliates. All rights reserved.
Oracle is a registeredtrademark of Oracle Corporation and/or its
affiliates. Other names may betrademarks of their respective owners.
Type 'help;' or '\h' forhelp. Type '\c' to clear the current input
statement.
mysql> quit
Bye
*此时会出现mysql>命令提示符,可以输入sql语句,输入quit或exit退出。
11.设置简单进入mysql的命令
[root@iZwz9em1ujylngdqxr9o8vZ ~]# vi /etc/profile
最后加入两行命令:
MYSQL_HOME=/home/webuser/mysql
export PATH=$PATH:$MYSQL_HOME/bin
这样就可以在shell中直接输入mysql命令来启动客户端程序了
[root@iZwz9em1ujylngdqxr9o8vZ mysql]#mysql
Welcome to the MySQLmonitor. Commands end with ; or \g.
Your MySQL connection idis 3
Server version:5.5.29-log MySQL Community Server (GPL)
Copyright (c) 2000, 2012,Oracle and/or its affiliates. All rights reserved.
Oracle is a registeredtrademark of Oracle Corporation and/or its
affiliates. Other namesmay be trademarks of their respective
owners.
Type 'help;' or '\h' forhelp. Type '\c' to clear the current input statement.
mysql>
12.设置MySQL的root用户设置密码
[root@iZwz9em1ujylngdqxr9o8vZ ~]# mysql -u root
mysql> select user,host,password from mysql.user;
+------+-----------+----------+
| user | host | password |
+------+-----------+----------+
| root | localhost | |
| root | bogon | |
| root | 127.0.0.1 | |
| | localhost | |
| | bogon | |
+------+-----------+----------+
5 rows in set (0.01 sec)
查询用户的密码,都为空,用下面的命令设置root的密码为root
mysql> set password for root@localhost=password('123456');
mysql> exit
用新密码登陆
[root@iZwz9em1ujylngdqxr9o8vZ ~]# mysql -u root -p
Enter password:
创建mysql新用户test_user
mysql> create user 'test_user'@'%' identified by '密码';
Query OK, 0 rows affected (0.00 sec)
13.给新用户test_user授权,让他可以从外部登陆和本地登陆
注意:@左边是用户名,右边是域名、IP和%,表示可以访问mysql的域名和IP,%表示外部任何地址都能访问。
mysql> select user,host,password from mysql.user;
+----------+-----------+-------------------------------------------+
| user | host | password |
+----------+-----------+-------------------------------------------+
| root | localhost |
*81F5E21E35407D884A6CD4A731AEBFB6AF209E1B |
| root | bogon | |
| root | 127.0.0.1 | |
| | localhost | |
| | bogon | |
| test_user | % |
*3046CF87132BBD4FDDF06F321C6859074843B7D3 |
| test_user | localhost |
*3046CF87132BBD4FDDF06F321C6859074843B7D3 |
+----------+-----------+-------------------------------------------+
7 rows in set (0.00 sec)
create database supply; //创建数据库
grant all privileges on supply.* to lzjg; //给用户lzjg授权数据库的操作
mysql> flush privileges;
Query OK, 0 rows affected (0.01 sec)
14.设置root账号远程连接:
[root@iZwz9em1ujylngdqxr9o8vZ ~]# mysql -h localhost -u root -p
Enter password:
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 61
Server version: 5.1.61 Source distribution
Copyright (c) 2000, 2011, Oracle and/or its affiliates. All rights
reserved.
Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.
Type 'help;' or '\h' for help. Type '\c' to clear the current input
statement.
mysql> use mysql
Database changed
mysql> select host,user from user;
+--------------+------+
| host | user |
+--------------+------+
| 127.0.0.1 | root |
| localhost | |
| localhost | root |
| localhost | wdcp |
| localhost | www |
| vhostcentos6 | |
| vhostcentos6 | root |
+--------------+------+
7 rows in set (0.00 sec)
给ROOT账号授权远程登录
mysql> grant all privileges on *.* to root@'%' identified by '密码';
flush privileges;
建议使用Navicat等数据库远程连接工具测试是否成功
15.查看mysql的默认存储引擎
从下面的执行结果可以看出,mysql的默认引擎是MyISAM,这个引擎是不支持事务的。
mysql> show engines;
+------------+---------+------------------------------------------------------------+- -------------+------+------------+
| Engine | Support | Comment |
Transactions | XA | Savepoints |
+------------+---------+------------------------------------------------------------+--------------+------+------------+
| MRG_MYISAM | YES | Collection of identical MyISAM tables
| NO | NO | NO |
| CSV | YES | CSV storage engine | NO | NO | NO |
| MyISAM | DEFAULT | Default engine as of MySQL 3.23 with great performance | NO | NO | NO |
| InnoDB | YES | Supports transactions, row-level locking, and foreign keys | YES | YES | YES |
| MEMORY | YES | Hash based, stored in memory, useful for temporary tables | NO | NO | NO |
+------------+---------+------------------------------------------------------------+--------------+------+------------+
5 rows in set (0.00 sec)
也可以以下面的方式查看
mysql> show variables like 'storage_engine';
+----------------+--------+
| Variable_name | Value |
+----------------+--------+
| storage_engine | MyISAM |
+----------------+--------+
1 row in set (0.00 sec)
修改mysql的默认引擎为InnoDB
停止mysql
mysql> exit;
[root@iZwz9em1ujylngdqxr9o8vZ ~]# service mysqld stop
16、修改vi /etc/my.cnf
在[mysqld] 后面加入
default-storage-engine=InnoDB
启动mysql
[root@iZwz9em1ujylngdqxr9o8vZ etc]# service mysqld start
Starting mysqld: [ OK ]
查看mysql默认存储引擎
mysql> show variables like 'storage_engine';
+----------------+--------+
| Variable_name | Value |
+----------------+--------+
| storage_engine | InnoDB |
+----------------+--------+
1 row in set (0.00 sec)
16.修改MySQL的默认字符集为UTF-8
mysql> show variables like "character%";
+--------------------------+--------------------------------------------------------------+
| Variable_name | Value |
+--------------------------+--------------------------------------------------------------+
| character_set_client | latin1 |
| character_set_connection | latin1
|
| character_set_database | latin1
|
| character_set_filesystem | binary |
| character_set_results | latin1 |
| character_set_server | latin1 |
| character_set_system | utf8 |
| character_sets_dir | /usr/local/mysql-5.1.72-linux-x86_64-glibc23/share/charsets/ |
+--------------------------+--------------------------------------------------------------+
修改my.cnf
vi /etc/my.cnf -------------显示my.cnf内容
在键盘上按i,然后进入Linux编辑模式,输入字符如下:
在 [mysqld ] 上面加入
[client]
default-character-set=utf8
在[ mysqld ] 下面加
character_set_server=utf8
init_connect='SET NAMES utf8'
在文档最底下加入
[ mysql ]
default-character-set=utf8
编辑完毕之后,按esc进入一般模式,然后输入:wq回车。
重启mysql
service mysqld restart
*重启后出现无法进入数据库的情况,注意my.cnf语句的排序问题,多尝试几次排序
如果这里出现mysql is not running but lock exists,解决办法是
rm /var/lock/subsys/mysql
最后,你可以看看mysql的编码方式是否修改成功
mysql> show variables like "character%";
+--------------------------+--------------------------------------------------------------+
| Variable_name | Value |
+--------------------------+--------------------------------------------------------------+
| character_set_client | utf8 |
| character_set_connection | utf8 |
| character_set_database | utf8 |
| character_set_filesystem | binary |
| character_set_results | utf8 |
| character_set_server | utf8 |
| character_set_system | utf8 |
| character_sets_dir | /home/webuser/mysql-5.1.72-linux-x86_64-glibc23/share/charsets/ |
+--------------------------+--------------------------------------------------------------+
四、安装Nginx配置
1、准备安装环境:
[root@iZwz9em1ujylngdqxr9o8vZ ~]# yum -y install gcc pcre pcre-devel zlib zlib-devel openssl openssl-devel
2、将下载好的nginx-1.14.0.tar.gz安装包上传到/root目录下
解压: tar -zxvf nginx-1.14.0.tar.gz
移动到nginx文件夹:mv nginx-1.14.0 nginx
3.指定安装路径/home/webuser/nginx
[root@iZwz9em1ujylngdqxr9o8vZ package]# cd nginx
[root@iZwz9em1ujylngdqxr9o8vZ nginx]#./configure --prefix=/home/webuser/nginx
4.编译安装
[root@iZwz9em1ujylngdqxr9o8vZ nginx]#make
.....
.....省略编译过程
....
[root@iZwz9em1ujylngdqxr9o8vZ nginx]#make install
.....
....省略安装过程
...
5.启动nginx(进入nginx安装路径下)
[root@iZwz9em1ujylngdqxr9o8vZ nginx]# cd /home/webuser/nginx/
[root@iZwz9em1ujylngdqxr9o8vZ nginx]#/home/webuser/nginx/sbin/nginx
6.检查nginx启动状态
[root@iZwz9em1ujylngdqxr9o8vZ nginx]# ps -aux | grep nginx
Warning: bad syntax, perhaps a bogus '-'? See /usr/share/doc/procps-3.2.8/FAQ
root 3515 0.0 0.0 5980 728 pts/1 T 12:14 0:00 grep nginx
root 20238 0.0 0.0 3748 564 ? Ss 15:41 0:00 nginx: master process /usr/local/nginx/sbin/nginx
nobody 20239 0.0 0.0 3956 928 ? S 15:41 0:00 nginx: worker process
root 20245 0.0 0.0 5980 752 pts/1 S+ 15:43 0:00 grep nginx
7.浏览器输入服务器地址检查是否安装成功,成功会看到nginx欢迎页面
8.webuser下创建存放前端目录的文件夹
[root@iZwz9em1ujylngdqxr9o8vZ webuser]#mkdir www
9.配置域名映射nginx.conf
①先创建存放静态资源文件夹 mnt
[root@iZwz9em1ujylngdqxr9o8vZ webuser]# mkdir mnt
②新建存放域名映射文件的文件夹
[root@iZwz9em1ujylngdqxr9o8vZ webuser]# cd /home/webuser/nginx/conf
[root@iZwz9em1ujylngdqxr9o8vZ conf]# mkdir vhost
[root@iZwz9em1ujylngdqxr9o8vZ conf]# cd vhost
[root@iZwz9em1ujylngdqxr9o8vZ vhost]# touch name.conf
③配置服务器域名映射文件
[root@iZwz9em1ujylngdqxr9o8vZ vhost]# vi name.conf
.........................................................................
在文件中放入项目配置的server部分的内容:
server {
listen 80;#默认端口号80
server_name 192.168.0.102;#将IP修改成项目域名
location ~/war包名 {
proxy_set_header Host $host;
proxy_pass_header User-Agent;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Real-Port $remote_port;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_pass http://127.0.0.1:8080;
proxy_request_buffering off ;
}
#pictures 配置静态资源存放目录
location ~/war包名/staffCert/origin/ {
root /;
rewrite ^/war包名/staffCert/origin/(.*)$ /mnt/静态资源文件夹/staffCert/origin/$1 break;
}
location / {
root /root/www/前端访问名/;#添加前端访问名可以使用域名直接登录系统
index index.html index.htm;
}
}
......................................................................................
⑤修改nginx.conf
[root@iZwz9em1ujylngdqxr9o8vZ nginx]#vi /home/webuser/nginx/conf/nginx.conf
在http中加入
include /home/webuser/nginx/conf/vhost/*.conf;
/home/webuser/nginx/conf/vhost为绝对路径
/*.conf表示加载所有conf类型的文件
注释掉 #user nobody;
首行添加 user root;
找到以下内容注释掉:
#location = /50x.html {
#root html;
#}
10.设置开机启动
①在rc.local文件中加入:
/home/webuser/nginx/sbin/nginx
[root@iZwz9em1ujylngdqxr9o8vZ etc]# vi rc.local
②赋予rc.local文件权限
[root@iZwz9em1ujylngdqxr9o8vZ etc]# chmod 755 rc.local
③检查是否配置成功
[root@iZwz9em1ujylngdqxr9o8vZ ~]# service nginx stop
停止 nginx: [确定]
[root@iZwz9em1ujylngdqxr9o8vZ ~]# service nginx start
正在启动 nginx: [确定]
④检查开机启动
[root@iZwz9em1ujylngdqxr9o8vZ ~]# chkconfig nginx on
重启系统,在浏览器输入IP地址检查设置是否成功
11.设置文件上传限制
[root@iZwz9em1ujylngdqxr9o8vZ ~]# vi /home/webuser/nginx/conf/nginx.conf
将http{}中#tcp_nopush 字段替换成以下内容
http{
sendfile on;
tcp_nopush on;
server_tokens off;
client_max_body_size 2000m;#上传大小2000M
keepalive_timeout 65;#上传时间65s
}
备注:如果是用了nginx作为web服务器,并且上传的文件比较大时,需要修改nginx的最大上传限制。
client_max_body_size 2000m; #最大限制为2000M
keepalive_timeout 65;#上传时间65s
#刷新使配置生效
[root@iZwz9em1ujylngdqxr9o8vZ ~]# cd /home/webuser/nginx/sbin/
[root@iZwz9em1ujylngdqxr9o8vZ sbin]#./nginx -s reload