centos 环境部署

news2024/11/17 13:38:26

一、安装redis

1. 升级 GCC

最直接的解决方式是升级你的 GCC 编译器到支持 C11 标准的版本。CentOS 7 默认的 GCC 版本较旧,可能不支持 _Atomic。你可以通过以下步骤升级 GCC:

  1. 启用 CentOS 的 Software Collections (SCL) 仓库,该仓库提供了更新的软件版本:

    sudo yum install centos-release-scl
  2. 安装更新的 GCC 版本。例如,安装 GCC 8(请根据可用性检查是否有更新版本):

    sudo yum install devtoolset-8-gcc devtoolset-8-gcc-c++
  3. 启用新版本的 GCC:

    scl enable devtoolset-8 bash

     4. 下载并安装redis

cd /usr/local

wget http://download.redis.io/releases/redis-6.0.0.tar.gz

tar -xzvf redis-6.0.0.tar.gz

cd redis-6.0.0

make & make install PREFIX=/usr/local/redis

cp /usr/local/redis-6.0.0/redis.conf /usr/local/redis/

     5. 修改redis守护配置

nano /usr/local/redis/redis.conf
  将daemonize no 改成 daemonize yes

      6. 设置开机自动启动

nano /etc/systemd/system/redis.service

填写内容 

[Unit]
Description=redis-server
After=network.target

[Service]
Type=forking
ExecStart=/usr/local/redis/bin/redis-server /usr/local/redis/redis.conf
PrivateTmp=true

[Install]
WantedBy=multi-user.target

启动服务

systemctl daemon-reload

systemctl start redis.service

systemctl enable redis.service

 创建 redis 命令软链接

ln -s /usr/local/redis/bin/redis-cli /usr/bin/redis

测试 redis

二、安装java

  1. sudo yum update
  2. 安装OpenJDK:

    sudo yum install java-1.8.0-openjdk
  3. 确认安装并检查Java版本:

    java -version

三、安装nginx

在CentOS 7上安装Nginx可以通过EPEL仓库来进行。以下是安装Nginx的步骤:

首先,添加EPEL仓库:

sudo yum install epel-release

接着,安装Nginx:

sudo yum install nginx

启动Nginx服务:

sudo systemctl start nginx

设置Nginx开机自启:

sudo systemctl enable nginx

可以通过运行以下命令来检查Nginx的安装状态:

systemctl status nginx

如果你的系统有防火墙(如firewalld),你需要允许HTTP和HTTPS的流量:

sudo firewall-cmd --permanent --zone=public --add-service=http

sudo firewall-cmd --permanent --zone=public --add-service=https

sudo firewall-cmd --reload

配置nginx

删除/etc/nginx/nginx.conf中的server部分代码。

server {
...
}

/etc/nginx/conf.d 创建自定义配置文件default.conf

server {
    listen 80;
    listen 443 ssl;
    server_name www.nsyx.net;
    location / {
         root /usr/share/nginx/html;
         index  index.html index.htm;
     }

    ssl on;
    ssl_certificate /etc/nginx/ssl/www.nsyx.net.pem;
    ssl_certificate_key /etc/nginx/ssl/nxys.key;
    ssl_session_timeout  5m;
    ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
    ssl_ciphers ECDHE-RSA-AES128-GCM-            
    SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4:!DH:!DHE;
    ssl_prefer_server_ciphers  on;

    error_page 497  https://$host$uri?$args;
}

反向代理docker的后端服务:

server {
    listen 443 ssl; # 启用SSL,并监听443端口
    server_name your-domain.com; # 你的域名

    ssl_certificate /etc/nginx/ssl/your-domain.com.pem; # 证书文件路径
    ssl_certificate_key /etc/nginx/ssl/your-domain.com.key; # 私钥文件路径

    ssl_protocols TLSv1.2 TLSv1.3; # 推荐使用的TLS版本
    ssl_ciphers HIGH:!aNULL:!MD5; # 推荐的加密套件配置

    location / {
        proxy_pass http://localhost:8080; # Docker服务地址
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;
    }
}

