一、安装redis
1. 升级 GCC
最直接的解决方式是升级你的 GCC 编译器到支持 C11 标准的版本。CentOS 7 默认的 GCC 版本较旧,可能不支持 _Atomic
。你可以通过以下步骤升级 GCC:
-
启用 CentOS 的 Software Collections (SCL) 仓库,该仓库提供了更新的软件版本:
bashsudo yum install centos-release-scl
-
安装更新的 GCC 版本。例如,安装 GCC 8(请根据可用性检查是否有更新版本):
bashsudo yum install devtoolset-8-gcc devtoolset-8-gcc-c++
-
启用新版本的 GCC:
bashscl enable devtoolset-8 bash
-
下载并安装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/
- 修改redis守护配置
bash
nano /usr/local/redis/redis.conf
将daemonize no 改成 daemonize yes
- 设置开机自动启动
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
-
安装OpenJDK:
bashsudo yum install java-1.8.0-openjdk
-
确认安装并检查Java版本:
bashjava -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
-
首先,安装所需的包:
bashsudo yum install -y yum-utils device-mapper-persistent-data lvm2
-
添加 Docker 的官方仓库:
bashsudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
-
安装 Docker CE(社区版):
bashsudo yum install -y docker-ce docker-ce-cli containerd.io
-
启动 Docker 服务并设置开机自启:
bashsudo systemctl start docker sudo systemctl enable docker
步骤 2: 创建 Dockerfile
-
创建一个新目录作为项目的根目录,并进入该目录:
bashmkdir my_python_project cd my_python_project
-
在这个目录中,创建一个名为
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
文件列出了所有依赖)。 - 指定容器运行时监听的端口(根据你的应用需求调整)。
- 设置需要的环境变量。
- 设置默认的容器启动命令。
-
创建
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 服务的状态,包括它是否正在运行、启动日志、以及其他系统级信息。