服务器环境部署

docker相关

docker安装

  • 使用官方安装脚本自动安装
curl -fsSL https://get.docker.com | bash -s docker --mirror Aliyun
  • 设置使用国内镜像源
  1. 修改或新增 /etc/docker/daemon.json
vim /etc/docker/daemon.json
  1. 添加内容(添加三个源 阿里云,网易, Docker 官方中国区)
{
    "registry-mirrors": ["https://pee6w651.mirror.aliyuncs.com", "http://hub-mirror.c.163.com", "https://registry.docker-cn.com"]

}
  1. 重启docker
systemctl restart docker.service
docker安装mysql

参考地址 https://www.runoob.com/docker/docker-install-mysql.html

  1. 查看仓库MySQL版本
docker search mysql
  1. 安装对应版本(不指定默认最新版)
docker pull mysql
  1. 查看镜像
docker images
image.png
  1. 启动容器
docker run -itd --name mysql -p 3306:3306 -e MYSQL_ROOT_PASSWORD=YAFD.2020 mysql

参数说明:

-p 3306:3306 :映射容器服务的 3306 端口到宿主机的 3306 端口,外部主机可以直接通过 宿主机ip:3306 访问到 MySQL 的服务。
MYSQL_ROOT_PASSWORD=YAFD.2020:设置 MySQL 服务 root 用户的密码。

  1. 查看是否启动成功
docker ps
  1. node连接报错

