Amazon Linux 搭建开发环境及常用软件
本篇记录 AWS EC2 的环境搭建内容
EBS磁盘挂载和卸载
参考链接
添加用户
参考链接
- AWS Doc: 如何将具有 SSH 访问权限的新用户添加到 Amazon EC2 Linux
- Amazon EC2 密钥对和 Windows 实例
- 简书: 免密码使用 sudo 和 su
- CenterOS 7 创建新用户和ssh安全登录配置
chmod u+w /etc/sudoers
先要给予权限才可修改
CenterOS 添加新用户后,若需要 SSH 登录就需要去修改
/etc/ssh/sshd_config
在AllowUsers
后添加用户名, 然后
service sshd restart
重启生效
检索 pem 文件
1 | ssh-keygen -y -f XX.pem |
同步时区
1 | # 查看时区 |
参考链接
JDK
1 | yum list java* |
1 | yum install java-1.8.0-openjdk.x86_64 |
SSL
AWS Doc: 在 Amazon Linux 2 上配置SSL
Nginx
1. 添加下载源
在 /etc/yum.repos.d/
目录下新建一个 nginx.repo
文件
1 | [nginx] |
保存
2. 下载
1 | yum install nginx |
3. 启动
1 | # 设置开机启动 |
参考链接
Redis
1. 安装
默认 AWS EC2 上 是没有 redis 源的 , 需要下载 Fedora 的 epel 仓库
1 | yum install epel-release |
若找不到则需要手动安装
rpm -ivh http://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm
此时会提示需要通过另外的命令安装,输入安装即可
1 | sudo amazon-linux-extras install epel |
然后再安装redis
1 | yum install redis |
2. 启动
1 | # 启动redis |
开启自启动
1 | chkconfig redis on |
3. 配置
Redis 默认配置文件为 /etc/redis.conf
, 通常对其进行配置修改
1 | # 指定 Redis 端口 |
更多的配置,可直接查看配置文件的注释或者查看 详细文档
4. 常用操作
1. 连接 Redis
1 | redis-cli -h [ip] -p [端口] |
若设置了密码 , 则需要输入密码
1 | auth 445813 #445813为密码,输入密码前要密码前面加 auth和空格 |
2. 键值操作
1 | #添加 |
Redis支持五种数据类型: string(字符串),hash(哈希), list(列表),set(集合)及zset(sorted set: 有序集合).更多关于不同数据类型操作方法, 可查看官方文档: https://redis.io/commands(英文), 这里还有一个中文的, 可以去看看 http://redisdoc.com/index.html
docker-compose 安装 Redis
直接通过 Rancher 或者 docker-compose 安装 ,方便追踪
首先在对应目录下创建 redis.conf , 关于端口 , 目录等基本不要改 , 就改动访问密码等平台相关的信息即可
1 | version: '3' |
参考链接
MySQL
1. 卸载自带的 mariadb-lib 及 mysql
首先查看已安装的 mariadb 和 mysql
然后一一卸载
1 | # 查看 |
mysql 同理
2. 下载 MySQL 的 Yum Repository
查看系统发行版本
1 | cat /etc/os-release |
1 | NAME="Amazon Linux" |
然后进入 MySQL 官网 Yum Repository 下载区 选择对应版本复制链接, 下载
1 | wget https://dev.mysql.com/get/mysql80-community-release-el7-3.noarch.rpm |
安装 repo
1 | yum localinstall ./mysql80-community-release-el7-3.noarch.rpm |
检查是否安装成功
1 | yum repolist enabled | grep "mysql.*-community.*" |
3. 安装 MySQL
1 | yum install mysql-community-server |
4. 配置
修改 MySQL 的配置文件 /etc/my.cnf
, 这里笔者将 mysql 配置目录集中配置在了 /mnt/efs/mysql
下
1 | basedir=/mnt/efs/mysql # 新增 |
然后需要给予自定义目录权限
这里需要注意, 在给权限之前需要创建一些子目录, 否则后面启动 mysql 时会报"SERVER_BOOTING" Permission denied
类似的错误 , 需要查看错误日志了解详情 . 这里罗列下要创建的子目录
1 | /mnt/efs/mysql/data |
再给予权限
1 | chown -R mysql:mysql /mnt/efs/mysql |
初始化
1 | mysqld --initialize --user=mysql |
管理 SELinux
1 | setenforce 0 |
设置开机启动
1 | systemctl enable mysqld |
启动
1 | systemctl start mysqld |
查询是否启动成功
1 | systemctl status mysqld |
5. 登录验证
1 | grep "temporary password" /mnt/efs/mysql/log/mysqld.log |
得到临时密码 , 然后登录数据库
1 | mysql -uroot -p # 输入得到的临时密码 |
再修改密码
1 | ALTER USER 'root'@'%' IDENTIFIED BY 'xxxxxx'; |
如果是 mysql8.0 需要使用以下命令 , 否则用 Navicat 等客户端登录时会报 Authentication plugin 'caching_sha2_password' cannot be loaded
1 | ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY 'xxx'; |
若这里的
%
填写的是localhost
后面登录时会报Host 'x.x.x.x' is not allowed to connect to this MySQL server
. 其中x.x.x.x
是登录的本地 IP .最好不要改root的登录host , 创建新用户并修改host .
6. 创建用户及权限控制
创建
1 | # root登录,然后创建用户 |
授权
1 | # 给予 dev my_db 数据库下的所有表的所有权限 |
7. docker-compose 安装 MySQL
直接通过 Rancher 或者 Docker 安装 MySQL
首先创建 conf/my.cnf
文件
1 | [mysqld] |
docker-compose.yml
配置
1 | version: '3' |
8. 数据库日备
这里我们对 docker 安装的 MySQL 进行数据库结构+数据的每日全量备份
首先 docker ps
查看 MySQL 容器的 container ID 或者 Name
然后编写脚本 , 首先在当前目录下创建好 db
目录 , 用于存放备份好的文件
1 |
|
然后在当前目录创建 mysql-back.list
文件 , 填入要备份的数据库名
替换以上脚本中的 CONTAINER_NAME
和 PASSWORD
然后设置脚本运行时间
vim /etc/crontab
在最下方加入行 , sh 文件路径替换为自己存放的
1 | 0 2 * * * root sh /mnt/data/mysql/backups/mysql-backup.sh |
这样每天凌晨2点就会执行全量数据备份
参考链接
- Centos7,redhat安装Mysql
- CentOS7安装MySQL8.0图文教程
- MySQL 8.0报错:ERROR 2059 (HY000): Authentication plugin ‘caching_sha2_password’ cannot be loaded
- 查看Linux发行版名称及版本号
- CenterOS7-Docker-安装MySQL8
Docker
1. 安装依赖包
首先移除旧的 docker
及其 依赖
1 | sudo yum remove docker \ |
然后安装 docker
依赖包
1 | sudo yum install -y yum-utils device-mapper-persistent-data lvm2 |
2. 添加 Docker-ce 镜像
- 国外源
1 | yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo |
- 国内阿里云源
1 | yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo |
远程的包信息缓存到本机
1 | yum makecache fast |
3. 安装 Docker
最新版安装
1 | yum -y install docker-ce |
在生产环境中, 通常需要使用统一的稳定版 ,而不是最新版 . 此时我们需要查看并安装指定版本
指定版本安装
1 | yum list docker-ce --showduplicates | sort -r |
然后安装对应版本
1 | sudo yum install docker-ce-18.09.5 docker-ce-cli-18.09.5 containerd.io-1.2.5 |
Issue
此时可能出现 Requires: container-selinux >= 2.9
的报错
1 | Error: Package: 3:docker-ce-18.09.6-3.el7.x86_64 (docker-ce-stable) |
此时需要去 http://rpm.pbone.net/index.php3/stat/4/idpl/40704222/dir/centos_7/com/container-selinux-2.9-4.el7.noarch.rpm.html 或 https://pkgs.org/download/container-selinux 下载 container-selinux2.9.4
1 | wget ftp://bo.mirror.garr.it/1/slc/centos/7.1.1503/extras/x86_64/Packages/container-selinux-2.9-4.el7.noarch.rpm |
接着执行
1 | rpm -ivh container-selinux-2.9-4.el7.noarch.rpm |
过程中可能又报错 , 若无报错则可跳过
1 | error: Failed dependencies: |
直接 yum install 缺失的包即可
1 | yum -y install policycoreutils-python |
至此,缺失的依赖包已补全 , 再按照上述安装 Docker
4. 配置 Docker
重载 systemctl 并启动和开机自启动 docker
1 | systemctl daemon-reload |
5. 安装 Docker-compose
1 | sudo curl -L "https://github.com/docker/compose/releases/download/1.24.0/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose |
6. 改变 Docker 默认存储路径
安装完后不要启动,或者先停掉服务
移动现有文件
1 | mv /var/lib/docker/* /mnt/efs/docker |
删除原来的目录
1 | rm -rf /var/lib/docker |
建立软连接
1 | ln -s /mnt/efs/docker/ /var/lib/docker |
进入 /var/lib
下用命令查看软连接结果
1 | ls -la docker |
启动服务 , 用 docker info
查看是否成功
7. 卸载 Docker
__1. __ 搜索已安装的 docker 包 并删除
1 | yum list installed|grep docker |
__2. __ 删除 docker 镜像
1 | rm -rf /var/lib/docker ## 若有自定义目录,需删除自定义目录 |
也可在卸载前删除容器及镜像
1 | # 停止所有容器并删除 |
Docker制作 Java 服务镜像并推送到私有镜像库
首先将 Java 工程改造成docker工程 . 在 pom.xml
中加入
1 | <properties> |
然后本地安装 Docker , 此处不清楚的可自行 Google .
然后命令打包
1 | mvn clean package dockerfile:build -Dmaven.test.skip=true |
1 | # 登录私有镜像库,然后输入密码 |
此时注意下,如果是在 Mac 端输入 sudo xxx
命令,第一个输入的密码其实是本地电脑密码, 通过后才是输入镜像库密码, 别搞错了😂
CenterOS 补充
后面使用了几台 CenterOS , 安装过程中依赖环境相对于 AWS Linux 还是全一些 .
卸载 device-mapper-*
安装高版本即可安装成功
1 | # 查看安装的 device* 包 |
1 | # 删除所有无用镜像 |
Issue
若 docker info
查看有 WARNING: bridge-nf-call-iptables is disabled
的警告显示 .
解决办法 :
1 | vim /etc/sysctl.conf |
添加以下内容
1 | net.bridge.bridge-nf-call-ip6tables = 1 |
再执行
1 | sysctl -p |
再执行 docker info
就不会报错了.
参考链接
- Requires: container-selinux >= 2.9报错
- 官网: Get Docker CE for CenterOS
- 官网: Install Docker Compose
- 修改 docker 默认的存储位置
- WARNING:bridge-nf-call-iptables is disabled解决
SS
参考链接
Amazon EC2 Linux实例上安装Shadowsocks服务器
GitLab
1. Docker及docker-compose
参考本文 Docker部分
2. GitLab
Issue
- 阿里云企业邮箱 smtp OpenTimeout: execution expired
通常是因为阿里云服务器 25 端口未开放, 换成 465 即可.
已经通过 docker-compose 部署的 GitLab 需要修改GitLab自身的配置文件gitlab.rb
首先修改自定义目录下的 {docker-compose文件中的自定义路径}/config/gitlab.rb
并保存
1 | gitlab_rails['smtp_enable'] = true |
然后进入容器 bash
1 | docker exec -it gitlab bash |
重新读取配置
1 | gitlab-ctl reconfigure |
然后进入 gitlab 控制台
1 | gitlab-rails console |
检查邮件配置
- 检查邮件发送协议
1 | ActionMailer::Base.delivery_method |
显示=> :smtp
- 查看当前的发送邮件配置
1 | ActionMailer::Base.smtp_settings |
查看配置是否与修改后的一致
然后发送测试邮件
1 | Notify.test_email('xxx@yyy.com','测试标题','测试内容').deliver_now |
建议不要使用163邮箱, 可能因为内容导致邮件发送失败报554
参考链接
Yapi
参考链接
爱发布 APP 托管
常用的APP托管平台 蒲公英 , fir 审核越来越严格,时不时还会突然下架. 最好自己部署平台
物理机环境补充
物理机初始化缺少很多云主机装好的环境
1 | ## vim |