centos 环境部署

一、安装redis

1. 升级 GCC

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

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

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

    bash 复制代码
    sudo yum install devtoolset-8-gcc devtoolset-8-gcc-c++
  3. 启用新版本的 GCC:

    bash 复制代码
    scl enable devtoolset-8 bash
  4. 下载并安装redis

bash 复制代码
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/
  1. 修改redis守护配置
bash 复制代码
nano /usr/local/redis/redis.conf
将daemonize no 改成 daemonize yes
  1. 设置开机自动启动
bash 复制代码
nano /etc/systemd/system/redis.service

填写内容

bash 复制代码
[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

启动服务

bash 复制代码
systemctl daemon-reload

systemctl start redis.service

systemctl enable redis.service

创建 redis 命令软链接

bash 复制代码
ln -s /usr/local/redis/bin/redis-cli /usr/bin/redis

测试 redis

二、安装java

bash 复制代码
sudo yum update
  1. 安装OpenJDK:

    bash 复制代码
    sudo yum install java-1.8.0-openjdk
  2. 确认安装并检查Java版本:

    bash 复制代码
    java -version

三、安装nginx

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

首先,添加EPEL仓库:

bash 复制代码
sudo yum install epel-release

接着,安装Nginx:

bash 复制代码
sudo yum install nginx

启动Nginx服务:

bash 复制代码
sudo systemctl start nginx

设置Nginx开机自启:

bash 复制代码
sudo systemctl enable nginx

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

bash 复制代码
systemctl status nginx

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

bash 复制代码
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

bash 复制代码
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的后端服务:

bash 复制代码
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配置:

bash 复制代码
nginx -s reload

四、配置python环境(for docker)

步骤 1: 安装 Docker

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

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

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

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

    bash 复制代码
    sudo systemctl start docker sudo systemctl enable docker

步骤 2: 创建 Dockerfile

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

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

    bash 复制代码
    # 使用 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 镜像:

bash 复制代码
docker build -t my_python_project .

步骤 4: 运行 Docker 容器

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

bash 复制代码
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. 查看正在运行的容器

bash 复制代码
docker ps

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

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

bash 复制代码
docker ps -a

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

3. 查看特定容器的日志

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

bash 复制代码
docker logs [容器ID或名称]

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

4. 检查容器的详细信息

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

bash 复制代码
docker inspect [容器ID或名称]

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

5. 查看容器的运行进程

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

bash 复制代码
docker top [容器ID或名称]

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

查看 Docker 服务状态

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

bash 复制代码
sudo systemctl status docker

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

相关推荐
猪脚踏浪1 小时前
linux 拷贝文件或目录到指定的位置
linux
大树8817 小时前
金刚石散热越强,管路越先见顶
大数据·运维·服务器·人工智能·ai
摇滚侠17 小时前
Linux CentOS7 rpm 安装 MySQL 5.7
linux·运维·mysql
霸道流氓气质17 小时前
领域驱动设计(DDD)在 Spring Boot 微服务中的实践指南
运维·spring boot·微服务
bush417 小时前
嵌入式linux学习记录十四、术语
linux·嵌入式
载数而行52018 小时前
Linux 11 动态监控指令top
linux
Inhand陈工18 小时前
基于台达PLC与映翰通IG502的智慧水产养殖精准投喂与远程运维解决方案
运维·人工智能·物联网·阿里云·信息与通信
酣大智19 小时前
ARP代理--工作原理
运维·网络·arp·arp代理
不会C语言的男孩19 小时前
Linux 系统编程 · 第 8 章:进程基础
linux·c语言
shushangyun_19 小时前
2026年快消品B2B系统推荐:支持终端门店订货、促销政策自动化的工具?
java·运维·网络·数据库·人工智能·spring·自动化