部署_部署tomcat - CSDN
精华内容
参与话题
  • 项目部署的完整流程

    千次阅读 2020-08-11 13:24:43
    作为一个合格的程序猿,仅仅会打代码还是远远不够的,项目的部署也是我们必须要会的操作,也就是所谓的上线,将我们本地开发好的项目部署到远程服务器上,使得任何机器都可以通过我们远程服务器的公网ip或者域名加上...

    作为一个合格的程序猿,仅仅会打代码还是远远不够的,项目的部署也是我们必须要会的操作,也就是所谓的上线,将我们本地开发好的项目部署到远程服务器上,使得任何机器都可以通过我们远程服务器的公网ip或者域名加上端口号访问到我们的项目。这篇博客详细的列出每个步骤,并且也列举了在部署过程中常见的问题,看完这篇文章,你一定会有所收获!

    首先,我先给大家捋一下项目部署的流程:

    1. 环境搭建: 我们以当下最流行的springboot项目为例,最终打成的是一个jar包,jar包要在远程服务器上跑起来,环境搭建是第一步,也就是安装jdk环境,至于tomcat的话,springboot自带tomcat,所以不安装也可以;

    2. 数据库的部署: 在本地开发的时候,我们代码里面的数据库连接主机名写的是localhost,之所以这样写了能访问到,那是因为我们的项目和数据库都在我们的本地机器上,所以可以访问到;而如果项目部署到远程服务器上,要访问到数据库,应该先部署数据库,至于数据库连接还能不能写localhost,要分两种情况,如果我们的数据库和项目都部署到了同一台远程服务器上,那可以;如果部署在不同机器上,那显然不行,这种情况的话数据库连接的主机名就需要修改成数据库所部署的那台机器的公网ip或者域名。

    3. 上面两步操作完成之后,就可以把本地打好的jar包上传到远程服务器上,远程服务器进入jar包所在目录,执行 java -jar jar包名 即可启动项目,至此,项目部署完成!

    对于以上的步骤,我再详细的列出:

    【一】数据库部署到远程服务器

    方法一:Xshell连接远程服务器进行命令行操作

    1. 将本地的数据库导出成.sql文件
    2. 在远程服务器中创建一个文件夹,专门存放.sql文件的
    3. 执行rz命令(前提是安装了lrzsz),将本地的.sql文件上传到远程服务器上该文件夹;也可以使用xftp实现文件传输
    4. 登录mysql:mysql -u root -p(回车后输入密码)
    5. 执行.sql文件之前需要先创建对应的数据库
    CREATE DATABASE IF NOT EXISTS 数据库名 DEFAULT CHARSET utf8 COLLATE utf8_general_ci;
    
    1. 选中刚刚创建的数据库之后再执行.sql文件:use 数据库名
    2. 执行.sql文件:source ***.sql

    (注意如果我们是在.sql文件所在的文件夹中执行该命令就不用加路径,否则需要加上.sql文件所在路径)

    方法二:本地Navicat连接远程服务器的数据库进行可视化操作

    关于本地Navicat连接远程数据库的操作可参考我另一篇博客: https://blog.csdn.net/can_chen/article/details/107184239

    同样是先将本地的数据库导出成.sql文件,我们可以看下导出来的.sql文件包含了什么内容:
    在这里插入图片描述
    这里只截图了部分,下面开始的都是表结构和表数据,可以看到导出来的.sql文件并没有为我们创建数据库,所以在导入.sql文件之前需要先手动创建数据库,并且在我们导出来的.sql文件中添加一行选中我们的数据库 use 数据库名
    在这里插入图片描述
    以上两步操作没完成的话在导入.sql文件的时候都会报错,显示没有选中数据库,如下图:
    在这里插入图片描述
    操作完成之后,便可以将.sql文件导入远程mysql数据库了。

    【二】项目部署到远程服务器

    1. 当我们已经将数据库部署到远程服务器上,如果数据库和项目部署不在同一台远程服务器上,那么在将项目打成jar包之前需要先修改数据库连接的配置信息,将主机名修改成数据库所部署的那台机器的公网ip或者域名,如果数据库和项目部署在同一台远程服务器上,那么主机名可以继续使用localhost;

    2. Xshell连接阿里云远程服务器,并使用xftp将本地的jar包传输到远程服务器上,如果安装了lrzsz可以直接使用rz命令上传

    3. 放行端口号,部署项目成功之后,要能够访问到项目,还应该在阿里云控制台开放对应的端口(进入阿里云官网)
      在这里插入图片描述
      除此之外,还应该在宝塔面板中的防火墙放行该端口
      在这里插入图片描述
      关于宝塔面板: 其实可以简单的理解成就是用来管理我们服务器的,可视化操作简单,管理方便。我们要在服务器中安装软件,部署环境,除了使用linux命令,也可以使用宝塔面板进行可视化操作,去到宝塔面板里的软件商店即可下载,另外,对于防火墙的端口号放行,通过宝塔面板设置也非常的简单快捷。

      关于服务器的购买教程和宝塔部署的相关操作可以参考视频:https://www.bilibili.com/video/BV177411K7bH

    【三】启动项目

    1. 在Xshell中操作,先进入到阿里云远程服务器中jar包所在的文件夹目录
    2. 使用nohup java -jar jar包名 & 命令运行jar包

    (nohup加上&表示项目可以在后台永久的执行,即使关闭Xshell终端也不会停止运行;如果后面想要停止该项目的运行,可以直接结束该项目端口占用的进程)

    以上命令执行之后会提示:nohup: ignoring input and appending output to ‘nohup.out’,这是正常提示,并不是错误,直接打回车就可以。该提示产生的原因是nohup默认会把标准输出重定向到默认文件nohup.out中,也可以自定义该输出文件,例如:nohup java -jar jar包名 >temp.txt & 但是标准错误输出没有重定向到某个文件,所以会有该提示。
    在这里插入图片描述
    如果想要不输出该提示,省去打回车键的操作,那么可以使用以下命令:nohup java -jar jar包名 2>&1 & 解释:2>&1 是将错误提示信息的输出重定向到标准输出,而这里的标准输出已经重定向到默认文件nohup.out中,也就是说标准的错误提示也直接输出到nohup.out中,所以就没有提示了,也就不用再打回车了。

    【四】需要注意的问题

    1. 如果已经在阿里云控制台开放了项目对应的端口号之后,通过公网ip和端口号还是无法访问项目的话,最大的一个可能就是防火墙的原因,防火墙并没有开放对应的端口号,这时候就可以使用宝塔面板去防火墙设置里放行对应的端口号;
    2. 关于项目运行的端口号,建议在打jar包之前改成不常见的那些端口号,避免出现端口号冲突,例如使用8080、3306、80这些端口号都容易出现端口号冲突,尽量不用。
    3. Linux下解决端口号冲突的方法:
    # 查看所有端口使用情况
    lsof -i
    # 查看具体某个端口使用情况
    lsof -i:端口号
    
    # COMMAND指的是进程名,PID指的是进程号/进程ID
    
    # 通过进程名结束占用端口的进程
    killall 进程名
    # 通过进程ID结束占用端口的进程
    kill 进程ID
    # 通过进程ID强制结束占用端口的进程
    kill -9 进程ID
    

    PS:以上就是整个项目部署的完整流程,如果看了之后还有问题的小伙伴可以私信我,没准能帮得上忙哦!😊

    展开全文
  • 项目开发的最后一公里:项目部署

    千次阅读 2020-04-26 13:10:56
    一、Nginx 部署 去Nginx官网找到下载链接: 在服务器下载并安装Nginx: wget http://nginx.org/download/nginx-1.17.10.tar.gz tar xf nginx-1.17.10.tar.gz cd nginx-1.17.10 安装依赖...

    Hello,我是 Alex 007,一个热爱计算机编程和硬件设计的小白,为啥是007呢?因为叫 Alex 的人太多了,再加上每天007的生活,Alex 007就诞生了。

    经过三个多星期的摧残,驾考暂时告一段落了,科二险过,科三因为违反了道路安全交通法第52条挂了,这回要等一个多月才能再考了,虽然有点失落,但终于有时间在家里敲敲代码了。
    今天呢,分享一下项目上线的最后一公里:项目部署,也就是将我们写好的项目发布,在互联网上可以访问到。

    环境:CentOS7 + Nginx + Python + Django + uwsgi + MySql

    一、Nginx 部署

    1. Nginx官网找到下载链接:
      在这里插入图片描述
    2. 在服务器下载并安装Nginx:
    wget http://nginx.org/download/nginx-1.17.10.tar.gz
    
    tar xf nginx-1.17.10.tar.gz
    
    cd nginx-1.17.10
    

    安装依赖:

    sudo yum -y install pcre-devel zlib-devel
    

    开始安装:

    ./configure
    
    sudo make && make install
    

    启动Nginx:

    sudo /usr/local/nginx/sbin/nginx
    

    访问服务器测试安装:

    在这里插入图片描述

    二、Python 安装

    我这个人比较懒啊,直接安装了一个Anaconda。

    Anaconda指的是一个开源的Python发行版本,其包含了conda、Python等180多个科学包及其依赖项。

    里面所包含的Jupyter Notebook是数据挖掘领域中最热门的工具。(例如Kaggle竞赛)

    可以去清华大学开源软件镜像站中找到喜欢的Anaconda版本,这里以Anaconda3-5.3.1-Linux-x86_64安装为例。

    在这里插入图片描述

    复制下载地址,然后在Linux中使用wget下载:

    wget https://mirrors.tuna.tsinghua.edu.cn/anaconda/archive/Anaconda3-5.3.1-Linux-x86_64.sh
    

    执行结果为:

    [Alex@Alex ~]$ wget https://mirrors.tuna.tsinghua.edu.cn/anaconda/archive/Anaconda3-5.3.1-Linux-x86_64.sh
    --2020-03-30 10:23:04--  https://mirrors.tuna.tsinghua.edu.cn/anaconda/archive/Anaconda3-5.3.1-Linux-x86_64.sh
    Resolving mirrors.tuna.tsinghua.edu.cn (mirrors.tuna.tsinghua.edu.cn)... 101.6.8.193, 2402:f000:1:408:8100::1
    Connecting to mirrors.tuna.tsinghua.edu.cn (mirrors.tuna.tsinghua.edu.cn)|101.6.8.193|:443... connected.
    HTTP request sent, awaiting response... 200 OK
    Length: 667976437 (637M) [application/octet-stream]
    Saving to: ‘Anaconda3-5.3.1-Linux-x86_64.sh’
    
    100%[=============================================================================================>] 667,976,437 10.4MB/s   in 65s
    
    2020-03-30 10:24:09 (9.75 MB/s) - ‘Anaconda3-5.3.1-Linux-x86_64.sh’ saved [667976437/667976437]
    

    在Linux里面.sh文件是可执行的脚本文件,需要用命令bash来进行安装:

    bash Anaconda3-5.3.1-Linux-x86_64.sh
    

    出现如下信息按 Enter:

    In order to continue the installation process, please review the license agreement.
    Please, press ENTER to continue
    >>>
    

    然后按几次空格翻页浏览一下license,

    出现如下信息输入 yes :

    Do you accept the license terms? [yes|no]
    [no] >>>yes
    

    之后选择anaconda的安装位置,可以直接按 Enter 使用默认位置:

    Anaconda3 will now be installed into this location:
    /home/Alex/anaconda3
    
      - Press ENTER to confirm the location
      - Press CTRL-C to abort the installation
      - Or specify a different location below
    
    [/home/Alex/anaconda3] >>>
    

    经过大概几分钟的安装,anaconda会帮我们安装好很多常用的第三方库。

    再之后会让我们初始化anaconda3,输入yes即可:

    Do you wish the installer to initialize Anaconda3
    in your /home/Alex/.bashrc ? [yes|no]
    [no] >>>yes
    

    最后让我们安装VSCode,这个我们暂时用不到,输入no:

    Visual Studio Code License: https://code.visualstudio.com/license
    
    Do you wish to proceed with the installation of Microsoft VSCode? [yes|no]
    >>>no
    

    这样,我们的Anaconda就安装好了:

    (base) [Alex@Alex ~]$ python
    Python 3.7.0 (default, Jun 28 2018, 13:15:42)
    [GCC 7.2.0] :: Anaconda, Inc. on linux
    Type "help", "copyright", "credits" or "license" for more information.
    >>> exit()
    

    三、MySQL 安装

    1. 配置yum源

    下载mysql源安装包

    在MySQL官网中下载YUM源rpm安装包:http://dev.mysql.com/downloads/repo/yum/

    复制下载链接:https://dev.mysql.com/get/mysql80-community-release-el7-1.noarch.rpm

    执行下载命令:

    wget https://dev.mysql.com/get/mysql80-community-release-el7-1.noarch.rpm
    

    安装mysql源

    下载完成后使用下面命令安装源:

    yum localinstall mysql80-community-release-el7-1.noarch.rpm
    

    检查是否安装成功

    yum repolist enabled | grep "mysql.*-community.*"
    

    1. 安装mysql

    直接使用命令:yum install mysql-community-server

    1. 启动mysql服务

    启动

    systemctl start mysqld
    

    或者

    service mysqld start
    

    查看启动状态

    systemctl status mysqld
    

    或者

    service mysqld status
    

    在这里插入图片描述
    设置开机启动

    systemctl enable mysqld
    systemctl daemon-reload
    
    1. 配置及部分命令

    修改登录密码

    mysql安装完成之后,在/var/log/mysqld.log文件中给root生成了一个默认密码。通过下面的方式找到root默认密码,然后登录mysql进行修改:

    grep 'temporary password' /var/log/mysqld.log
    

    在这里插入图片描述

    本地MySQL客户端登录

    mysql -uroot -p
    

    密码是上一步查询出来的。输入后回车。

    然后修改密码:

    ALTER USER 'root'@'localhost' IDENTIFIED BY 'TestBicon@123';
    

    或者

    set password for 'root'@'localhost'=password('TestBicon@123');
    

    注意:mysql5.7默认安装了密码安全检查插件(validate_password),默认密码检查策略要求密码必须包含:大小写字母、数字和特殊符号,并且长度不能少于8位。否则会提示ERROR 1819 (HY000): Your password does not satisfy the current policy requirements错误,如下图所示:

    通过msyql环境变量可以查看密码策略的相关信息(执行这一步需要先修改默认密码,即执行完上一步修改才可以,否则会报错:ERROR 1820 (HY000): You must reset your password using ALTER USER statement before executing this statement.)

    show variables like '%password%';
    

    validate_password_policy:密码策略,默认为MEDIUM策略

    validate_password_dictionary_file:密码策略文件,策略为STRONG才需要

    validate_password_length:密码最少长度

    validate_password_mixed_case_count:大小写字符长度,至少1个

    validate_password_number_count :数字至少1个

    validate_password_special_char_count:特殊字符至少1个

    上述参数是默认策略MEDIUM的密码检查规则。

    修改密码策略:

    在/etc/my.cnf文件添加validate_password_policy配置,指定密码策略:

    选择0(LOW),1(MEDIUM),2(STRONG)其中一种,选择2需要提供密码字典文件。

    validate_password_policy=0

    如果不需要密码策略,添加my.cnf文件中添加如下配置禁用即可:

    validate_password = off

    重新启动mysql服务使配置生效:systemctl restart mysqld

    添加远程登录用户

    默认只允许root帐户在本地登录,如果要在其它机器上连接mysql,必须修改root允许远程连接,或者添加一个允许远程连接的帐户。

    修改root用户远程访问权限:

    选择 mysql 数据库:use mysql;

    在 mysql 数据库的 user 表中查看当前 root 用户的相关信息:

    select host, user from user;
    

    查看表格中 root 用户的 host,默认应该显示的 localhost,只支持本地访问,不允许远程访问。

    授权 root 用户的所有权限并设置远程访问

    GRANT ALL ON *.* TO 'root'@'%';
    

    如果报错:ERROR 1410 (42000): You are not allowed to create a user with GRANT

    则使用:

    update user set host='%' where user ='root';
    

    然后使用下面命令使修改生效:

    flush privileges;
    

    如有需要再执行之前授权报错的命令即可成功,最后同样使用flush privileges;命令刷新。

    sqlyog链接时出现2058异常

    完成上面的配置使用sqlyog链接时会出现2058的异常,此时我们需要修改mysql,命令行登录mysql(与修改密码中登录相同,使用修改后的密码),然后执行下面的命令:

    ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'password';

    其中password为自己修改的密码。然后SQLyog中重新连接,则可连接成功,OK。

    如果报错:ERROR 1396 (HY000): Operation ALTER USER failed for 'root'@'localhost'则使用下面命令:

    ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY 'password';

    修改默认编码方式

    mysql8.0默认编码方式为utf8mb4,因此使用时不需要修改,可使用如下命令查看:

    SHOW VARIABLES WHERE Variable_name LIKE 'character_set_%' OR Variable_name LIKE 'collation%';

    如果需要修改其他编码方式,方法有很多,以下仅为举例。

    比如需要修改为utf8mb4,可以使用如下方式:

    修改mysql配置文件my.cnf(windows为my.ini)

    my.cnf一般在etc/mysql/my.cnf位置。找到后请在以下三部分里添加如下内容:

    [client]
    
    default-character-set = utf8mb4
    
    [mysql]
    
    default-character-set = utf8mb4
    
    [mysqld]
    
    character-set-client-handshake = FALSE
    
    character-set-server = utf8mb4
    
    collation-server = utf8mb4_unicode_ci
    
    init_connect='SET NAMES utf8mb4'
    

    重启mysql即可。

    collation_connection 、collation_database 、collation_server是什么没关系。但必须保证以下这几个变量必须是utf8mb4。:

    • character_set_client  (客户端来源数据使用的字符集)
    • character_set_connection     (连接层字符集)
    • character_set_database   (当前选中数据库的默认字符集)
    • character_set_results (查询结果字符集)
    • character_set_server (默认的内部操作字符集)

    数据库连接参数中:

    characterEncoding=utf8会被自动识别为utf8mb4,也可以不加这个参数,会自动检测。

    而autoReconnect=true是必须加上的。

    部分参数配置查询命令

    #查询mysql最大连接数设置

    show global variables like 'max_conn%';

    SELECT @@MAX_CONNECTIONS AS 'Max Connections';

    # 查看最大链接数

    show global status like 'Max_used_connections';

    # 查看慢查询日志是否开启以及日志位置

    show variables like 'slow_query%';

    # 查看慢查询日志超时记录时间

    show variables like 'long_query_time';

    # 查看链接创建以及现在正在链接数

    show status like 'Threads%';

    # 查看数据库当前链接

    show processlist;

    # 查看数据库配置

    show variables like '%quer%';

    四、部署发布平台

    1. clone代码

    从GitHub上将项目下载下来:

    git clone https://github.com/koking0/MatrixStudioManagementSystem.git 
    
    1. 搭建虚拟环境

    虚拟环境相当于一个抽屉(或文件夹),在这个抽屉(或文件夹)中安装的任何软件包都不会影响到其他抽屉(或文件夹)。

    并且在项目中,我可以指定这个项目的虚拟环境来配合我的项目。

    比如我们现在有一个项目是基于 Django1.10.x 版本,又有一个项目是基于 Django 2.0.x 的版本,那么这时候就可以创建两个虚拟环境,在这两个虚拟环境中分别安装 Django 1.10.x 和 Django 2.0.x 来适配我们的项目。

    一句话,虚拟环境解决多版本共存问题;

    安装虚拟环境

    sudo pip install virtualenv
    

    创建虚拟环境

    conda create -n venv python=3.7
    

    启动虚拟环境

    conda activate venv
    
    1. 安装Django
    pip install django
    
    1. 安装uwsgi
    pip install uwsgi
    
    1. 配置uwsgi
    vim uwsgi.ini
    

    文件内容如下:

    [uwsgi]                                                          
    #socket 绑定的IP and port                                           
    socket = 127.0.0.1:8080                                          
    #主进程                                                             
    master = true                                                    
    #多站模式                                                            
    vhost = true                                                     
    #多站模式时不设置入口模块和文件                                                 
    no-site = true                                                   
    #子进程数量                                                           
    workers = 2                                                      
    #                                                                
    reload-mercy = 10                                                
    #退出、重启时清理文件                                                      
    vacuum = true                                                    
    #最大请求数                                                           
    max-requests = 1000                                              
    #                                                                
    limit-as = 512                                                   
    #buffer 大小                                                       
    buffer-size = 30000                                              
    #pid 文件                                                          
    pidfile = /var/run/uwsgi.pid                                     
    #日志文件                                                            
    daemonize = /var/log/uwsgi.log                                   
                                                                     
    pythonpath = /root/Matrix工作室管理系统/venv/lib/python3.7/site-packages
    
    1. 启动uwsgi
    uwsgi --ini /etc/uwsgi/uwsgi.ini
    

    如果报错:uwsgi: error while loading shared libraries: libssl.so.1.1: cannot open shared object file: No such file or directory

    这是由于openssl库的位置不正确造成的,我们可以先通过如下命令找到libssl.so.1.1

    find / -name libssl.so.1.1
    

    执行结果如下:

    [root@Alex ~]# find / -name libssl.so.1.1
    /root/anaconda3/pkgs/openssl-1.1.1g-h7b6447c_0/lib/libssl.so.1.1
    /root/anaconda3/lib/libssl.so.1.1
    

    然后创建软链接:

    ln -s /root/anaconda3/lib/libssl.so.1.1 /lib64/libssl.so.1.1
    

    还可能遇到的报错,解决方案类似:

    [root@Alex ~]# uwsgi --ini /etc/uwsgi/uwsgi.ini
    uwsgi: error while loading shared libraries: libssl.so.1.1: cannot open shared object file: No such file or directory
    [root@Alex ~]# find / -name libssl.so.1.1
    /root/anaconda3/pkgs/openssl-1.1.1g-h7b6447c_0/lib/libssl.so.1.1
    /root/anaconda3/lib/libssl.so.1.1
    [root@Alex ~]# ln -s /root/anaconda3/lib/libssl.so.1.1 /lib64/libssl.so.1.1
    [root@Alex ~]# uwsgi --ini /etc/uwsgi/uwsgi.ini
    uwsgi: error while loading shared libraries: libcrypto.so.1.1: cannot open shared object file: No such file or directory
    [root@Alex ~]# find / -name libcrypto.so.1.1
    /root/anaconda3/pkgs/openssl-1.1.1g-h7b6447c_0/lib/libcrypto.so.1.1
    /root/anaconda3/lib/libcrypto.so.1.1
    [root@Alex ~]# ln -s root/anaconda3/lib/libcrypto.so.1.1 /lib64/libcrypto.so.1.1
    [root@Alex ~]# uwsgi --ini /etc/uwsgi/uwsgi.ini
    uwsgi: error while loading shared libraries: libcrypto.so.1.1: cannot open shared object file: No such file or directory
    [root@Alex ~]# ln -s /root/anaconda3/lib/libcrypto.so.1.1 /lib64/libcrypto.so.1.1
    [root@Alex ~]# uwsgi --ini /etc/uwsgi/uwsgi.ini
    uwsgi: error while loading shared libraries: libicui18n.so.58: cannot open shared object file: No such file or directory
    [root@Alex ~]# find / -name libicui18n*
    /usr/lib64/libicui18n.so
    /usr/lib64/libicui18n.so.50.1.2
    /usr/lib64/libicui18n.so.50
    /root/anaconda3/pkgs/icu-58.2-h9c2bf20_1/lib/libicui18n.so
    /root/anaconda3/pkgs/icu-58.2-h9c2bf20_1/lib/libicui18n.so.58
    /root/anaconda3/pkgs/icu-58.2-h9c2bf20_1/lib/libicui18n.so.58.2
    /root/anaconda3/pkgs/icu-58.2-h9c2bf20_1/lib/libicui18n.a
    /root/anaconda3/lib/libicui18n.so
    /root/anaconda3/lib/libicui18n.so.58
    /root/anaconda3/lib/libicui18n.so.58.2
    /root/anaconda3/lib/libicui18n.a
    [root@Alex ~]# ln -s /root/anaconda3/lib/libicui18n.so.58 /lib64/libicui18n.so.58
    [root@Alex ~]# ln -s /root/anaconda3/lib/libicuuc.so.58 /lib64/libicuuc.so.58
    [root@Alex ~]# ln -s /root/anaconda3/lib/libicudata.so.58 /lib64/libicudata.so.58
    

    显示 [uWSGI] getting INI configuration from uwsgi.ini 表明uwsgi运行成功。

    可以查看一下:

    (base) [root@Alex ~]# netstat -ntpl
    Active Internet connections (only servers)
    Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name
    tcp        0      0 127.0.0.1:9090          0.0.0.0:*               LISTEN      18739/uwsgi
    tcp        0      0 0.0.0.0:80              0.0.0.0:*               LISTEN      6194/nginx: master
    tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN      8162/sshd
    tcp        0      0 0.0.0.0:8888            0.0.0.0:*               LISTEN      1154/python
    tcp6       0      0 :::33060                :::*                    LISTEN      1811/mysqld
    tcp6       0      0 :::3306                 :::*                    LISTEN      1811/mysqld
    
    1. 处理Django静态文件

    在开发中处理网站的css js image等静态文件,不用顾及性能,安全的问题,交给Django内部处理好了。

    但如果正式部署到服务器的时候,这样的配置就会影响到性能和安全性了,因此静态文件要交由Nginx处理。

    首先在项目的settings.py文件中设置参数:

    STATIC_ROOT= '/opt/static' 
    

    然后使用命令手机Django的静态文件:

    python manage.py collectstatic
    

    这样就可以将项目中使用的静态文件收集在一起,可以通过如下命令查看:

    python manage.py collectstatic
    
    1. 配置Nginx
    vim /usr/local/nginx/conf/nginx.conf
    

    文件内容如下:

    worker_processes  1;                                                            
                                                                                    
    error_log  logs/error.log;                                                      
    error_log  logs/error.log  notice;                                              
    error_log  logs/error.log  info;                                                
                                                                                    
    pid        logs/nginx.pid;                                                      
                                                                                    
    events {                                                                        
        worker_connections  1024;                                                   
    }                                                                               
                                                                                    
                                                                                    
    http {                                                                          
        include       mime.types;                                                   
        default_type  application/octet-stream;                                     
                                                                                    
        log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '   
                          '$status $body_bytes_sent "$http_referer" '               
                          '"$http_user_agent" "$http_x_forwarded_for"';             
                                                                                    
        access_log  logs/access.log  main;                                          
                                                                                    
        sendfile        on;                                                         
                                                                                    
        keepalive_timeout  65;                                                      
                                                                                    
        server {                                                                    
            listen       80;                                                        
            server_name  localhost;
            location / {                                                
                    include  uwsgi_params;                              
                    uwsgi_pass  127.0.0.1:8080;                         
                    uwsgi_param UWSGI_SCRIPT Matrix工作室管理系统.wsgi;        
                    uwsgi_param UWSGI_CHDIR  /root/Matrix工作室管理系统;       
                    index  index.html index.htm;                        
                    client_max_body_size 35m;                           
            }                                                           
            location /static {                                          
                    alias /opt/static;                                  
            }                                                           
        }                                                               
    }                                                                   
    

    五、测试

    到此为止,我们的项目算是部署完成了,可以在自己的浏览器上访问一下看看:
    在这里插入图片描述
    好了,项目上线就完成了,接下来可以通过JMeter测试最大并发请求数:

    100个线程:
    在这里插入图片描述
    在这里插入图片描述

    1000个线程:
    在这里插入图片描述
    在这里插入图片描述

    展开全文
  • 新服务器部署完整流程

    万次阅读 2019-12-04 14:21:18
    配置服务器的登录 一般不要把root用户给其他人使用,而是创建一个普通用户账号,例如我现在创建一个... 为了服务器的安全性,root用户登录配置成秘钥登录 ...对于 CentOS6,可以使用 EPEL 库安装 Docker,命令如下: ...

    配置服务器的登录

    一般不要把root用户给其他人使用,而是创建一个普通用户账号,例如我现在创建一个用户名叫做“laowang”的账号,并且配置它的登录密码。
    在这里插入图片描述

    为了服务器的安全性,root用户登录配置成秘钥登录
    在这里插入图片描述

    安装Docker

    我的是阿里云服务器,操作系统为centos7
    1.添加yum源

    #EPEL (Extra Packages for Enterprise Linux)是基于Fedora的一个项目,为“红帽系”的操作系统提供额外的软件包,适用于RHEL、CentOS和Scientific Linux.使用很简单:1. 首先需要安装一个叫”epel-release”的软件包,这个软件包会自动配置yum的软件仓库。当然你也可以不安装这个包,自己配置软件仓库也是一样的。
    # yum install epel-release –y
    #作用:清除YUM缓存。yum 会把下载的软件包和header存储在cache中,而不自动删除。如果觉得占用磁盘空间,可以使用yum clean指令进行清除,更精确 的用法是yum clean headers清除header,yum clean packages清除下载的rpm包,yum clean all一全部清除。
    # yum clean all
    #yum list是列出所有可安装的软件包列表,包含已安装和未安装的
    # yum list
    

    2.安装并运行Docker

    # yum install docker-io –y
    # systemctl start docker
    

    3.检查安装结果,出现下图结果证明安装成功

    # docker info
    

    在这里插入图片描述

    查看docker版本
    docker version
    docker info
    启动docker
    sudo service docker start
    设置随系统启动
    sudo chkconfig docker on

    安装Docker Compose(当然,这个不是必须的,但是有它会用的更爽)

    查看我另外一篇文章

    创建部署项目需要的容器

    1.新建用于存放项目的目录
    在这里插入图片描述

    2.在新建的项目文件夹内添加以下以下两个文件,这两个文件不是拷贝过去就能用的,需要改一些参数,具体改哪些参数,以及这两个文件的具体内容参考我另外一篇文章https://blog.csdn.net/aimashi620/article/details/89002410
    在这里插入图片描述
    这个时候如果直接执行docker-compose build 和docker-compose up -d 会报如下错误,这是因为网络环境还没配置好
    在这里插入图片描述
    打开docker-compose.yml文件我们可以看到了使用名为master的网络,而我们执行docker network ls可以发现,我们并没有叫做master这个网络环境
    在这里插入图片描述
    这个时候我们就要创建名为master的网络,当然这个名字不是固定的。创建网络的时候可以指定很多参数,具体参数参照官方文档https://docs.docker.com/engine/reference/commandline/network_create/
    在这里插入图片描述

    这个时候再执行docker-compose up -d不会报错了,并且执行docker-compose logs命令也能看到项目启动成功。然后在宿主机通过curl命令进行访问接口,访问成功,到这一步可以说明项目已经部署成功了,但是端口映射,nginx,数据库等等其他服务,下面继续
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

    部署Mysql

    1.在服务器上新建一个用于存放mysql服务的目录
    在这里插入图片描述
    2.把一下两个文件拷到该目录下,并在目录中新建一个init.sql文件
    在这里插入图片描述
    Dockerfile

    FROM mysql:5.7
    
    ADD ./init.sql /docker-entrypoint-initdb.d/
    
    RUN chmod a+x $AUTO_RUN_DIR/$INSTALL_DB_SQL
    
    

    docker-compose.yml

    version: '2'
    
    networks:
      default:
        external:
          name: master
    
    services:
       mysql_master:
          image: mysql_master
          container_name: mysql_master
          restart: always
          build: .
          ports:
           - 3306
          volumes:
           - ./data:/var/lib/mysql
           - ./conf:/etc/mysql/conf.d
           - /home/dump:/home/dump
          environment:
           - MYSQL_ALLOW_EMPTY_PASSWORD=yes
           - MYSQL_USER=dba
           - MYSQL_PASSWORD=123
           - TZ=Asia/Shanghai
           - LANG=C.UTF-8
           
    

    3.在服务器上进入到该目录,执行docker-compose build命令
    在这里插入图片描述
    如果报以下错误:Cannot open self /usr/local/bin/docker-compose or archive /usr/local/bin/docker-compose.pkg
    在这里插入图片描述
    这是因为官方文档中描述的方法(如下),安装时curl下载下来的文件是不完整的(可以把你从浏览器上下载下拉的docker-compose-Linux-x86_64文件的大小与你curl下载下拉的文件的大小做对比,如下图),而且没有给出任何错误信息,这可能是https的问题。

    curl -L https://github.com/docker/compose/releases/download/1.14.0-rc2/docker-compose-`uname -s`-`uname -m` > /usr/local/bin/docker-compose
    chmod +x /usr/local/bin/docker-compose
    

    在这里插入图片描述
    解决办法:

    进入下面的网址下载目前的最新版:
    
    https://github.com/docker/compose/releases/tag/1.14.0-rc2
    
    网页拉到最下面,下载:
    
    docker-compose-Linux-x86_64
    
    然后将文件上传到 /usr/local/bin/ 文件夹下,然后将其重命名为docker-compose,修改此文件的权限,增加可执行:chmod +x /usr/local/bin/docker-compose
    
    然后再运行 
    
    [root@fd240 bin]# docker-compose version
    docker-compose version 1.14.0-rc2, build 24dae73
    docker-py version: 2.3.0
    CPython version: 2.7.13
    OpenSSL version: OpenSSL 1.0.1t 3 May 2016
    
    可以看到已经没有问题了(如下图)。
    
    

    在这里插入图片描述

    4.启动mysql
    在这里插入图片描述
    5.进入mysql,账号密码在上面的docker-compose.yml中可以找到,我这里使用root账号登录,密码为空,进去创建一个数据库之后就导入数据。
    docker exec -it 容器id bash
    在这里插入图片描述

    部署Redis

    在服务器上新建一个用于部署redis的文件夹
    在这里插入图片描述
    在此文件夹下添加一下三个文件
    redis.conf

    bind 0.0.0.0
    protected-mode no
    port 6379
    tcp-backlog 511
    timeout 0
    tcp-keepalive 300
    
    ################################# GENERAL #####################################
    daemonize yes
    supervised no
    pidfile /var/run/redis_6379.pid
    loglevel notice
    logfile ""
    databases 2
    
    ################################ SNAPSHOTTING  ################################
    ave 1 1
    #save 900 1
    save 300 10
    save 60 10000
    stop-writes-on-bgsave-error yes
    rdbcompression yes
    rdbchecksum yes
    dbfilename dump.rdb
    dir ./
    
    ################################# REPLICATION #################################
    slave-serve-stale-data yes
    slave-read-only yes
    repl-diskless-sync no
    repl-diskless-sync-delay 5
    repl-disable-tcp-nodelay no
    slave-priority 100
    
    ################################## SECURITY ###################################
    requirepass redis
    
    ################################### LIMITS ####################################
    maxclients 10000
    
    ############################## APPEND ONLY MODE ###############################
    appendonly yes
    appendfilename "appendonly.aof"
    # appendfsync always
    appendfsync everysec
    # appendfsync no
    no-appendfsync-on-rewrite no
    auto-aof-rewrite-percentage 100
    auto-aof-rewrite-min-size 64mb
    aof-load-truncated yes
    
    ################################ LUA SCRIPTING  ###############################
    lua-time-limit 5000
    
    ################################ REDIS CLUSTER  ###############################
    cluster-enabled no
    
    ################################## SLOW LOG ###################################
    slowlog-log-slower-than 10000
    slowlog-max-len 128
    
    ################################ LATENCY MONITOR ##############################
    latency-monitor-threshold 0
    
    ############################# EVENT NOTIFICATION ##############################
    notify-keyspace-events ""
    
    ############################### ADVANCED CONFIG ###############################
    hash-max-ziplist-entries 512
    hash-max-ziplist-value 64
    list-max-ziplist-size -2
    list-compress-depth 0
    set-max-intset-entries 512
    zset-max-ziplist-entries 128
    zset-max-ziplist-value 64
    hll-sparse-max-bytes 3000
    activerehashing yes
    client-output-buffer-limit normal 0 0 0
    client-output-buffer-limit slave 256mb 64mb 60
    client-output-buffer-limit pubsub 32mb 8mb 60
    hz 10
    aof-rewrite-incremental-fsync yes
    

    Dockerfile

    #基础镜像
    FROM redis
    
    #将自定义conf文件拷入
    COPY ./redis.conf  /etc/redis/redis.conf
    
    #修复时区
    #RUN ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
    RUN echo 'Asia/Shanghai' >/etc/timezone
    
    # Redis客户端连接端口
    EXPOSE 6379
    
    #使用自定义conf启动
    CMD [ "redis-server", "/etc/redis/redis.conf" ]
    
    

    docker-compose.yml

    version: '2'
    
    services:
      redis:
        image: redis
        container_name: redis
        restart: always
        ports:
          - 6379:6379
        environment:
          - appendonly=yes # 打开redis密码设置
          - requirepass=123456 # 设置redis密码
        volumes:
          - ./redis.conf:/etc/redis/redis.conf
       # command: redis-server /etc/redis/redis.conf
    
    networks:
       default:
         external:
           name: master
    

    在服务器进入到当前目录,执行docker-compose build命令和docker-compose up -d命令
    在这里插入图片描述
    检查redis是否启动成功
    在这里插入图片描述

    部署Nginx

    1.在服务器上新建一个目录用于部署nginx
    在这里插入图片描述
    2.把以下三个文件拷贝到该目录下,并在该目录下新建一个cert文件夹
    在这里插入图片描述
    nginx.conf

    user  nginx;
    worker_processes  1;
    
    error_log  /var/log/nginx/error.log warn;
    pid        /var/run/nginx.pid;
    
    
    events {
        worker_connections  1024;
    }
    
    
    http {
        include       /etc/nginx/mime.types;
        default_type  application/octet-stream;
    
        log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
                          '$status $body_bytes_sent "$http_referer" '
                          '"$http_user_agent" "$http_x_forwarded_for"';
    
        access_log  /var/log/nginx/access.log  main;
    
        keepalive_timeout  400;
        client_header_timeout 10m;
        client_body_timeout 10m;
        client_max_body_size 512m;
        client_header_buffer_size 16k;
        large_client_header_buffers 4 16k; 
    
        proxy_connect_timeout 300;
        proxy_read_timeout 300;
        proxy_send_timeout 300;
        proxy_buffer_size 64k;
        proxy_buffers   4 32k;
        proxy_busy_buffers_size 64k;
        proxy_temp_file_write_size 64k;
    
    
        sendfile        on;
        #tcp_nopush     on;
    
    
        #gzip  on;
    
        include /etc/nginx/conf.d/*.conf;
    }
    
    

    Dockerfile

    FROM nginx
    
    RUN mkdir -p /var/www
    
    COPY ./cert/ /etc/nginx/cert/
    
    EXPOSE 80 443
    
    CMD ["nginx","-g","daemon off;"]
    

    docker-compose.yml

    version: '2'
    
    networks:
      default:
        external:
          name: master
    
    services:
      nginx:
        image: nginx
        container_name: nginx
        restart: always
        build: .
        ports:
         - "80:80"
         - "443:443"
        volumes:
         - ./conf:/etc/nginx/conf.d
         - ./nginx.conf:/etc/nginx/nginx.conf:ro 
         - ./web:/var/www
        environment:
          TZ: Asia/Shanghai
    

    3.从服务器进入到该目录,执行docker-compose build命令和docker-compose up -d命令
    在这里插入图片描述

    nginx启动虽然没有报错,但是我们会发现nginx访问不了,我们可以进入到nginx容器,执行nginx -t命令检测一下我们的配置文件,会报以下错误
    在这里插入图片描述
    这里是一个坑,因为我是在window下使用notpad++编辑我这个quality_training.conf文件的,保存的时候自动使用了一种错误的编码格式,其实我们应该使用“无BOM格式编码”
    在这里插入图片描述
    然后我改为无BOM格式编码之后再执行一次nginx -t命令,报以下错误,这是因为我们配置了443端口的server,这是https对于的server,配置这个server是需要配置ssl证书的,要不你就配置证书(可以参考我的另外一篇文章https://blog.csdn.net/aimashi620/article/details/83056927),要不你就把这个server删掉。
    在这里插入图片描述
    在我配置证书的时候还报了“找不到证书”这个错误,这个时候可以重启容器再试一次就成功了(如果容器一直在重启中,执行docker rm -f 容器id,把容器删除掉再重新docker-compose build和docker-compose up -d)
    在这里插入图片描述

    域名配置

    1.登录阿里云控制台,进入域名管理控制台
    在这里插入图片描述
    2.点击解析
    在这里插入图片描述
    3.添加一条记录,把域名解析到我们新买的服务器上在这里插入图片描述
    在这里插入图片描述

    配置SSL证书

    参考我的另外一篇文章https://blog.csdn.net/aimashi620/article/details/83056927

    服务链接Mysql

    直接在服务器上用账号密码能够登录mysql,服务的mysql配置也没问题,但是访问就是报错。这里就需要注意一个问题了,你在服务器上使用mysql -u root -p 输入的这个密码虽然是可以正常的登录数据库,但是你在项目里配置的jdbc连接的密码可不一定是这一个,项目里配置的那个叫做mysql的远程连接密码,可以同过set password for root@’%’=password(’ 密码 ');命令进行设置。

    在这里插入图片描述
    然后把项目里的jdbc密码改成上面用set password for root@’%’=password(’ 密码 ');命令设置的密码,然后重新部署一次,访问成功
    在这里插入图片描述

    域名备案

    如果域名还没备案是无法进行访问的。查看域名是否已经备案可以通过此连接进行查询http://icp.chinaz.com/gdsxzlg.org.cn

    在这里插入图片描述

    微信小程序想要访问外部链接的配置流程

    https://mp.weixin.qq.com/wxopen/devprofile?action=get_profile&token=1049164222&lang=zh_CN
    在这里插入图片描述
    在这里插入图片描述

    展开全文
  • 项目部署的步骤_

    千次阅读 2018-06-12 19:50:18
    项目部署 相关环境安装 1. 更新源(修改源) sudo apt-get update 2. mysql安装 apt-get install mysql-server apt-get install libmysqlclient-dev 3. redis安装 # 安装依赖 sudo apt-get update sudo ...

    项目部署

    相关环境安装

    1. 更新源(修改源)
        sudo apt-get update
    2. mysql安装
        apt-get install mysql-server
        apt-get install libmysqlclient-dev
    3. redis安装
        # 安装依赖
        sudo apt-get update
        sudo apt-get install gcc
        sudo apt-get install build-essential tcl
        # 安装redis
        sudo apt-get install redis-server
    4. 安装虚拟环境
        pip install virtualenv
        pip install virtualenvwrapper
    
    5. 配置 virtualenvwrapper
       1. 使得安装的virtualenvwrapper生效,编辑~/.bashrc文件
            export WORKON_HOME=$HOME/.virtualenvs
            export PROJECT_HOME=$HOME/workspace
            source /usr/local/bin/virtualenvwrapper.sh
        2. 使编辑后的文件生效
            source ~/.bashrc
    6. 安装依赖包
    在虚拟环境使用以下命令将当前虚拟环境中的依赖包以版本号生成至文件中
        pip freeze > requirements.txt
    进入虚拟环境 批量安装依赖包
        pip install -r requirements.txt
    在安装 Flask-MySQLdb 的时候可能会报错,可能是依赖包没有安装,执行以下命令安装依赖包
        sudo apt-get build-dep python-mysqldb

    Nginx

    sudo apt-get install nginx
    

    运行及停止

    /etc/init.d/nginx start #启动
    /etc/init.d/nginx stop  #停止

    配置文件

    编辑文件:/etc/nginx/sites-available/default
    
    
    # 如果是多台服务器的话,则在此配置,并修改 location 节点下面的 proxy_pass
    upstream flask {
            server 127.0.0.1:5000;
            server 127.0.0.1:5001;
    }
    server {
            # 监听80端口
            listen 80 default_server;
            listen [::]:80 default_server;
    
            root /var/www/html;
    
            index index.html index.htm index.nginx-debian.html;
    
            server_name _;
    
            location / {
                    # 请求转发到gunicorn服务器
                    proxy_pass http://127.0.0.1:5000;
                    # 请求转发到多个gunicorn服务器
                    # proxy_pass http://flask;
                    # 设置请求头,并将头信息传递给服务器端
                    proxy_set_header Host $host;
                    # 设置请求头,传递原始请求ip给 gunicorn 服务器
                    proxy_set_header X-Real-IP $remote_addr;
            }
    }

    MySQL安装

    sudo apt-get install mysql-server
    

    redis 安装

    sudo apt-get install redis-server
    

    Nginx卸载和安装

    采用 C 语言编写
    
    实现分流、转发、负载均衡
    
    1. 删除nginx,-purge包括配置文件

      sudo apt-get –purge remove nginx

    2. 移除全部不使用的软件包

      sudo apt-get autoremove

    3. 罗列出与nginx相关的软件并删除

      dpkg –get-selections|grep nginx

      sudo apt-get –purge remove nginx

      sudo apt-get –purge remove nginx-common

      sudo apt-get –purge remove nginx-core

    4. 查看nginx正在运行的进程,如果有就kill掉

      ps -ef |grep nginx

      sudo kill -9 XXX

    5. 全局查找与nginx相关的文件

      sudo find / -name nginx*

      sudo rm -rf file

    6. 删除列出的所有文件

      sudo rm -rf file

    7. 重装nginx

      sudo apt-get update

      sudo apt-get install nginx

    8. Nginx 的其他内容

      1. 测试nginx配置是否正确

        sudo nginx -t
        
      2. nginx 重启

        sudo service nginx restart
        

        nginx: [emerg] a duplicate default server for 0.0.0.0:80 in /etc/nginx/sites-enabled/ms.recipe_box.com.conf:2

      删除/etc/nginx/sites-available/default文件,重新启动服务即可

      Nginx 效果出现异常建议重启Nginx服务* sudo service nginx restart*

    Gunicorn 安装

    1. Gunicorn(绿色独角兽)是一个Python WSGI的HTTP服务器
    
    2. 从Ruby的独角兽(Unicorn )项目移植
    
    3. 该Gunicorn服务器与各种Web框架兼容,实现非常简单,轻量级的资源消耗
    
    4. Gunicorn直接用命令启动,不需要编写配置文件
    

    安装

    1. 安装

      pip install gunicorn

    2. 查看选项

      gunicorn -h

    3. 运行

    # -w: 表示进程(worker) -b:表示绑定ip地址和端口号(bind)
    gunicorn -w 2 -b 127.0.0.1:5000 运行文件名称:Flask程序实例名

    pip升级

    安装 sudo apt-get install python3-pip

    升级 sudo pip3 install –upgrade pip

    卸载 sudo apt-get remove python3-pip

    附加内容

    腾讯云(ubuntu16.04)不能升级pip 的解决方法
    1. 尝试更新源

    sudo apt-get update
    
    1. 修改源
      sudo vim /etc/apt/sources.list

      deb http://mirrors.aliyun.com/ubuntu/ trusty-security main restricted universe multiverse # disabled on upgrade to xenial

      deb http://mirrors.aliyun.com/ubuntu/ trusty-updates main restricted universe multiverse # disabled on upgrade to xenial

      deb http://mirrors.aliyun.com/ubuntu/ xenial-proposed main restricted universe multiverse #Not for humans during development stage of release xenial

      deb http://mirrors.aliyun.com/ubuntu/ trusty-backports main restricted universe multiverse # disabled on upgrade to xenial

      deb-src http://mirrors.aliyun.com/ubuntu/ xenial main restricted universe multiverse # disabled on upgrade to xenial

      deb-src http://mirrors.aliyun.com/ubuntu/ trusty-security main restricted universe multiverse # disabled on upgrade to xenial

      deb-src http://mirrors.aliyun.com/ubuntu/ trusty-updates main restricted universe multiverse # disabled on upgrade to xenial
      deb-src http://mirrors.aliyun.com/ubuntu/ xenial-proposed main restricted universe multiverse #Not for humans during development stage of release xenial

      deb-src http://mirrors.aliyun.com/ubuntu/ trusty-backports main restricted universe multiverse # disabled on upgrade to xenial

    然后执行

    1. 更新源 sudo apt-get update

    2. 更新系统 sudo apt-get upgrade

    展开全文
  • 一般来说,我们在本地写好一个项目之后,要让别人能够访问到我们的项目是通过Linux部署到远程服务器上或者通过比较简单的宝塔一键部署,这两者的本质都是需要部署到远程服务器上才能让被人访问到我们的本地项目。...
  • 部署服务器

    万次阅读 多人点赞 2018-11-27 17:19:30
    早些日子想着搭建自己的一台服务器,奈何各方面的因素使之悬而未决,今有幸有机会动手操作一番,想着将其记录下来,方便暴露出问题,还望各路大神多多指点 一,购买服务器 ...   1,本次只是一次练手并不做后期...
  • 前端工程化之部署

    千次阅读 2018-10-04 13:11:49
    部署简单来说就是将构建产出的代码部署到服务器上,在开发中我们通常的操作就是使用ftp将代码上传到服务器上固定目录下即可,所以这项工作在很多开发看起来是简单而又无聊的工作,这种部署方式从本质上来说没毛病,...
  • 系统部署

    千次阅读 2019-01-03 11:20:37
    登录地址:ssh XXX@120.76.203.23 密码:老密码 1、停服务器 2、删除服务器(/var/www/apache-tomcat-7.0.70/webapps)下war包与对应解压文件 3、上传文件至服务器(scp /home/wangkang/桌面/tms.war XXX@XX...4、...
  • 几种部署方式整理

    千次阅读 2019-06-16 10:40:47
    2019独角兽企业重金招聘Python工程师标准>>> ...
  • jenkins之搭建部署

    万次阅读 2020-02-27 12:10:20
    25.1 CI/CD介绍 互联网软件的开发和发布,已经形成了一套标准流程,假如把开发工作流程...正如你在上图中看到,[持续集成(Continuous Integration)]、[持续交付(Continuous Delivery)]和[持续部署(Continuous Depl...
  • web项目如何部署到服务器?

    万次阅读 2018-11-20 11:32:12
    写好上位机程序后,如何部署到服务器? (这里我用的是tomcat服务器) 首先说明一点:为了程序测试是否连接到下位机,我编写了一个命名为gprs的java文件,这个可以用下位机连接是否成功。程序见附录,下面说具体的...
  • SpringBoot 项目部署到服务器上(Jar包)

    万次阅读 多人点赞 2019-05-16 14:57:34
    1. 部署方式 Springboot 和普通web 应用程序不一样,其本质上是一个 Java 应用程序,那么又如何部署呢? 通常来说,Springboot 部署会采用两种方式:全部打包成一个jar,或者打包成一个war。现在讲一下打包成 jar ...
  • Docker是一个开源的引擎,可以轻松的为任何应用创建一个轻量级的、可移植的...开发者在笔记本上编译测试通过的容器可以批量地在生产环境中部署,包括VMs(虚拟机)、bare metal、OpenStack 集群和其他的基础应用平台。
  • 项目部署 - Linux( springboot + vue + nginx)

    万次阅读 多人点赞 2020-03-11 10:35:14
    一、后台项目(Springboot) 1.项目打成jar包 在项目target目录里会有打包的jar 2.启动后台运行jar 注意: 若无nohup 命令 yum install coreutils nohup java -jar 你的jar包名称.jar & ...
  • spring boot2 打成jar包并发布到Linux服务器(包含发布和取消发布) 关于打包方式各种方式都可以,具体方式包括idea自带的maven插件打包,或者命令打包,或者其他工具比如eclipse打包,这里默认你已经打包ok了,这里也是...
  • Jenkins+Maven+SVN自动化部署java项目

    万次阅读 2019-10-26 09:26:55
    安装Jenkins 提示:首先Jenkins安装方式有2中,一种是yum安装,另一种是使用war的方式进行安装(war就需要安装tomcat) ... 如果我们想使用war包的方式可以直接下载war包 Jenkins访问地址:localhost:8080/jenkins...
  • 写在最前面 本文仅包含ELK7.3.0部署部署环境: 系统 CentOS 7 Docker Docker version 19.03.5 CPU 2核 内存 2.5G 磁盘 20G ELK部署
  • Idea配置热部署

    万次阅读 多人点赞 2019-08-17 16:30:21
    Idea配置热部署 一、概念 热部署就是正在运行状态的应用,修改了他的源码之后,在不重新启动的情况下能够自动把增量内容编译并部署到服务器上,使得修改立即生效。热部署为了解决的问题有两个, 一是在开发的时候...
  • springboot实现热部署

    万次阅读 多人点赞 2019-08-09 14:01:01
    文章目录前言原理方式开始配置在pom.xml中添加依赖devtools的配置IDEA中配置测试参考资料&...在 Java 开发领域,热部署一直是一个难以解决的问题,目前的 Java 虚拟机只能实现方法体的修改热部署,...
  • 前端部署项目

    万次阅读 2020-07-25 23:17:12
    首先测试上线: 在项目的dev分支上 $npm run build 在项目dev分支全局安装http-sever $npm i http-server -g ...如果发现这里启动不了,就去项目里找到config目录下的index.js文件,将host配置为0.0.0.0...
1 2 3 4 5 ... 20
收藏数 1,608,518
精华内容 643,407
关键字:

部署