https://www.cnblogs.com/yy-cola/p/11226924.html

 { Error: ER_NOT_SUPPORTED_AUTH_MODE: Client does not support authentication protocol requested by
 server; consider upgrading MySQL client

原因8.0mysql引入了caching_sha2_password模块作为默认身份验证插件,nodejs还没有跟进

  • 解决方法:
#  进入容器
docker exec -it mysql bash  
# 登录mysql
mysql -u root -p
# 授权
GRANT ALL ON *.* TO 'root'@'%';
# 刷新权限
flush privileges;
# 更新加密规则:
ALTER USER 'root'@'localhost' IDENTIFIED BY 'password' PASSWORD EXPIRE NEVER;
# 更新root用户密码:
ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY '123456';
# 刷新
flush privileges;

docker安装redis

参考地址 https://www.runoob.com/docker/docker-install-redis.html
https://hub.docker.com/_/redis?tab=description&page=1&ordering=last_updated
redis主从和哨兵模式 https://www.cnblogs.com/tomkluas/p/12682489.html

docker pull redis   // 拉取最新镜像
docker images     // 查看镜像
docker run -itd --name redis --restart always -p 6379:6379 -v /root/redis/:/usr/local/etc/redis redis   // 运行redis
docker ps          // 查看容器运行信息
docker exec -it redis /bin/bash  //通过 redis-cli 连接测试使用 redis 服务。
创建redis主从

docker安装mongodb

https://www.runoob.com/docker/docker-install-mongodb.html
https://www.jianshu.com/p/2181b2e27021
studiot 3T下载地址:https://studio3t.com/download/

docker pull mongo
docker run -d -p 27017:27017 -v /root/mongo/config:/data/configdb -v /root/mongo/db:/data/db --name mongo mongo --auth
$ docker exec -it mongo mongo admin
# 创建一个名为 admin,密码为 123456 的用户。
>  db.createUser({ user:'admin',pwd:'123456',roles:[ { role:'userAdminAnyDatabase', db: 'admin'}]});
# 尝试使用上面创建的用户信息进行连接。
> db.auth('admin', '123456')
// 修改用户密码
db.changeUserPassword('admin','password'); 

  • 备份
mkdir /root/backup/mongodb
tar cvf /root/backup/mongodb/$(date +%Y%m%d%H%M%S).tar /root/mongo

// 还原
tar xvf /root/backup/mongodb/backup.tar -C /root/mongo
cp -r 解压的文件 docker映射文件

Linux cp 命令
Linux tar 命令

  • 备份脚本
#!/bin/bash

LOG_DIR=/root/backup/log/mongodb
SOURCE_DIR=/root/mongo
BACKUP_DIR=/root/backup/mongodb

REMOTE_IP=192.168.1.98
REMOTE_USER=root
REMOTE_DIR=/data/opt/backup/mongodb


function log()
{
  echo "[ `date '+%Y-%m-%d %H:%M:%S'` ] $1"
}


# 备份
function main(){
    d=`date "+%Y%m%d%H%M%S"`
    fname=${BACKUP_DIR}/backup_${d}.tgz
    log "开始备份 ${fname}"
    tar -zcf ${fname} ${SOURCE_DIR}

    #scp ${fname} $REMOTE_USER@$REMOTE_IP:$REMOTE_DIR
    #log "备份到远程成功"


    log "开始删除7天前的备份"
    find ${BACKUP_DIR} -type f  -atime +7 |xargs -t -i rm {}
    log "删除完毕"
}


main >> ${LOG_DIR}/backup.log  2>&1
// 每4小时备份一次
分 时 天 月 周 
 0 */4 * * * sh /root/backupMongodb.sh

docker安装nginx

https://www.runoob.com/docker/docker-install-nginx.html
https://www.cnblogs.com/yjlch1016/archive/2019/11/24/11923695.html
https://blog.csdn.net/weixin_40461281/article/details/92586378

# 拉取Nginx官方镜像
docker pull nginx

#先让容器在后台运行,并取个别名为nginx,此时还没有修改配置文件
docker run --name nginx -d nginx

# 查看nginx-test容器id
docker ps -a

#查看容器内部的配置文件
docker exec nginx ls /etc/nginx

#复制容器内部的配置文件到宿主机,不用事先创建/root/nginx目录
docker cp -a nginx:/etc/nginx/ /root/nginx

#进入/root目录
cd

#给/root/nginx目录赋予最高权限
chmod -R 777 nginx

#删除nginx容器,-f参数是强制删除运行中的容器
docker rm -f nginx

#重新运行容器,并挂载配置文件,映射端口
#这样下次就可以直接修改宿主机的配置文件,然后docker restart nginx重启容器
docker run -p 80:80 --restart always --name nginx -v /root/nginx/:/etc/nginx/ -d nginx
docker run -d -p 80:80 --name nginx -v /root/nginx/www:/usr/share/nginx/html -v /root/nginx/conf/nginx.conf:/etc/nginx/nginx.conf -v /root/nginx/logs:/var/log  -v /root/nginx/:/etc/nginx/ -d nginx

docker run -d -p 80:80 -p 443:443 --name nginx --restart always -v /root/nginx/www:/usr/share/nginx/html -v /root/nginx:/etc/nginx -v /root/nginx/logs:/var/log/nginx -v /root/nginx/ssl:/etc/nginx/ssl nginx


#开放宿主机防火墙的80端口
firewall-cmd --zone=public --add-port=80/tcp --permanent
firewall-cmd --reload

#访问
浏览器输入主机ip

docker 安装Jenkins

# 拉取镜像
docker pull jenkins/jenkins   // 第一个官方镜像安装插件有可能会报错    
# 启动镜像

#查看容器内部的配置文件
docker exec jenkins ls /var/jenkins_home/

#复制容器内部的配置文件到宿主机,不用事先创建/root/nginx目录
docker cp -a jenkins:/var/jenkins_home/ /root/jenkins

#给/root/nginx目录赋予最高权限
chmod -R 777 jenkins

#删除容器,-f参数是强制删除运行中的容器
docker rm -f jenkins

#重新运行容器,并挂载配置文件,映射端口
#这样下次就可以直接修改宿主机的配置文件,然后docker restart jenkins重启容器
docker run -itd -p 8080:8080 -p 50000:50000  --restart always --name jenkins --privileged=true  -v /root/jenkins:/var/jenkins_home/ jenkins/jenkins                  
Jenkins部署node项目
  • git拉取源码失败 : 使用用户名密码方式认证的时候URL地址要用https方式而不是ssh。


    image.png
  • yarn安装
npm install -g yarn

linux 安装nvm,通过nvm安装node

https://github.com/cnpm/nvm

更换下载源(默认是从 http://nodejs.org/dist/ 下载的, 国外服务器, 必然很慢):shell下直接运行:

NVM_NODEJS_ORG_MIRROR=https://npm.taobao.org/mirrors/node

npm国内源 https://blog.csdn.net/chenbingzhao/article/details/110092280

临时使用npm --registry https://registry.npm.taobao.org install express
持久使用npm config set registry https://registry.npm.taobao.org

wget -qO- https://raw.githubusercontent.com/creationix/nvm/v0.33.11/install.sh | bash
source ~/.bashrc

nvm list   // 查看当前版本
nvm  // 查看所有命令
 nvm ls-remote  // 查看所有可安装版本
nvm install version  // 安装对应的版本

版本管理工具

禅道

docker镜像地址

docker pull idoop/zentao

mkdir -p /data/zbox && \
docker run -d -p 8081:80 -p 3307:3306 \
        -e ADMINER_USER="root" -e ADMINER_PASSWD="123456" \
        -e BIND_ADDRESS="false" \
        -v /data/zbox/:/opt/zbox/ \
        --add-host smtp.764162156.qq.com:163.177.90.125 \
        --name zentao-server \
        idoop/zentao:latest
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 159,569评论 4 363
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 67,499评论 1 294
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 109,271评论 0 244
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 44,087评论 0 209
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 52,474评论 3 287
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 40,670评论 1 222
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 31,911评论 2 313
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,636评论 0 202
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,397评论 1 246
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,607评论 2 246
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 32,093评论 1 261
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,418评论 2 254
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 33,074评论 3 237
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,092评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,865评论 0 196
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 35,726评论 2 276
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,627评论 2 270