• 码神之路项目部署(五)


    这一章主要是讲解一下怎么部署上线项目

    一、上线准备

    腾讯云服务器一台(2核2g)、域名一个 (可有可无)

    说明:当然了服务器的配置根据项目来选择,2核2g跑这个博客小项目是完全没有问题的

    二、服务器安装环境

    用yum 去安装

    比如要安装java ,百度搜 yum -y install java

    比如要安装数据库,百度搜 yum如何安装mysql 5.7

    好吧我承认当初安装时看的教程文章随手搜的,网址没保存,后期我找了好的教程会补充上地址

    三、域名备案

    四、部署后端

    1、安装docker

    1. # 1、yum 包更新到最新
    2. yum update
    3. # 2、安装需要的软件包, yum-util 提供yum-config-manager功能,另外两个是devicemapper驱动依赖的
    4. yum install -y yum-utils device-mapper-persistent-data lvm2
    5. # 3、 设置yum源
    6. yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
    7. # 4、 安装docker,出现输入的界面都按 y
    8. yum install -y docker-ce
    9. # 5、 查看docker版本,验证是否验证成功
    10. docker -v
    11. #启动docker
    12. /bin/systemctl start docker.service

    2、拉取镜像

    1. docker pull nginx
    2. docker pull redis:5.0.3
    3. docker pull java:8
    4. docker pull mysql:5.7

    3、mysql配置

    创建容器,设置端口映射、目录映射

    1. mkdir /mnt/docker/mysql
    2. cd /mnt/docker/mysql
    1. docker run -id \
    2. -p 3307:3306 \
    3. --name=c_mysql \
    4. -v /mnt/docker/mysql/conf:/etc/mysql/conf.d \
    5. -v /mnt/docker/mysql/logs:/logs \
    6. -v /mnt/docker/mysql/data:/var/lib/mysql \
    7. -e MYSQL_ROOT_PASSWORD=123456 \
    8. mysql:5.7

    在/mnt/docker/mysql/conf 创建my.cnf

    1. [mysqld]
    2. #
    3. # Remove leading # and set to the amount of RAM for the most important data
    4. # cache in MySQL. Start at 70% of total RAM for dedicated server, else 10%.
    5. # innodb_buffer_pool_size = 128M
    6. #
    7. # Remove leading # to turn on a very important data integrity option: logging
    8. # changes to the binary log between backups.
    9. # log_bin
    10. #
    11. # Remove leading # to set options mainly useful for reporting servers.
    12. # The server defaults are faster for transactions and fast SELECTs.
    13. # Adjust sizes as needed, experiment to find the optimal values.
    14. # join_buffer_size = 128M
    15. # sort_buffer_size = 2M
    16. # read_rnd_buffer_size = 2M
    17. datadir=/var/lib/mysql
    18. socket=/var/lib/mysql/mysql.sock
    19. character-set-server=utf8
    20. # Disabling symbolic-links is recommended to prevent assorted security risks
    21. symbolic-links=0
    22. lower_case_table_names=1
    23. pid-file=/var/run/mysqld/mysqld.pid
    24. sql_mode=STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION

    注意:这里端口用宿主机的3306,数据库也用宿主机的,也就是你服务器的ip和端口,因为我用docker的那个ip和端口数据页面数据显示不出来

    1. #去查看mysql对应的docker容器ip地址,配置到项目
    2. docker inspect c_mysql

    4、redis

    docker run -id --name=redis -p 6379:6379 redis:5.0.3

    5、定义dockerfile,发布springboot项目

    将spring boot项目打包,上传到以下目录,并将jar包重命名为blog_api.jar

    切换到/mnt/docker/app目录

    vim blog_dockerfile

    1. FROM java:8
    2. MAINTAINER mszlu <test@mszlu.com>
    3. ADD ./blog_api.jar /app.jar
    4. CMD java -jar /app.jar --spring.profiles.active=prod

    在本目录下构建执行命令

    docker build -f ./blog_dockerfile -t app .

    6、安装Docker Compose

    1. # Compose目前已经完全支持Linux、Mac OS和Windows,在我们安装Compose之前,需要先安装Docker。下面我 们以编译好的二进制包方式安装在Linux系统中。
    2. curl -L https://github.com/docker/compose/releases/download/1.22.0/docker-compose-`uname -s`-`uname -m` -o /usr/local/bin/docker-compose
    3. # 设置文件可执行权限
    4. chmod +x /usr/local/bin/docker-compose
    5. # 查看版本信息
    6. docker-compose -version

    7、创建docker-compose目录

    1. mkdir /mnt/docker/docker-compose
    2. cd /mnt/docker/docker-compose

    8、编写 docker-compose.yml 文件

    1. version: '3'
    2. services:
    3. nginx:
    4. image: nginx
    5. container_name: nginx
    6. ports:
    7. - 80:80
    8. - 443:443
    9. links:
    10. - app
    11. depends_on:
    12. - app
    13. volumes:
    14. - /mnt/docker/docker-compose/nginx/:/etc/nginx/
    15. - /mnt/mszlu/blog:/mszlu/blog
    16. network_mode: "bridge"
    17. app:
    18. image: app
    19. container_name: app
    20. expose:
    21. - "8888"
    22. network_mode: "bridge"

    9、创建./nginx目录

    mkdir -p ./nginx

    10、在./nginx目录下 编写nginx.conf文件

    1. user nginx;
    2. worker_processes 1;
    3. error_log /var/log/nginx/error.log warn;
    4. pid /var/run/nginx.pid;
    5. events {
    6. worker_connections 1024;
    7. }
    8. http {
    9. include /etc/nginx/mime.types;
    10. default_type application/octet-stream;
    11. log_format main '$remote_addr - $remote_user [$time_local] "$request" '
    12. '$status $body_bytes_sent "$http_referer" '
    13. '"$http_user_agent" "$http_x_forwarded_for"';
    14. access_log /var/log/nginx/access.log main;
    15. sendfile on;
    16. #tcp_nopush on;
    17. keepalive_timeout 65;
    18. #gzip on;
    19. include /etc/nginx/conf.d/*.conf;
    20. }

    11、在nginx下创建conf.d目录,conf.d下创建blog.conf

    无域名情况下:

    1. gzip_min_length 1k;
    2. gzip_buffers 4 16k;
    3. gzip_comp_level 2;
    4. gzip_vary off;
    5. upstream appstream{
    6. server app:8888;
    7. }
    8. server{
    9. listen 80;
    10. server_name localhost;
    11. location /api {
    12. proxy_pass http://appstream;
    13. }
    14. location / {
    15. root /mszlu/blog/;
    16. index index.html;
    17. }
    18. location ~* \.(jpg|jpeg|gif|png|swf|rar|zip|css|js|map|svg|woff|ttf|txt)$ {
    19. root /mszlu/blog/;
    20. index index.html;
    21. add_header Access-Control-Allow-Origin *;
    22. }
    23. }

    有域名情况下:

    1. gzip_min_length 1k;
    2. gzip_buffers 4 16k;
    3. gzip_comp_level 2;
    4. gzip_vary off;
    5. upstream appstream{
    6. server app:8888;
    7. }
    8. server{
    9. listen 80;
    10. server_name blog.lcheng.fun;
    11. location /api {
    12. proxy_pass http://appstream;
    13. }
    14. location / {
    15. root /mszlu/blog/;
    16. index index.html;
    17. }
    18. location ~* \.(jpg|jpeg|gif|png|swf|rar|zip|css|js|map|svg|woff|ttf|txt)$ {
    19. root /mszlu/blog/;
    20. index index.html;
    21. add_header Access-Control-Allow-Origin *;
    22. }
    23. }

    部署前端

    1、项目打包,运行npm run build

     2、打完包后会出现一个dist文件夹,里面有static和index.html,dist.zip自己压缩软件压缩即可

     3、连上我们的服务器

     4、切换到/mnt/mszlu/blog目录

     5、打开xftp把打包的前端文件上传到服务器现在的目录

     6、查看是否上传成功

    启动容器

    切换到/mnt/docker/docker-compose目录下,使用docker-compose 启动容器

    1. docker-compose up
    2. docker-compose up -d #代表后台启动

    测试访问

    沐神小站 Find Yourself

  • 相关阅读:
    技术干货|昇思MindSpore Lite1.5 特性发布,带来全新端侧AI体验
    多御安全浏览器使用技巧,剖析7大优点特性
    Arya科普 | 程序员常用英语 & Java常用名词解释 & 计算机常用英语汇总
    Unity(第二十四部)UI
    数据分析师入门: 数据分析可视化入门知识点
    1076 Wifi密码
    【C++】类的封装 ① ( 类和对象 | 面向对象三大特征 - 封装 继承 多态 | 类的封装引入 )
    JavaScript(六):事件捕获与冒泡
    day03-2无异常退出
    java版工程管理系统Spring Cloud+Spring Boot+Mybatis实现工程管理系统源码
  • 原文地址:https://blog.csdn.net/weixin_51930617/article/details/127884691