# 可选:重定向HTTP到HTTPS
server {
    listen 80;
    server_name your-domain.com;
    return 301 https://$host$request_uri;
}

其中:
root /usr/share/nginx/html; 表示网站文件目录,后面的分号不可省略。

ssl_certificate和ssl_certificate_key 指向https证书。

error_page 497  https://$host$uri?$args; 这句的作用是,强制http跳转到https。

更新nginx配置:

nginx -s reload

四、配置python环境(for docker)

步骤 1: 安装 Docker

  1. 首先,安装所需的包:

    sudo yum install -y yum-utils device-mapper-persistent-data lvm2
  2. 添加 Docker 的官方仓库:

    sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
  3. 安装 Docker CE(社区版):

    sudo yum install -y docker-ce docker-ce-cli containerd.io
  4. 启动 Docker 服务并设置开机自启:

    sudo systemctl start docker sudo systemctl enable docker

步骤 2: 创建 Dockerfile

  1. 创建一个新目录作为项目的根目录,并进入该目录:

    mkdir my_python_project cd my_python_project
  2. 在这个目录中,创建一个名为 Dockerfile 的文件。这个文件定义了 Docker 容器的构建过程:

    # 使用 Python 10 官方镜像作为基础镜像 
    FROM python:3.10 
    
    # 设置工作目录 
    WORKDIR /usr/src/app 
    
    # 将当前目录下的所有文件复制到容器中 (将要打包的文件放到和dockerfile相同路径下)
    COPY . . 
    
    # 安装项目依赖 国内使用清华镜像
    RUN pip install --no-cache-dir -r requirements.txt -i https://pypi.tuna.tsinghua.edu.cn/simple
    
    # 暴露端口 
    EXPOSE 8000 
    
    # 设置环境变量
    ENV MY_VARIABLE_NAME=my_value \
        ANOTHER_VARIABLE_NAME=another_value
    
    # 定义容器启动时执行的命令 
    CMD ["python", "./your_script.py"]

    这个 Dockerfile 做了以下几件事:

    • 从 Python 10 的官方镜像开始构建。
    • 设置容器内的工作目录。
    • 将当前目录(项目目录)中的文件复制到容器中。
    • 安装项目依赖(假设你有一个 requirements.txt 文件列出了所有依赖)。
    • 指定容器运行时监听的端口(根据你的应用需求调整)。
    • 设置需要的环境变量。
    • 设置默认的容器启动命令。
  3. 创建 requirements.txt 文件,并列出你项目的所有 Python 依赖。国内使用清华镜像加速下载。

步骤 3: 构建 Docker 镜像

Dockerfile 所在的目录执行以下命令来构建 Docker 镜像:

docker build -t my_python_project .

步骤 4: 运行 Docker 容器

构建完成后,使用以下命令运行你的 Python 应用:

docker run --name your_image_name -d -p 8000:8000 my_python_project

这里 -d 参数表示在后台运行,-p 8000:8000 表示将容器的 8000 端口映射到宿主机的 8000 端口,my_python_project 是你的镜像名。

至此,你的 Python 应用应该已经在 Docker 容器中运行了。你可以通过访问宿主机的端口来访问应用(根据实际情况调整端口号)。

要查看 Docker 容器的运行状态,你可以使用 Docker CLI 提供的几个有用的命令。以下是一些基本命令和它们的用途:

1. 查看正在运行的容器

docker ps

这个命令会列出所有当前正在运行的容器。它显示的信息包括容器ID、创建时间、使用的镜像、启动命令、状态、端口等。

2. 查看所有容器(包括未运行的)

docker ps -a

使用 -a--all 选项可以显示所有容器,无论它们的状态是正在运行还是已停止。

3. 查看特定容器的日志

如果你想要查看某个容器的输出(相当于容器内部运行的应用的 stdout/stderr),可以使用:

docker logs [容器ID或名称]

