操作
- 设置主机名。
- 设置 ssh 连接一段时间后,断开的问题。
- 自定义用户,禁用 root 用户登录(使用普通用户登录,并使用公钥登录)。
- 安装 docker 环境。
# 先安装依赖
yum install -y yum-utils device-mapper-persistent-data lvm2
# 添加阿里云仓库
yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
# 安装
yum -y install docker-ce
# 启动
systemctl start docker
# 设置开机自启动
systemctl enable docker
# docker info
再来安装 docker-compose
打开 https://github.com/docker/compose/tags 选择想要的版本,点击进去。
https://github.com/docker/compose/releases/tag/v2.23.3
选择对应系统的文件,我这里选择的是 docker-compose-linux-x86_64
cd /usr/local/src
wget https://github.com/docker/compose/releases/download/v2.23.3/docker-compose-linux-x86_64
mv docker-compose-linux-x86_64 /usr/local/bin/docker-compose
chmod +x /usr/local/bin/docker-compose
docker-compose --version
如果你已经安装了旧版本的 Docker,首先卸载旧版本:
sudo apt remove docker docker-engine docker.io containerd runc
sudo apt update
sudo apt install -y apt-transport-https ca-certificates curl software-properties-common
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg
echo "deb [arch=amd64 signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
sudo apt update
sudo apt install -y docker-ce docker-ce-cli containerd.io
运行以下命令验证 Docker 是否正确安装:
sudo docker run hello-world
为了避免在每次运行 Docker
命令时都需要使用 sudo
,可以将当前用户添加到 docker
用户组:
sudo usermod -aG docker $USER
请注意,在更改用户组后,你可能需要注销并重新登录才能使更改生效。
sudo curl -L "https://github.com/docker/compose/releases/latest/download/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
sudo chmod +x /usr/local/bin/docker-compose
docker-compose --version
通过 docker 客户端工具。点击设置->Docker Engine。增加以下配置。
{
…,
"registry-mirrors": [
"https://registry.docker-cn.com",
"http://hub-mirror.c.163.com",
"https://docker.mirrors.ustc.edu.cn"
]
}
点击 Apply & Restart 按钮,保存并重启。
# 查看
docker info
感觉用了镜像速度也那样。
docker 的确是个好东西。该早一点就用起来。当下还在熟悉和练习中。
渐渐去丰富和完善。
.env
# 时区
TZ=Asia/Shanghai
# 项目对应文件夹
SOURCE_DIR=./www
# nginx https://nginx.org/
NGINX_NAME=nginx
NGINX_VERSION=1.25.3
NGINX_HTTP_HOST_PORT=80
NGINX_HTTPS_HOST_PORT=443
NGINX_CONFD_DIR=./conf/nginx/conf.d
NGINX_CONF_FILE=./conf/nginx/nginx.conf
NGINX_SSL_CERTIFICATE_DIR=./conf/nginx/ssl
NGINX_LOG_DIR=./logs/nginx
# php8.3
PHP_LOG_DIR=./logs/php8.3
# mysql
MYSQL_DATA=./data/mysql8.2-data
MYSQL_PORT=3306
# redis
REDIS_PORT=6379
当前,在项目中,无法通过 127.0.0.1 来连接 mysql 容器中的 mysql。可以通过修改 手动 修改 ip 的方式来搞定。
# 查看当前容器的 ip
ip addr
# php 和其他容器公用宿主机的 ip 修改项目中连接 mysql 的 ip 得到
172.19.0.1
docker exec -it xxx bash
# 安装 pdo pdo_mysql 扩展
docker-php-ext-install pdo pdo_mysql
# 安装 mysqli 扩展
docker-php-ext-install mysqli
# 退出 重启 (xxx 容器 id)
exit
docker restart xxx
# 进入容器中
apt-get update
apt-get install -y iproute2
# 这个时候就有了
ip addr show
https://www.jianshu.com/p/2217cfed29d7
https://blog.csdn.net/longfeng995/article/details/130704949
https://ricen.eu.org/index.php?control=doc&view=detail&id=326&i=1
php8 + mysql8 + nginx 1.25.3 + redis 7.2 的 docker-compose.yml
下边来弄弄 docker compose。 的确很好用。
先准备一下文件。
.
├── docker-compose.yml
└── vini123
├── nginx
│ └── default.conf
└── www
└── nginx
└── index.php
这里先看看 docker-compose.yml
文件。
# docker 信息
docker info
docker version
# 查看镜像
docker images
# 运行一个镜像
# --name 别名
# -p 端口映射( 宿主机端口:容器服务端口 )
# -d 以守护进程的方式运行(不加就会卡住占用窗口)
docker run --name my-nginx -d -p 80:80 nginx
# 查看活着的容器
docker ps
# 查看活所有容器
docker ps -a
# 停止容器
docker stop xxx
# 启动一个关闭的容器
docker start xxx
# 查看容器状态
docker stats
# 进入容器(以bash的形式进行交互模式)
docker exec -it xxx bash
# 退出容器(容器依然在运行)
exit
# 重启容器 (xxx 为容器 id 的前三个字符即可)
docker restart xxx
# 删除容器 (删除前需先停止)
docker rm xxx
# 删除镜像
docker rmi nginx
# 在 mysql 中,先查询出 sql_mode
show variables like 'sql_mode';
# 编辑修改
sudo vim /etc/mysql/mysql.conf.d/mysqld.cnf
# 没有就追加,有就修改
# 先备份一个全的
# sql_mode=ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION
sql_mode =这里你填需要的
# 重启
sudo service mysql restart
为了一些安全性,自己的电脑(本地)工具连接 mysql 的时候,我会限制它的 ip。可过一段时间自己的 ip 就会改变。这个时候,就连不上去。这个时候,就再修改下 ip,使其生效就好。
服务端
# 连接 mysql
mysql -uroot -p
# 输入秘密
xxxxxx
# 切换到数据库
use mysql
# 先查看查看 mysql 用户表里存了哪几个用户以及请求地址限制
select host,user from user;
# 可以看到 host 中有具体的 ip 的 还有 localhost。 这个 host 就是限制连接 mysql 服务的 ip。
# 假如之前设置外部能访问的 ip 是 138.xxx.xxx.xxx, 用户名是 xx_mysql
# 你新的 ip 是 136.xxx.xx.xx
# 修改
update user set host ='136.xxx.xx.xx' where user = 'xx_mysql';
# 生效
flush privileges;
虽然有 docker , 但还是喜欢用 homestead 开发环境。这个时候,一些旧的项目可能会用到比较低版本的 php,这个时候切换 php 版本就是一个常用的操作。
homestead 环境中,项目使用 php 的哪个版本,可以在 Homestead.yaml 文件中进行配置。比如:
sites:
- map: work.xiangrong.com
to: /home/vagrant/code/zhoulin/work.xiangrong.com/public
php: "7.4"
这里指定好 php 版本就好。
但是,当 homestead
环境中当前使用的 php
版本是 php 8
或 php 5.6
这些。使用 composer
或项目本身就有可能报错。这个时候,我们就需要将 homestead
环境的 php
版本切换的和项目所配置的一样。
如果切换成对应的 php 版本还会出 badgateway
这样的错误,可以试着重启 php 看看。
# 这里以 php 7.4 为例
sudo /etc/init.d/php7.4-fpm restart
# 查看当前环境中的 php 版本
php -v
# 查看所有 php 版本和当前版本
sudo update-alternatives --display php
# 执行后,会列出当前 php 所有版本和编号,输入编号,切换到执行的版本
sudo update-alternatives --config php
其实,想切换到某个 php 版本。直接输入就可以了,也不用向上边那样敲那么长的命令。 比如,想切换到 php7.4 版本。直接输入 php74 回车即可。同理,想切换到 php8.2 版本,直接输入 php82 回车即可。这些命令,可以在 Homestead 目录下的 aliases 文件中找到。
function php73() {
sudo update-alternatives --set php /usr/bin/php7.3
sudo update-alternatives --set php-config /usr/bin/php-config7.3
sudo update-alternatives --set phpize /usr/bin/phpize7.3
}
function php74() {
sudo update-alternatives --set php /usr/bin/php7.4
sudo update-alternatives --set php-config /usr/bin/php-config7.4
sudo update-alternatives --set phpize /usr/bin/phpize7.4
}
function php80() {
sudo update-alternatives --set php /usr/bin/php8.0
sudo update-alternatives --set php-config /usr/bin/php-config8.0
sudo update-alternatives --set phpize /usr/bin/phpize8.0
}
function php81() {
sudo update-alternatives --set php /usr/bin/php8.1
sudo update-alternatives --set php-config /usr/bin/php-config8.1
sudo update-alternatives --set phpize /usr/bin/phpize8.1
}
function php82() {
sudo update-alternatives --set php /usr/bin/php8.2
sudo update-alternatives --set php-config /usr/bin/php-config8.2
sudo update-alternatives --set phpize /usr/bin/phpize8.2
}
今天五月一日。