linux配置、部署tomcat网站总流程
本流程使用securecrt8.1进行远程服务器连接,secureCRT使用细节本文不做讲解,有兴趣的朋友可以上网搜索相关教程。
注: xxx用于描述本人自定义名称,不是固定字符。
Linux系统:centos6.4
Jdk:8.x
Tomcat:8.x
Nginx:1.9.x
1. linux下安装nginx
在安装nginx前首先要确认系统中安装了gcc、pcre-devel、zlib-devel、openssl-devel
安装gcc、pcre-devel、zlib-devel、openssl-devel的命令如下:
yum -y install gcc pcre-devel zlib-devel openssl openssl-devel
nginx下载地址:https://nginx.org/download/
我们下载nginx的linux版本后,通过secureCRT将压缩文件上传到linux(打开secureCRT,连接服务器,在终端里按下alt+p,打开sftp窗口,将文件拖拽到sftp窗口中,松开鼠标即可上传)
上传到linux服务器之后,看自己需求存放某个位置,例如:
mv -i /root/nginx-1.9.9.tar.gz /usr/local/
解压文件并完成3个步骤:配置(configure)、编译(make)、安装(makeinstall)
进入解压目录:cd nginx-1.9.9
配置
./configure --prefix=/usr/local/nginx
编译
make
安装
make install
这几个命令执行完成后,进入到刚才配置的安装目录/usr/loca/nginx/
执行命令./sbin/nginx -t
如上图,表示安装nginx成功
进入刚才的安装目录下的启动目录
cd /usr/local/nginx/sbin
./nginx// 启动nginx
浏览器输入你的服务器地址,直接访问,效果如下,说明nginx启动成功
使用命令Vim /etc/rc.d/rc.local 打开rc.local文件,加入启动nginx的脚本
/usr/local/nginx/sbin/nginx
2. Linux下安装jdk、tomcat
这里我选用的是jdk1.8、tomcat8.x的.tar.gz版本,进行手动安装。(可选择自动安装,例如yum,具体操作,可自行网上查询)
首先上传到linux服务器中
2.1 手动jdk
上传到linux中后,rm移动文件到自己指定目录,进入该目录并解压
Cd xxx
Tar -zxvf xxx
解压完成后需要配置环境变量
Vim /etc/profile文件
在文件末尾加入:
export JAVA_HOME=/usr/local/java/jdk1.8.0_171
export PATH=$JAVA_HOME/bin:$PATH
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
保存并退出。
使用命令立即刷新配置,使profile生效
source /etc/profile
输入java -version验证是否成功安装jdk.
java -version
java version "1.8.0_271"
Java(TM) SE Runtime Environment (build 1.8.0_271-b09)
Java HotSpot(TM) 64-Bit Server VM (build 25.271-b09, mixed mode)
2.2 手动安装tomcat
上传到linux中后,rm移动文件到自己指定目录,进入该目录并解压
Cd xxx
Tar -zxvf xxx
下载tomcat的时候,如果你也像我一样,想手动安装tomcat,注意要下载上面的这个包,下面的source包会缺少一些东西,后续会导致无法启动或者关闭的问题。
下错包这种问题,说大不大,但有时候出了错了,却特别难找问题。所以大家还是要多加注意。
再提醒一点,我用的阿里云服务器。如果你也使用了,并且安装tomcat,需要注意的是,端口问题。
1. 端口是否配置了安全组
2. 是否启动了linux防火墙,如果启动防火墙,还需要配置下防火墙端口开启的问题。
3. 安装mysql5.6
3.1下载mysql
点击下图中的红框,可以选择之前版本的安装包
至此下载完成。
3.2 安装mysql
3.2.1 mysql卸载流程
先查看mysql是否启动,查看命令如下:
ps -ef | grep mysql
如果启动,停止mysql进程:
cd 到mysql的安装目录bin文件夹,或者直接路径加执行程序
未设置密码 /usr/local/mysql/bin/mysqladmin shutdown
已设置密码 /usr/local/mysql/bin/mysqladmin -uroot -p shutdown输入密码,即可关闭mysql进程
注: 我这里是直接关闭程序,不同的版本、不同的安装方式,都有可能关闭启动程序的方式是不一样的。这里是我本地使用的方式,仅供参考。
找出原有目录、文件(my.cnf)、文件库并删除
whereis mysql
我这里只找到
mysql: /usr/local/mysql
rm -rf /usr/local/mysql#(安装目录)
还有原先安装的库文件所在目录
rm -rf /data/mysql#(库文件目录)
删除my.cnf文件
rm -rf /etc/my.cnf #(配置目录)
(注: 图中没有删除data目录,是因为我之前已经删除,忘记截图了。。请注意)
一般情况下,已经删除干净了。~~~
3.2.1 mysql正式安装流程
安装详情可以参照下方链接的方式
https://blog.csdn.net/rookie23rook/article/details/107926894
我本人也是通过这种方式安装的,亲测可用
1. 环境
yum remove -y mariadb-libs
yum install -y cmake
yum install gcc gcc-c++ -y
这是一些底层软件、插件之类的,我就不再追求自定义了,直接使用yum安装。
注(yum指linux系统自带的,自动更新组件安装系统)
2. 创建mysql用户
useradd -s /sbin/nologin -M -r mysql
useradd命令用来建立用户帐号和创建用户的起始目录,使用权限是终极用户
-s:表示指定用户登入后所使用的shell
/sbin/nologin 表示不登录
-M:表示不要自动建立用户的登入目录
-r:建立系统账号
不指定-g (用户组),表示会直接创建mysql用户组,并创建用户mysql,mysql用户的主组为mysql组。
主要参数-c:加上备注文字,备注文字保存在passwd的备注栏中。 -d:指定用户登入时的启始目录。-D:变更预设值。-e:指定账号的有效期限,缺省表示永久有效。-f:指定在密码过期后多少天即关闭该账号。-g:指定用户所属的起始群组。-G:指定用户所属的附加群组。-m:自动建立用户的登入目录。-M:不要自动建立用户的登入目录。-n:取消建立以用户名称为名的群组。-r:建立系统账号。-s:指定用户登入后所使用的shell。-u:指定用户ID号。
3. 创建目录并授权
mkdir -p /data/mysql
chown mysql.mysql /data/mysql/ -R
4. 解压到指定目录,预编译
tar -zxvf mysql-5.6.50.tar.gz
mv mysql-5.6.50 mysql
cd mysql
cmake . -DCMAKE_INSTALL_PREFIX=/usr/local/mysql -DMYSQL_DATADIR=/data/mysql -DDEFAULT_CHARSET=utf8 -DDEFAULT_COLLATION=utf8_general_ci -DENABLED_LOCAL_INFILE=1
注意红色部分,这里我改名mysql-5.6.50为mysql,进入mysql目录再使用预编译命令,红色的mysql表示是同一个意思,如果有改动需同时做修改。
5. 预编译成功,则编译并安装
make && make install
6.初始化
/usr/local/mysql/scripts/mysql_install_db --user=mysql --datadir=/data/mysql --basedir=/usr/local/mysql
安装完mysql server时,一般要执行mysql_install_db这个脚本对数据库初始化。
其中--user为mysqld服务的运行用户,--basedir和--datadir则分别代表mysql的安装目录和数据存放目录。运行这个脚本,会初始化mysql的data目录,并且创建那些系统表。同样也会初始化系统表空间并且关联innodb表与数据结构.
5.7.6以后的版本,该脚本也将被移除。
结果爆出提示信息,表示没有权限
-bash: /usr/local/mysql/scripts/mysql_install_db: Permission denied
进入.../scripts目录,执行以下命令,然后再次执行初始化脚本mysql_install_db进行初始化。
chmod +x mysql_install_db
注:chmod +x表示授予执行权限
7. 创建配置文件并启动服务
cd /usr/local/mysql/
cp support-files/my-default.cnf /etc/my.cnf
配置文件如何配置这里不再解释,有兴趣的朋友可以上网查找。
启动mysql命令如下:
./bin/mysqld_safe &
修改密码这里不再细说,有需要的朋友可自行百度。
启动命令:
./bin/mysqld_safe &
查看是否启动命令:
ps -ef|grep mysql
登录命令:
./bin/mysql -uroot -p
关闭命令:
设置密码以及没有设置密码会有所不同
注:启动mysqld_safe &
登录mysql
关闭mysqladmin
8. 配置mysql为服务
配置成服务,可以在任何目录,用简短的方式启动关闭mysql程序,不需要到指定目录去启动关闭。
cp support-files/mysql.server /etc/init.d/mysql#复制到系统开机启动初始化目录
chkconfgi --add mysql#配置成服务并开机自启动
service mysql start#启动mysql服务,如果启动失败,则进行授权
chmod a+wrx /etc/init.d/mysql
再使用如下命令,可正确执行了。
service mysql start
service mysql stop
service mysql status
9.配置软链
如果现在我直接 mysql -uroot -p 会报未找到mysql
-bash: mysql: command not found
类似window中未配置path,所以不能在任意目录下调用非系统自带的程序。因此,如果想后续方便使用mysql登录以及其他操作,还是需要配置软链。
ln -s /usr/local/mysql/bin/mysql /usr/local/bin/mysql
ln -s /usr/local/mysql/bin/mysqldump /usr/local/bin/mysqldump
这里配置了mysql、mysqldump
注: 启动关闭mysql可以使用service命令
至此,已经成功配置了部署环境。
4. 将本地数据库、代码部署到linux
4.1 导出导入数据库
在window cmd下任意目录
mysqldump -uroot -p xxxx> xxxx .sql
将文件丢到linux中
在linux下进入数据库并导入创建数据库导入数据
mysql -uroot -p
enter password: xxxxx
create database xxxx;
mysql>use xxxx;
mysql>set names utf8;
mysql>source /root/xxxx.sql;
数据库导入成功。
4.2 部署程序到tomcat
使用nginx,修改nginx配置文件,将80端口映射到tomcat的启动端口,其他设置暂时不做修改。
将我本地的vue工程打包放linux的tomcat下,发现页面一片空白,打开控制台,原来是/static下的文件没有找到,路径前没有项目名称,我干脆将vue的打包文件放webapps/ROOT下。再次访问,页面能打开并渲染,但是获取后台数据部分还是有问题。
为什么后台没有获取到数据?
为什么tomcat默认首页是可以访问的啊?说明/ROOT项目是可以请求的,使用80端口,还是可以请求到tomcat的默认首页,说明nginx配置也是可以的。是静态文件没问题,动态的有问题所以导致/ROOT项目可以正常请求而动态网站不行?是linux权限问题?数据库链接问题?整的自己像无头苍蝇似的,各种百度。。。
后来想到,新建webapps/xxx目录,放一个index.html文件,看能不能访问,结果是可以的。说明不是权限问题。按理说动态文件静态文件没什么区别吧?再后来又找到个命令,说可以实时查看tomcat运行日志,结果每次打开都是一样的,似乎也没有链接进来。再后开,关闭了tomcat再启动,再查看日志,终于看出一些问题了。tomcat启动上传的项目失败了。。。
tail -n200 -f /usr/local/tomcat/logs/catalina.out
上面的命令,可实时查看tomcat运行日志的最后200行 。
发现问题后,一通百度,终于又一模一样的问题出现了。。。
异常如下:
Caused by: java.lang.RuntimeException: Unexpected error: java.security.InvalidAlgorithmParameterException: the trustAnchors parameter must be non-empty
说有可能是jdk的问题,没有对ssl支持相关证书包。我下载的是openjdk的jdk包。jdk的lib目录如下
而后来重新下载了oracle的jdk包的lib目录如下:
原先的lib目录确实少了些东西,后面又再次启动tomcat,发现请求进入了tomcat,终于看到变化的tomcat控制台信息了,当还是报错,报mysql的数据库链接异常。这问题就小意思了,安心~~
~~~~~~又找了大半个钟头,原来我把密码账号写反了,导致程序报数据库链接异常23333333333.最后验证了下,确实大功告成。哈哈哈哈哈