替换 [容器ID或名称] 为你的容器的实际 ID 或名称。

4. 检查容器的详细信息

要获取容器的更多详细信息(如网络设置、挂载卷、状态等),可以使用:

docker inspect [容器ID或名称]

这个命令返回 JSON 格式的数据,包含了容器的配置和状态信息。

5. 查看容器的运行进程

如果你想看到在容器内部运行的进程,可以使用:

docker top [容器ID或名称]

这会显示容器内的进程列表,类似于在宿主机上运行 top 命令。

查看 Docker 服务状态

如果你想要检查 Docker 服务本身的运行状态(而不是容器的状态),并且你的系统使用 systemd 管理服务,你可以使用:

sudo systemctl status docker

这会显示 Docker 服务的状态,包括它是否正在运行、启动日志、以及其他系统级信息。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1548461.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

学习使用xbox手柄控制小乌龟节点移动

使用xbox手柄控制小乌龟,首先要下载joy功能包,发布sensor_msgs话题也就是手柄和ros通信的话题。 下载的步骤就根据官方文档即可 joy/Tutorials/ConfiguringALinuxJoystick - ROS Wiki 这里我提供一下具体步骤 第一步 安装joy 首先安装对应系统版本的…

Oracle VM(虚拟机)性能监控工具

Oracle VM是一个独立的虚拟化环境,由 Oracle 提供支持和设计,旨在为运行虚拟机提供轻量级、安全的基于服务器的平台。Oracle VM 能够在受支持的虚拟化环境中部署操作系统和应用软件,Oracle VM 将用户和管理员与底层虚拟化技术隔离开来&#x…

Java Web-Tomcat

Web服务器 Web服务器是一个软件程序,对HTTP协议的操作进行封装,使得程序员不必直接对协议进行操作,让Web开发更加便捷。主要功能是“提供网上信息浏览服务”。 Tomcat,是一个 HTTP 服务器。我们只需要在服务器中安装一个Web服务器如Tomcat,然后就可以将…

vue项目使用eletron将打包成桌面应用(.exe)

vue项目使用eletron将打包成桌面应用(.exe) 1.前期准备 两个项目: 1、自己用vue cli创建的项目 2、第二个是去gitee将案例clone下来 案例地址 https://gitee.com/qingplus/electron-quick-start.git 2、测试案例是否可以正常运行 # 进入项目 cd electron-quick-…

考研数学|《1800》《1000》《880》《660》最佳搭配使用方法

直接说结论:基础不好先做1800、强化之前660,强化可选880/1000题。 首先,传统习题册存在的一个问题是题量较大,但难度波动较大。《汤家凤1800》和《张宇1000》题量庞大,但有些题目难度不够平衡,有些过于简单…

TinyEMU源码分析之启动流程

TinyEMU源码分析之启动流程 1 始于0x10002 确定BBL入口点3 mentry.S执行过程4 启动流程小结 本文属于《 TinyEMU模拟器基础系列教程》之一,欢迎查看其它文章。 本文中使用的代码,均为伪代码,删除了部分源码。 1 始于0x1000 我们沿着TinyEMU…

夜晚水闸3D可视化:科技魔法点亮水利新纪元

在宁静的夜晚,当城市的霓虹灯逐渐暗淡,你是否曾想过,那些默默守护着城市安全的水闸,在科技的魔力下,正焕发出别样的光彩?今天,就让我们一起走进夜晚水闸3D模型,感受科技为水利带来的…

AI足球教练上岗利物浦,射门机会提高13%!来自DeepMind,网友:这不公平

梦晨 发自 凹非寺 量子位 | 公众号 QbitAI AI足球教练登上Nature子刊,谷歌DeepMind与利物浦队合作三年打造: 如同AlphaGo颠覆围棋一样,改变了球队制定战术的方式。 像是进攻方把球传给谁更容易创造射门机会,防守方如何调整布阵……

【双指针】Leetcode 四数之和

