linux教育

Linux前后端分离jdk+tomcat+nginx+mysql

2019-06-11  本文已影响269人  不是王大锤

前言:
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
上一篇下一篇

猜你喜欢

热点阅读