从零开始部署web项目(ssm)

前言

这篇博客是我整理以前的记录出来的,有些借鉴的部分可能无法指明。写这篇博客的主要目的是留个记录,留待自己以后查阅。

总体来说,这篇博客涉及到了部署一个web项目的许多方面,但是仍然不能说是完善了。一个web项目随着规模的不断加大,后端的结构也是可以不断改变的,目的只有一个,就是为了支持更多的用户。一个小型的web项目可能只需要mysql和tomcat,而项目加大,可能就需要服务器集群。而为了让分发用户的中心服务器不崩溃,就需要nginx。除此之外还可以有redis等等nosql用来优化这一部分。再进一步可以资源分离,单独拿出ftp服务器储存资源。

当然,改变是没有止境的,只要你想,总可以继续优化。

Tomcat的安装部署

安装java

  1. yum install java-1.8.0-openjdk.x86_64
  2. java -version 查看是否安装成功
    查看java版本
  3. 配置环境变量 vi /etc/profile
# 在结尾加上一下材料
# set java environment
JAVA_HOME=/usr/lib/jvm/jre-1.8.0-openjdk.x86_64
PATH=$PATH:$JAVA_HOME/bin
CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
export JAVA_HOME CLASSPATH PATH

. /etc/profile,来使改变生效

安装tomcat

  1. yum install tomcat -y
  2. 查看tomcat 版本:rpm -q tomcat
    查看tomcat版本
  3. 安装管理包:yum install tomcat-webapps tomcat-admin-webapps
  4. 开启服务:systemctl start tomcat
  5. 查看tomcat安装位置:ps aux|grep tomcat|grep -v grep

