1、简单介绍,本文主要是搭建react+egg项目的时在服务器中做的一些配置,方便后面直接进行操作
2、主要就是采用docker的方式,集成jenkins自动化部署、mysql、redis等这些。
3、不得不说使用docker,大大的减少了前端对服务器的环境的操作,方便上手,快速部署服务
1、docker安装
1.1、安装
sudo yum remove docker \
docker-client \
docker-client-latest \
docker-common \
docker-latest \
docker-latest-logrotate \
docker-logrotate \
docker-engine
sudo yum install -y yum-utils device-mapper-persistent-data lvm2
sudo yum-config-manager \
--add-repo \
https://download.docker.com/linux/centos/docker-ce.repo
sudo yum install docker-ce docker-ce-cli containerd.io
1.2、启动
sudo systemctl start docker
# 开机自动启动docker
sudo systemctl enable docker
1.3、查看docker版本
docker version
docker info
1.4、卸载
sudo yum remove docker-ce docker-ce-cli containerd.io
sudo rm -rf /var/lib/docker
sudo rm -rf /var/lib/containerd
2、阿里云加速
sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{
"registry-mirrors": ["https://自己的阿里加速地址.mirror.aliyuncs.com"]
}
EOF
# 重载所有修改过的配置文件
//daemon-reload: 重新加载某个服务的配置文件
sudo systemctl daemon-reload
sudo systemctl restart docker
3、docker常用基本命令
3.1、镜像
命令 | 含义 | |
---|---|---|
docker image ls | 查看镜像 | |
docker search mysql | 查找镜像 | |
docker pull docker.io/hello-world | 拉取镜像 | |
docker rmi hello-world | 删除镜像 |
3.2、容器相关
运行容器
# docker 运行ubuntu镜像,并在启动的容器中执行/bin/echo "Hello world"命令
docker run ubuntu /bin/echo "Hello world"
参数 | 含义 |
---|---|
-i --interactive | 交互式 |
-t --tty | 分配一个伪终端 |
-d --detach | 运行容器到后台 |
-a --attach list | 附加到运行的容器 |
-e --env list | 设置环境变量 |
-p --publish list | 发布容器端口到主机 |
-P | --publish-all |
- 基本命令
命令 | 含义 |
---|---|
docker ps docker ps -a docker ps -l | 查看容器 |
docker kill [容器id] | 强行终止容器 |
docker rm [容器id] | 删除容器 |
docker start [容器id] | 启动容器 |
docker stop [容器id] | 停止容器 |
docker restart [容器id] | 重启容器 |
docker container exec -it [容器id] /bin/bash | 进入一个正在运行中的容器 |
docker container cp [容器id]/readme.md . | 拷贝文件 |
3.3、安装docker-compose
sudo curl -L "https://github.com/docker/compose/releases/download/1.25.0/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
# 添加可执行权限
sudo chmod +x /usr/local/bin/docker-compose
# 查看版本信息
docker-compose -version
4、安装node
上传文件并解压
- 上传压缩包 可以通过一些软件,将下载下来nodejs压缩包( 当前版本:node-v14.16.1-linux-x64.tar.xz )上传至服务器任意位置。可以是/usr/local/src。
- 解压压缩包
命令:
tar -xvf node-v14.16.1-linux-x64.tar.xz
, 将压缩包解压 - 将解压出来的文件重命名
命令:
mv node-v14.16.1-linux-x64 nodejs
- 检查文件目录是否完整:检查node,npm,npx是否存在。若不存在,重新执行上述命令。
全局引用
- 创建软连接
ln -s /usr/local/src/nodejs/bin/npm /usr/local/bin
ln -s /usr/local/src/nodejs/bin/node /usr/local/bin
注意:/usr/local/src/nodejs/bin/npm
此地址为安装的nodejs的文件的绝对地址下的npm和node所在位置,根据每个人的情况不同。
检查命令:node -v
,查看命令是否全局生效。显示版本号,代表成功。
5、安装mysql
- docker-compose.yml
version: '3'
services:
mysql:
container_name: z_mysql
image: mysql/mysql-server:5.7
restart: always
environment:
MYSQL_USER: root
MYSQL_PASSWORD: admin
MYSQL_DATABASE: database
MYSQL_ROOT_PASSWORD: admin
volumes:
- /data/mysql/data:/var/lib/mysql
- /data/mysql/conf:/etc/mysql/conf.d
- /data/mysql/logs:/logs
ports:
- 3306:3306
docker-compose up -d
# mysql权限问题解决
docker container exec -it [containerId] sh
mysql -uroot -p
Enter password: xxxx
mysql> GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' WITH GRANT OPTION;
// 修改权限
mysql> FLUSH PRIVILEGES;
// 修改加密规则 密码永不过期的
mysql> ALTER USER 'root'@'localhost' IDENTIFIED by '自己设置的密码' PASSWORD EXPIRE NEVER;
# 更新root密码
mysql> ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY '自己设置的密码';
mysql> FLUSH PRIVILEGES;
mysql> exit
6、安装nginx
- docker-compose.yml
version: "3"
services:
nginx:
container_name: nginx
image: nginx
privileged: true
restart: always
ports:
- 80:80
volumes:
- /project/nginx/log:/var/log/nginx
- /project/nginx/conf/nginx.conf:/etc/nginx/nginx.conf
- /project/nginx/conf.d:/etc/nginx/conf.d
- /project/nginx/html:/usr/share/nginx/html
docker-compose up -d
服务器中创建conf、conf.d、html、log四个文件
conf/nginx.conf
user nginx;
worker_processes 1;
error_log /var/log/nginx/error.log warn;
pid /var/run/nginx.pid;
events {
worker_connections 1024;
}
http {
include /etc/nginx/mime.types;
default_type application/octet-stream;
log_format main '$remote_addr - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for"';
access_log /var/log/nginx/access.log main;
sendfile on;
#tcp_nopush on;
keepalive_timeout 65;
#gzip on;
include /etc/nginx/conf.d/*.conf;
}
conf.d/default.conf
server {
#监听端口
listen 80;
#监听地址
server_name 服务器ip地址;
#静态资源
location / {
#根目录
root /usr/share/nginx/html;
# 设置默认页
index index.html;
}
#接口转发
location ~ /api/ {
proxy_pass 转发地址;
}
}
7、安装redis
- docker-compose.yml
version: '3'
services:
redis:
container_name: 'redis'
image: 'redis'
restart: always
volumes:
- /data/redis/data:/data
- /data/redis/conf/redis.conf:/etc/redis/redis.conf
- /data/redis/logs:/logs
ports:
- 6379:6379
command: redis-server --port 6379 --requirepass password --appendonly yes
docker-compose up -d
连接redis
docker container exec -it redis sh
redis-cli -a password
set a 1
get a // 看看是不是也是1,如果是,则表明成功
8、安装jenkins
docker run \
-itd \
-u root \
-p 8080:8080 \
-v /data/jenkins_home:/var/jenkins_home \
--name jenkins \
jenkins/jenkins:lts
8.1、查看密码
docker安装jenkins后,查看初始密码
docker logs [容器id](刚刚设置的容器名称),就可以看到初始密码了
docker ps 查看容器运行状态
docker logs 容器ID/容器名称 查看管理员初始密码
或者
docker exec -it [容器id] /bin/bash
cat /var/jenkins_home/secrets/initialAdminPassword
8.2、配置Jenkins插件加速
进入jenkins系统管理->插件管理中->高级选项卡->升级站点,使用清华源:
https://mirrors.tuna.tsinghua.edu.cn/jenkins/updates/current/update-center.jsonhttps://mirrors.tuna.tsinghua.edu.cn/jenkins/updates/current/update-center.json