centos 环境部署

一、安装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/localwget http://download.redis.io/releases/redis-6.0.0.tar.gztar -xzvf redis-6.0.0.tar.gzcd redis-6.0.0make & make install PREFIX=/usr/local/rediscp /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-reloadsystemctl start redis.servicesystemctl 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=httpsudo firewall-cmd --permanent --zone=public --add-service=httpssudo 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.rhkb.cn/news/280411.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

软件的安装与卸载(YUM)

YUM:yum 是一个方便的"应用商店",你可以通过它轻松地安装、更新和删除软件包,就像从应用商店中下载和安装应用程序一样。(这个得用root身份,普通用户权限不够) 常用命令: 1.安装软件…

【论文阅读】DiffSpeaker: Speech-Driven 3D Facial Animation with Diffusion Transformer

DiffSpeaker: 使用扩散Transformer进行语音驱动的3D面部动画 code:GitHub - theEricMa/DiffSpeaker: This is the official repository for DiffSpeaker: Speech-Driven 3D Facial Animation with Diffusion Transformer paper:https://arxiv.org/pdf/…

企业如何选择一个开源「好」项目?

开源 三句半 oss-roast 需求明确是关键 风险考量要周全 开源虽好不白捡 别忘合规! 显然,开源已成为一股不可阻挡的洪流,企业拥抱开源,积极参与开源项目不仅是响应技术潮流的必然选择,更是实现自身技术创新、市场拓展等…

Golang 异步(bsd/linux)io

Golang 异步(bsd/linux)io 在日常开发中,读写文件的底层调用函数是syscall.Read/Write。一切都是围绕这两个函数展开的,不过有时候需要或者就是单纯想异步执行。liburing是linux上一个很好的原生异步io库,这里需要适配bsd派系的系统&#xf…

自动化的免下车服务——银行、餐厅、快餐店、杂货店

如果您在20世纪70年代和2020年分别驾车经过免下车服务餐厅(汽车穿梭餐厅),您会发现,唯一的不同是排队的车型。50多年来,免下车技术一直为我们提供着良好的服务,但现在也该对它进行现代化改造了。 乘着AI和自…

IOS/Android App备案(uniapp)

IOS/App备案 IOS备案Android备案 IOS备案 准备好p12证书即可 链接: https://aitoolnav.caichuangkeji.com/#/AppMd5 Android备案 上DCLOUD开发者中心,找到相关应用后,直接查看证书即可获取到MD5 公钥:先根据上述页面下载证书,…

ping 通ip,ping 不通域名

在linux 系统中,ping 通ip,ping 不通对应的域名时,可直接修改系统配置文件 vi /etc/hosts 加入 ip 域名

程序员们的“薪饭碗”:学会鸿蒙开发以后有哪些就业方向?

近期,鸿蒙相关内容一直是IT行业热聊话题。先是徐大嘴宣布鸿蒙 Next版本不在兼容Android,然后就是各大互联网公司纷纷加入到鸿蒙原生开发的队列,再然后网传出鸿蒙开发岗位薪资与需求了突增,超出了一些传统开发岗位的需求与薪资水平…

uni-app 中两个系统各自显示不同的tabBar

最近在一个uni-app项目中遇到一个需求,在登录页面成功登录以后需要判断身份,不同的身份的进入不同的tabBar页面,但是在uni-app项目中pages.json中的tabBar的list数组只有一个,且不能写成动态的,那如何实现这个需求呢?答案是需要我们自定义tabBar。 目录 1、我们确…

postman 用上一个请求的响应体中的字段设置下一个请求的请求参数

文章目录 IntroPostman usagePre-request ScriptTests javascripts API Intro 这一切都是为了增加自动化动作所占的比例(减少人手工操作复制粘贴可能会造成的错误)。 Postman usage 最常用的:选HTTP方法类型、写URL,在Headers中…

爬虫系列-CSS基础语法

🌈个人主页:会编程的果子君 💫个人格言:“成为自己未来的主人~” CSS全称层叠样式表 ,主要用来定义页面内容展示效果的一门语言,HTML:页面骨架,素颜CSS:页面效果美化&#xff1a…

ubuntu10.04 apache2.2开启tls1.2的支持,使现代的edge和firefox浏览器能正常访问https

最近发现自己ubuntu10.04服务器上的apache https无法通过win11上的edge和firefox浏览器访问,但xp下的ie6和ie8没有问题。 firefox的错误提示为“此网站可能不支持TLS 1.2协议,而这是Firefox支持的最低版本”。 经过检查发现: IE6访问https所需的版本是SS…

RabbitMQ--03--SpringAMQP(SpringBoot集成RabbitMQ)

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 SpringAMQP1.SpringBoot 的支持https://spring.io/projects/spring-amqp 2.RabbitTemplate3.RabbitListener(终极监听方案)4.RabbitConfig--…

【鸿蒙HarmonyOS开发笔记】通知模块之为通知添加行为意图

概述 WantAgent提供了封装行为意图的能力,这里所说的行为意图主要是指拉起指定的应用组件及发布公共事件等能力。HarmonyOS支持以通知的形式,将WantAgent从发布方传递至接收方,从而在接收方触发WantAgent中指定的意图。例如,在通…

处理器方法的返回值--返回对象Object

处理器方法也可以返回Object对象。这个Object可以是Integer,String,自定义对象, Map,List 等。但返回的对象不是作为逻辑视图出现的,而是作为直接在页面显示的数据出现的。 返回对象,需要使用ResponseBody注…

Aspose.PDF功能演示:在 JavaScript 中优化 PDF 文件

PDF 文件是一种普遍存在的文档共享格式,但它们有时可能会很大,导致加载时间变慢并增加存储要求。优化 PDF 文件对于确保无缝的用户体验至关重要,尤其是在 Web 应用程序中。因此,在这篇博文中,我们将探讨如何使用 JavaS…

Java二阶知识点总结(七)SVN和Git

SVN 1、SVN和Git的区别 SVN是集中式的,也就是会有一个服务器保存所有代码,拉取代码的时候只能从这个服务器上拉取;Git是分布式的,也就是说每个人都保存有所有代码,如果要获取代码,可以从其他人手上获取SV…

改进粒子群优化算法||粒子群算法变体||Improved particle swarm optimization algorithm

粒子群算法(Particle Swarm Optimization,PSO)是一种基于群体智能的优化算法,其思想来源于鸟群寻食和鱼群捕食等自然现象。PSO算法通过模拟群体智能的行为,以一种启发式的方式寻找最优解,因此具有全局搜索能…

【python】2.pycharm中请选择有效的python解释器

欢迎来CILMY23的博客喔,本篇为【python】2.pycharm中请选择有效的python解释器,感谢观看,支持的可以给个一键三连,点赞关注收藏。 前言 在上一篇博客中,我们已经在电脑上安装了python3.12.2和pycharm,本期…

C数据类型(C语言)---变量的类型决定了什么?

目录 数据类型(Data Type) 变量的类型决定了什么? (1)不同类型数据占用的内存大小不同 如何计算变量或类型占内存的大小 (2)不同数据类型的表数范围不同 (3)不同类型…