使用安装包方式安装tomcat

  1. 下载资源 wget https://mirror.bit.edu.cn/apache/tomcat/tomcat-8/v8.5.55/bin/apache-tomcat-8.5.55.tar.gz
  2. 解压安装包 tar -zxvf apache-tomcat-8.5.55.tar.gz
  3. mv apache-tomcat-8.5.55/* /usr/local/tomcat, 然后删除apache-tomcat-8.5.55文件夹
  4. 运行,cd /usr/local/tomcat/bin./startup.sh
  5. 如果没有出结果,那么可以查看log,cd /usr/local/tomcat/logscat catalina
  6. 可能出错的原因有:
  • 端口占用:使用 netstat -tunlp | grep 8080 查看端口是否占用,若有使用 kill -9 [pid] 来结束进程
  • 防火墙未设置
    • systemctl start firewalld 打开防火墙
    • firewall-cmd --permanent --zone=public --list-ports来查看允许通过的端口
    • firewall-cmd --zone=public --add-port=8080/tcp --permanent设置运行8080端口通行
    • firewall-cmd --reload 来重新加载规则
    • firewall-cmd --zone=public --query-port=8080/tcp 查看是否生效。
  • 如果使用的是阿里云的服务器,就需要注意是否设置了安全组的规则。尝试telnet (主机地址) (端口号) 来尝试连接,若无法联通,则可以去查看是否设置了安全组的规则
    阿里云安全组规则
  • 如果出现如图所示报错
    报错
    则需要修改一部分内容
    • 找到jdk的路径
    • 依次使用命令 which java
    • 然后 ls -lrt /usr/bin/java
    • 然后 ls -lrt /etc/alternatives/java 最终得到的结果前面部分才是jdk的路径,即/usr/java/jdk1.8.0_172-amd64
    • 进入 /usr/java/jdk1.8.0_172-amd64/jre/lib/security/ 目录下(cd /usr/java/jdk1.8.0_172-amd64/jre/lib/security/
    • 找到java.security文件并编辑 (vi java.security
    • securerandom.source=file:/dev/random 修改为 securerandom.source=file:/dev/./urandom,保存退出
  • 如果还是不行,查看log的报错是
    http报错
    这里可以在conf下面的server.xml配置,使用的协议是http协议,所以如果使用https来访问就会出错
  1. 访问网站,直接在地址栏输入路径即可
    访问tomcat首页
    若出现如上界面,则说明成功

安装mysql

  1. 使用wget命令从网络上下载mysql的压缩包,然后解压到 /usr/local/mysql 目录下
  2. 创建mysql用户和用户组
groupadd mysql
useradd -r -g mysql mysql
  1. 检验是否添加
  • cat /etc/group | grep mysql
  • cat /etc/passwd | grep mysql
    若结果不为空,则说明添加成功
  1. 更改mysql目录下的所有文件及文件夹所属的用户组和用户
  • chown -R mysql:mysql /usr/local/mysql
  • chmod -R 755 /usr/local/mysql
  1. 在mysql 目录下创建文件夹data用来存放数据,cd bin,然后编译安装初始化mysql
  • mkdir data
  • 若出现如下错误
    库文件缺失
    则把提示中缺少的库文件安装上去,yum install libaio-devel.x86_64
  • 执行命令 ./mysqld --initialize --user=mysql --datadir=/usr/local/mysql/data --basedir=/usr/local/mysql
    成功
    出现如上结果则说明成功,这里的初始密码记得要保留
  1. 运行
  • 配置环境变量,export PATH=$PATH:/usr/local/mysql/bin
  • 启动mysql服务 /usr/local/mysql/support-files/mysql.server start,出现错误
    mysql错误
    新建文件夹,并授权
    • mkdir /var/log/mariadb
    • touch /var/log/mariadb/mariadb.log
    • chown -R mysql:mysql /var/log/mariadb/
      之后出现类似错误都是这么解决的,继续运行,成功
  • 使用命令 mysql ,出现错误
    mysql错误
    编辑 /etc/my.cnfvi /etc/my.cnf,增加客户端的socket设置
[client]
 port=3306
 socket=/var/lib/mysql/mysql.sock
  • mysql -u [username] -p,进入数据库,使用之前编译出现过的初始密码
  • 修改密码 set password for [username]@localhost = password([your new password])
    然后就可以使用数据库了

安装nginx

  1. 安装依赖,yum -y install gcc zlib zlib-devel pcre-devel openssl openssl-devel
  2. 下载资源,wget http://nginx.org/download/nginx-1.13.7.tar.gz
  3. 解压到 /usr/local/nginx 下面
  4. 编译安装
  • cd /usr/local/nginx
  • ./configure
  • make
  • /usr/local/nginx/sbin/nginx -s reload
    出错,和之前安装mysql的时候的错误类似,也是找不到文件
    nginx错误
    老办法,自己根据提示创建一个
    继续启动,又出错
    nginx错误
    /usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf,然后重新启动,成功。查看进程,ps -ef | grep nginx
    查看进程
    设置防火墙规则,以及阿里云平台设置安全组规则,由于可能会有端口冲突,最好将端口由80改为其他端口 vi /usr/local/nginx/conf/nginx.conf,然后修改
    nginx成功
    访问地址,出现如上界面,则说明成功

nginx动静分离

  1. 打包vue项目
  • Vue-cli2 和 vue-cli3的配置有些区别,但是基本思路一致,首先要将路径修改为 ./,也就是相对路径,其次是路由设置为hash模式。默认为hash模式,而hash模式的样式显示可能会有些问题,最好使用history模式。history模式下,本地无法打开,需要配置好后台。
  • 打包命令 npm run build
  • 然后会在项目目录生成打包文件,默认为dist。可以在本地测试一下运行,如果成功则没有问题。
  1. 后台运行jar包
  • 使用spring boot 可以使用pom导入依赖,使用maven直接打包。生成的jar直接运行就可以了。
  • 这里就有一个坑点,如果是云服务器,关闭控制台,使用命令 java -jar 运行的jar包就会结束运行。所以需要控制在后台运行。
  • 使用命令 nohup [command] & 就可以将命令挂在后台运行。然后按回车键可以返回控制台。
    - netstat -tunlp|grep 8080,查看是否运行成功,8080是对应端口号。
  1. 配置nginx.conf
  • 首先找到nginx的下载目录,进入conf目录
  • vi nginx.conf,添加如下条目
 	server {
        listen 8090;  # 设置监听端口
        server_name web;
        location / {
            root  /root/exam/dist; # 这里填项目的根目录
            index index.html index.htm; # 填写首页名称
        }

        location  /api {
            proxy_pass xxx; # 这里改成你的代理的路径
            proxy_redirect default;
            root   /root/exam/dist; # 同上
            index  index.html index.htm;
        }
    }

这里是配置了vue的静态资源。
4. 负载均衡
实际生产中,可能不止一个服务器,所以需要配置多个服务器。
仍然在 nginx.conf 文件中修改。

	upstream mysite {
        ip_hash; # 默认轮询,ip_hash可以使某个ip地址访问确定的一个服务器,防止session失效
        server xxx weight=1;  # xxx填上目的ip地址加端口号
        #server xxx weight=1; # weight表示权重,代表访问的偏向,权重越高,访问的次数越多
    }

然后添加用于代理的服务器

	server {
        listen 8091;
        server_name service;

        location / {
            proxy_pass http://mysite;
        }

将原来静态资源的代理路径修改一下

	location  /api {
            proxy_pass http://xxx:8091/; # xxx 为ip地址,8091是先前配置好的监听端口
            proxy_redirect default;
            root   /root/exam/dist;
            index  index.html index.htm;
        }

nginx -s reload,重载服务器

部署ftp服务器

  1. 首先贴出两个参考地址:
    关于被动模式的坑点
    ftp配置参数详解
    首先安装vsftp服务器,这里就不赘述怎么安装了。
    可参考,vsftp安装
  2. 修改vsftp的配置,vi /etc/vsftpd/vsftpd.conf
    以下列出一些常用参数
  • anonymous_enable # 允许匿名访问
  • write_enable # 允许写入
  • connect_from_port_20 # 控制以PORT模式进行数据传输时是否使用20端口(ftp-data)。YES使用,NO不使用。
  • local_enable # 是否允许本地用户访问,这里虚拟用户也是本地用户
  • pam_service_name # PAM 服务名称,这里的设置决定PAM将为vsftpd使用配置文件
  • userlist_enable # 此选项被激活后,VSFTPD将读取userlist_file参数所指定的文件中的用户列表。当列表中的用户登录FTP服务器时,该用户在提示输入密码之前就被禁止了。即该用户名输入后,VSFTPD查到该用户名在列表,VSFTPD就直接禁止掉该用户,不会再进行询问密码等后续步聚。默认值为NO。
  • tcp_wrappers # 在VSFTPD中使用TCP_Wrappers远程访问控制机制,默认值为YES。
  • listen_port # 配置监听端口,默认为21
  • pasv_min_port # 被动模式最小端口
  • pasv_max_port # 主动模式最大端口
  • local_max_rate # 最大带宽
  • chroot_list_enable # 锁定某些用户在自家目录中。即当这些用户登录后,不可以转到系统的其他目录,只能在自家目录(及其子目录)下。具体的用户在chroot_list_file参数所指定的文件中列出。默认值为NO
  • chroot_local_user # 将本地用户锁定在自家目录中。当此项被激活时,chroot_list_enable
  • chroot_local_users # 参数的作用将发生变化,chroot_list_file所指定文件中的用户将不被锁定在自家目录。本参数被激活后,可能带来安全上的冲突,特别是当用户拥有上传、shell访问等权限时。默认值为NO
  • local_root # 设置根目录
  • anon_root # 设置匿名用户登录的目录
  • pasv_promiscuous # 使用混杂模式,为YES时,取消PORT安全检查
  • pasv_addr_resolve # 允许vsftpd使用配置的ip地址启动被动模式,即告知客户端配置的ip地址
  • pasv_address # 设置被动模式的ip地址,若不设置则采用私网ip
  1. 这里介绍一下坑点,就是云服务器上vsftp的被动模式。
  • 要限制端口范围,否则会被防护墙和安全组规则拦下
  • 要配置被动模式的地址,否则默认使用私网ip,外网无法访问
  1. 网页或资源管理器的访问方式,ftp://[user]:[passwd]@[ip地址]
  2. Nginx 部署ftp
	server {
        listen       8089;
        server_name  ftpserver;

        location / {
                root /home/ftpTest/root;  # 这个地方写ftp配置的根目录
                autoindex on;
        }
	}

如果无法访问,要修改文件的权限
chmod -R 777 [根目录]
ftp部署成功
输入地址,出现如上界面,则说明成功。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值