题目解析 18. 四数之和 这道题的思路和三数之和的思路相同,都是固定一个数,然后在剩下的区间中寻找和为目标值的元组,其次最重要的是要进行去重 算法讲解 1. 完成排序 2. 固定一个数,求剩下区间中三元组的和等于 target - nums[…

用易查分制作承诺书签订,在线手写签名,一键导出打印

假期将至,为积极落实安全管理规定,单位通常需要下发安全承诺书进行签字确认。 易查分可以实现网上下发安全承诺书通知,让查询者进行签名确认,还可以生成PDF,方便打印一人一张的纸质版承诺书,本次就来介绍如…

flask各种版本的项目,终端命令运行方式的实现

目录 写在前面 一、Flask项目的基本结构 二、使用终端命令运行Flask项目 1. 安装Flask 2. 创建Flask应用 3. 配置FLASK_APP环境变量 4. 运行Flask应用 5. 访问Flask应用 三、Flask CLI的其他功能 1. 创建Flask应用 2. 运行开发服务器 3. 清理缓存文件 4. 运行单元…

补题集合2

VJ 409组队赛2 C - Find a Number 没想到这是一个签到题,因为数据量小,状态并不多,所以可以使用 b f s bfs bfs 去跑每一个状态。令 m o d mod mod 是余数, s u m sum sum 是累加和,那么状态最多就只有 500 ∗ 5…

微信小程序的页面交互1

一、page()函数 每个页面的s代码全部写入对应的js文件的page()函数里面。点击编译,就可以显示js代码的运行效果。注意,每个页面的page()函数是唯一的。 page(&#xff…

Oracle参数文件详解

1、参数文件的作用 参数文件用于存放实例所需要的初始化参数,因为多数初始化参数都具有默认值,所以参数文件实际存放了非默认的初始化参数。 2、参数文件类型 1)服务端参数文件,又称为 spfile 二进制的文件,命名规则…

【CSDN活动】程序员职业生涯的分水岭:年龄还是经验?

🌈个人主页: 鑫宝Code 🔥热门专栏: 闲话杂谈| 炫酷HTML | JavaScript基础 ​💫个人格言: "如无必要,勿增实体" 文章目录 程序员职业生涯的分水岭:年龄还是经验?引言技术更新换代…

Vue3中使用paper.js

目录 Paper.js的使用安装Paper引入Paper.js创建画布实例化Paper、Project以及Tool画圆画点和线画矩形导入图片画文字Item组曲线监听键盘事件监听鼠标事件设置动画下载成图片完整代码 Paper.js的使用 安装Paper npm install paper引入Paper.js import * as Paper from "p…

arduino 2.0以上版本上传项目data目录内文件到ESP8266闪存中

开发测试环境: arduino IDE : 2.3.2 开发板 ESP8266 系统:WINDOWS 10 截止目前,arduino版本为2.3.2,在开发项目的时候,发现一个问题,就是项目目录中data内的文件没有办法和主文件.ino一同上传到ESP8266的f…

学习笔记:MYSQL数据库基础知识

MYSQL数据库基础知识学习笔记 MYSQL基础学习数据库相关概念现主流数据库排名数据模型SQL分类SQL数据库基础操作 2024/3/27 学习资料:黑马程序员:MYSQL MYSQL基础学习 数据库和数据库管理系统(DBMS) 数据库: 是存储数据的集合,包括表、视图、索引等对象…

面试八股文之JAVA基础

JAVA基础 DNS、CDN?如何实现对象克隆?父子类静态代码块, 非静态代码块, 构造方法执行顺序?String s new String("abc") 创建了几个对象, 分别放到哪里?OSI网络模型七层?应用层协议?http协议和https协议区别?传输层协…

STM32学习笔记(7_1)- ADC模数转换器

无人问津也好,技不如人也罢,都应静下心来,去做该做的事。 最近在学STM32,所以也开贴记录一下主要内容,省的过目即忘。视频教程为江科大(改名江协科技),网站jiangxiekeji.com 本期开…