• 云服务器上部署仿牛客网项目


    在这里插入图片描述
    内存最好有4g,才能跑起来。Nginx起到反向代理的作用,正向代理是代理浏览器,反向代理是代理服务器。Tomcat是用Java开发的,因此安装Tomcat之前要安装JRE;希望在服务器上打包程序,因此安装Maven,如果有环境差异,在windows打包再传过去可能会有问题,因此最好在服务器上打包。真实的生产环境下,一个软件可以部署多个实例,例如Tomcat,MySQL,Redis等。学习中,就部署到一个服务器上。访问Linux虚拟机可以用Putty。
    在这里插入图片描述

    命令行传文件:

    pscp 文件名 root@ip地址:/test
    
    • 1

    用Bitvise或者Xftp等软件传也行。
    下载unzip,先cd到根目录,在用yum搜

    cd /
    yum list unzip*
    yum install -y unzip.x86_64 java-1.8.0-openjdk.x86_64
    java -version
    
    • 1
    • 2
    • 3
    • 4

    安装JRE

    注意项目需要JDK12才能运行。

    yum list java*
    yum install -y 
    
    • 1
    • 2

    安装Maven

    去官网下载3.6.3版本的安装包,下载后安装到/opt目录下

    wget -i -c 链接
    tar -xzvf apache-maven-3.6.3-bin.tar.gz -C /opt
    #配置环境变量到/etc/profile
    vim /etc/profile
    #在后面追加,保存退出
    export PATH=$PATH:/opt/apache-maven-3.6.3
    #刷新
    source /etc/profile
    #打印PATH
    echo $PATH
    #查看版本
    mvn -version
    #修改源,进入conf文件夹
    vim settings.xml
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14

    在mirrors中加入:

    <mirror>
        <id>nexus-aliyun</id>
        <mirrorOf>central</mirrorOf>
        <name>Nexus aliyun</name>
        <url>https://maven.aliyun.com/repository/public</url>
    </mirror>
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    安装MySQL

    这里已经装过了,要安装可以参考另外一篇博客。也可以先去官网下载yum对应的库文件,再用yum安装库文件,就能用yum下载最新的MySQL,安装mysql-community-server.x86_64。

    yum install -y 库文件名
    
    • 1

    启动mysql:

    systemctl start mysqld
    
    • 1

    查看Mysql版本:

    mysql -V
    
    • 1

    查看生成的临时密码:

    grep 'password' /var/log/mysqld.log
    
    • 1

    登录之后,修改密码:

    alter user root@localhost identified by '新密码';
    
    • 1

    给mysql导入数据

    unzip -d /test/sql init-sql.zip
    
    • 1

    登录mysql,执行sql文件

    create database community;
    use community;
    #导入文件
    source /test/sql/init_schema.sql;
    source /test/sql/init_data.sql;
    source /test/sql/tables_mysql_innodb.sql;
    show tables;
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

    下面需要把header_url中的localhost的url改成网络能访问到的。

    select id,username,header_url from user;
    update user set header_url = 'http://images.nowcoder.com/head/492t.png' where header_url like '%localhost%';
    
    • 1
    • 2

    安装Redis

    cd /
    yum list redis*
    yum install -y redis.x86_64
    systemctl start redis
    systemctl status redis
    
    • 1
    • 2
    • 3
    • 4
    • 5

    测试redis

    redis-cli
    keys *
    exit
    
    • 1
    • 2
    • 3

    安装kafka

    tar -xzvf kafka_2.12-2.3.0.tgz -C /opt
    #进入到config文件夹下
    vim zookeeper.properties
     vim server.properties
    
    • 1
    • 2
    • 3
    • 4

    基本上只要保存路径符合linux路径规范就行。
    先进入kafka安装路径,不要进入bin目录。因为是服务器,需要用后台方式启动。
    启动zookeeper

    bin/zookeeper-server-start.sh -daemon config/zookeeper.properties
    
    • 1

    启动kafka

    nohup bin/kafka-server-start.sh config/server.properties 1>/dev/null 2>&1 &
    
    • 1

    测试是否成功启动kafka

    bin/kafka-topics.sh --list --bootstrap-server localhost:9092
    
    • 1

    如果显示报错:
    在这里插入图片描述
    关闭tomcat,然后执行上面命令重启,并测试。

    shutdown.sh
    
    • 1

    安装ElasticSearch

    tar -xzvf elasticsearch-6.8.23.tar.gz -C /opt
    unzip -d /opt/elasticsearch-6.8.23/plugins/ik elasticsearch-analysis-ik-6.8.23.zip
    #进入config目录
    vim elasticsearch.yml
    
    • 1
    • 2
    • 3
    • 4

    设置集群名字,数据和日志存放位置:
    在这里插入图片描述
    修改jvm设置,可以根据内存大小设置占用空间

    vim jvm.options
    
    • 1

    在这里插入图片描述
    ElasticSearch不允许root用户启动,需要创建一个用户,并用这个用户启动

    groupadd nowcoder
    useradd nowcoder1 -p 设置密码 -g nowcoder
    cd /opt
    chown -R nowcoder1:nowcoder *
    cd /tmp
    chown -R nowcoder1:nowcoder *
    su - nowcoder1
    #进入elasticsearch安装目录后,后台启动ES
    bin/elasticsearch -d
    su
    #测试是否安装成功
    curl -X GET "localhost:9200/_cat/health?v"
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12

    Wkhtmltopdf

    cd /
    yum list wkhtmlyopdf*
    yum install -y wkhtmltopdf.x86_64
    
    • 1
    • 2
    • 3

    需要gui支持,安装虚拟gui程序

    yum install -y xorg-x11-server-Xvfb.x86_64
    #测试
    xvfb-run --server-args="-screen 0, 1024x768x24" wkhtmltoimage https://www.baidu.com 1.png
    
    • 1
    • 2
    • 3

    每次都这样写命令很麻烦,因此可以包装一下

    cd /opt
    vim wkhtmltoimage.sh
    #添加
    xvfb-run --server-args="-screen 0, 1024x768x24" wkhtmltoimage "$@"
    chmod +x wkhtmltoimage.sh
    cd /test
    /opt/wkhtmltoimage.sh https://www.baidu.com 2.png
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

    安装tomcat

    tar -xzvf apache-tomcat-9.0.64.tar.gz -C /opt
    vim /etc/profile
    #在后面追加
    export PATH=$PATH:/opt/apache-tomcat-9.0.64/bin
    source /etc/profile
    echo $PATH
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    启动tomcat

    startup.sh
    
    • 1

    安装nginx

    yum list nginx*
    yum install -y nginx.x86_64
    vim /etc/nginx/nginx.conf
    
    • 1
    • 2
    • 3

    把这一段注释掉
    在这里插入图片描述
    在这段后面加上:

    upstream myserver {
            server 127.0.0.1:8080 max_fails=3 fail_timeout=30s;
    }
    
    server {
            listen 80;
            server_name 49.232.164.108;
            location / {
                    proxy_pass http://myserver;
            }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11

    启动nginx

    systemctl start nginx
    
    • 1

    部署代码

    由于没有处理根路径,因此访问/时要等价与访问/index,一个方法是访问/时重定向到/index,另外一个方法
    可以把webapps中的都删去,再加上自己的项目。
    对代码进行调整:
    1、在application.properties中把/community改成空。
    在这里插入图片描述
    2、在global.js中把/community改成空
    在这里插入图片描述
    3、在HomeController中加上

    @RequestMapping(path = "/", method = RequestMethod.GET)
    public String root(){
        return "forward:/index";
    }
    
    • 1
    • 2
    • 3
    • 4

    4、在pom.xml中修改打包方式和打包名字
    在这里插入图片描述
    在这里插入图片描述
    5、通过设置,选定使用哪个配置文件,并且修改相应项
    在这里插入图片描述
    修改成服务器ip
    在这里插入图片描述

    6、tomcat本身有main函数,一个Java程序不可能有两个main函数,因此重写方法
    重建CommunityServletInitializer类,继承SpringBootServletInitializer,重写方法:

    @Override
    protected SpringApplicationBuilder configure(SpringApplicationBuilder builder) {
        return builder.sources(CommunityApplication.class);
    }
    
    • 1
    • 2
    • 3
    • 4

    tomcat从这个类访问。
    使用maven的clean把target删除,并传送整个项目文件到云服务器。

    unzip -d /test community.zip
    #第一次下载maven并执行打包,会下载相关依赖,需要一些时间
    #进入community中打包
    mvn package -Dmaven.test.skip=true
    
    • 1
    • 2
    • 3
    • 4

    如果出现报错:[ERROR] No compiler is provided in this environment. Perhaps you are running on a JRE rather than a JDK?
    在这里插入图片描述

    yum install java-devel
    
    • 1

    再复制到tomcat中:

    mv ROOT.war /opt/apache-tomcat-9.0.64/webapps/
    
    • 1

    linux区分大小写,先登录MySQL数据库

    show variables like '%case%';
    
    • 1
    vim /etc/my.cnf
    #加上
    lower_case_table_names=1
    #重启
    service mysqld restart
    
    • 1
    • 2
    • 3
    • 4
    • 5

    这个对于mysql8不行。手动修改表名为大写。

  • 相关阅读:
    QT 创建多个子项目,以及调用
    【大数据面试题】014 Flink CDC 用过吗,请简要描述
    深度学习入门(三十五)计算性能 编译器和解释器
    Docker技术入门|L1简介及安装
    Notebook系列第11期:基于POT工具API模式的模型量化方法
    SpringBoot的幕后推手是谁?
    postgresql简单导出数据与手动本地恢复(小型数据库)
    Bika LIMS 开源LIMS集—— SENAITE的安装
    1个G的视频能压缩到几M?视频过大这样压缩
    Python的内置函数(十七)、replace()
  • 原文地址:https://blog.csdn.net/qq_41523340/article/details/125520854