此次将项目部署到linux服务器的过程花费了九牛二虎之力,踩了许多坑,总结出了一些经验。写这篇博客既是希望帮助大家少走一些弯路,同时也是给自己的踩坑记录留个档。
大致过程本次使用xshell6/putty工具与云服务器ubuntu进行连接,使用winSCP在windows和linux传文件(也可以使用scp命令),使用docker实现快速部署,在windows和linux中均安装了Docker,同时已经注册了docker hub账号。项目需要用到mysql和redis,mysql安装在linux中,redis安装在docker中。你也可以选择将mysql安装在docker中,但为了方便部署,最好不要将redis安装在linux中,特别是在需要部署多台服务器时。此外,由于我们的项目将在docker容器中运行,因此mysql和docker都应该设置允许远程访问。任何想在本地进行连接云服务器端口的操作,都需要在云服务器所属服务商中开启防火墙端口(如3306,6379),本文不再阐述
Mysql安装
将数据复制到云服务器中:数据库导出与恢复
查询3306端口,查看mysql服务是否已经运行
netstat -ano|grep "3306"
0.0.0.0:3306
我们可以在本地终端测试是否能连接上,不出意外连接失败
远程连接mysql命令(命令顺序不能乱):
mysql -h 服务器ip地址 -P 3306 -u root -p
远程连接
我们需要开启MySQL远程连接
在云服务器中操作
修改 Mysql 用户配置
mysql -uroot -p123456
MySQL [(none)]>use mysql;
#查看现有用户,允许连接的主机
MySQL [mysql]> SELECT User, Host FROM user;
我们可以设置root用户有哪些主机可以访问,我这里已经设置了“%”,表示所有ip均可以访问
#设置为所有IP都可以访问。
MySQL [mysql]> UPDATE user SET Host=@'%' where user='root' AND Host='localhost' LIMIT 1;
#刷新MySQL的系统权限相关表
MySQL [mysql]> flush privileges;
修改my.cnf/mysqld.cnf配置文件
在很多教程里都没有说需要修改该文件。在另一台机器里,我没修改配置文件也远程连接成功了。然而在这个云服务器里并没有行通,因此需要进行修改。
/etc/mysql/mysql.conf.d/mysqld.cnf
关于my.cnf文件的位置,可以自己按网上所说的地址多找几次。同时也可以使用find命令,当然相似文件过多,我并不推荐。
find . -name "my.cnf"
/etc/my.cnf/etc/mysql/my.cnf/usr/etc/my.cnf~/.my.cnf
某些linux开发版系统甚至没有my.cnf文件,此时需要去搜索引擎寻找相应方法修改了。
127.0.0.10.0.0.0
最后我们重启mysql,并在远程重新测试连接
sudo service mysql restart
#如果没用就试试把mysql改成mysqld
mysql -h 服务器ip地址 -P 3306 -u root -p
Docker
安装Redis并以配置文件启动
1、拉取镜像
docker pull redis:latest
2、查看镜像
docker images
3、redis.conf文件
修改redis.conf文件
bind 127.0.0.1 #修改成bind 0.0.0.0或者直接注释掉
protected-mode no #默认yes,开启保护模式,限制为本地访问
daemonize no#默认no
requirepass 123 #密码
appendonly yes #redis持久化(可选)
4、启动容器
创建配置文件目录存放redis.conf和redis相关数据
/home/ubuntu/env/redis/conf/redis.conf
docker run -p 6379:6379 --name redis -v /home/ubuntu/env/redis/conf/redis.conf:/etc/redis/redis.conf -v /home/ubuntu/env/redis/data:/data -d redis redis-server /etc/redis/redis.conf --appendonly yes
参数解读:
--name: 容器的名字name
--appendonly redis.conf配置文件中的字段属性
-p: 端口映射;宿主:docker
-v: 目录挂载;宿主目录:docker目录
-d: 后台启动docker;
redis-server /etc/redis/redis.conf 以配置文件启动redis,
加载容器内的conf文件,最终找到的是挂载的目录/home/ubuntu/env/redis/conf/redis.conf
5、查看容器是否运行成功
docker ps
在远程进行连接测试
redis-cli -h ip地址 -p 端口 -a 密码
参数
用法:redis-cli [OPTIONS] [cmd [arg [arg ...]]]
-h <主机ip>,默认是127.0.0.1
-p <端口>,默认是6379
-a <密码>,如果redis加锁,需要传递密码
--help,显示帮助信息
创建一个自定义镜像并上传到DockerHub
创建镜像
先制作一个Dockerfile
Dockerfile的制作方式,这里不再介绍
打包本地项目并做成镜像
#其中"-f"后接参数为自己编写的dockerfile文件,"-t"后接参数为生成的docker镜像名
docker build -f dockerfile_test -t dockerfile_test .
查看本地镜像
docker images
上传
在DockerHub官网注册登录自己账号
给镜像打上标签
docker tag dockerfile_test:latest 自己账户名称/dockerfile_test:latest
上传镜像到自己仓库
docker push 自己账户名称/dockerfile_test:latest
拉取镜像和运行
拉取镜像
docker pull
运行镜像
docker run -d --name dockerfile_test -p 8880:8880 dockerfile_test
运行成功,至此,项目已经部署成功