记录21年10至12月以来使用服务器遇到的问题与解决
问题之前利用docker搭PHP+Nginx+MySQL屡试不爽,但在1024这天换了一台服务器,出现了意料之外的问题:浏览器访问服务器超时TIME_OUT。curl localhost:80 和 curl localhost:9000,主机上无响应,在容器内也是Failure to connect,或无响应解决经过问题排查,原因为docker0和eth0网卡冲突,皆为172.*.*.*/24段。
文章目录
问题
之前利用docker搭PHP+Nginx+MySQL屡试不爽,但在1024这天换了一台服务器,出现了意料之外的问题:
1. 云服务器docker0和eth0网段冲突,致使访问超时
- 浏览器访问服务器超时TIME_OUT
- curl localhost:80 和 curl localhost:9000,主机上无响应,在容器内也是Failure to connect,或无响应
2. 已使用的PHP容器中,无MySQLi
- 报错Uncaught Error: Call to undefined function mysql_connect()
问题1解决:修改Docker网段
经过问题排查,原因为docker0和eth0网卡冲突,皆为172.*.*.*/24段。
- 于是乎,修改docker0网卡
nano /etc/docker/daemon.json
- 添加“bip”将docker0改为192.168.*.*段
"bip": "192.168.1.3/24"
Ctrl+O保存,Ctrl+X退出
- 重启docker
sudo service docker restart
- 再次查看 或通过 curl 测试
ifconfig
参考
https://cloud.tencent.com/developer/article/1768097
https://www.zhihu.com/question/278340552/answer/399564710
再记Docker搭建PHP+Nginx+MYSQL简程
cd ~
mkdir -p nginx/www nginx/logs nginx/conf.d
cd ~/nginx/conf.d
nano php7-fpm.conf
这里是使用/www目录,故而编写为fastcgi_param SCRIPT_FILENAME /www/$fastcgi_script_name;
- http配置
server {
listen 80;
server_name localhost;
location / {
root /usr/share/nginx/html;
index index.php index.html index.htm;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root /usr/share/nginx/html;
}
location ~ \.php$ {
fastcgi_pass php:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME /www/$fastcgi_script_name;
include fastcgi_params;
}
}
- https配置(首先申请SSL证书)
server {
listen 443 ssl;
#填写绑定证书的域名
server_name 【域名】;
#证书文件名称
ssl_certificate 【容器内证书的绝对路径】;
#私钥文件名称
ssl_certificate_key 【容器内密钥的绝对路径】;
ssl_session_timeout 5m;
ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_prefer_server_ciphers on;
location / {
# 网站主页路径,需按实际目录。
root /usr/share/nginx/html;
index index.php index.html index.htm;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root /usr/share/nginx/html;
}
location ~ \.php$ {
fastcgi_pass php:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME /www/$fastcgi_script_name;
include fastcgi_params;
}
}
server {
listen 80;
#填写绑定证书的域名
server_name localhost;
#把http的域名请求转成https
return 301 https://$host$request_uri;
}
Ctrl+O,Ctrl+X
cd ~/nginx/www
nano index.php
<?
echo phpinfo();
Ctrl+O,Ctrl+X
cd ~/nginx
sudo chmod 777 -R www
拉取并运行镜像
# PHP
docker run --name php7-fpm -p 9000:9000 -v ~/nginx/www:/www -d php:7.4.25-fpm
# Nginx
docker run --name php7-fpm-nginx -p 80:80 -p 443:443 -d \
-v ~/nginx/www/:/usr/share/nginx/html:ro \
-v ~/nginx/conf.d/:/etc/nginx/conf.d:ro \
--link php7-fpm:php nginx
# MYSQL
docker run --name db_mysql -p 3306:3306 -e MYSQL_ROOT_PASSWORD=【密码】 -d mysql
MySQL容器因停止或删除等原因都将导致数据的丢失,需要注意数据需及时与容器分离,并做好备份
问题2解决:PHP容器内安装MySQLi
# 进入容器
docker exec -it php7-fpm /bin/bash
# 安装
./usr/local/bin/docker-php-ext-install mysqli
# 在/usr/local/etc/php/conf.d目录下,有新的配置文件docker-php-ext-mysqli.ini,查看php配置情况
php --ini
# 若无问题,退出容器
exit
# 重启
docker restart php7-fpm
内容如下PHP文件中,访问应有MySQLi模块。
<?
phpinfo();
PHP的MySQL连接文件的地址采用主机内网地址。
参考
https://blog.csdn.net/ZYF8985957/article/details/106994640
但是,过几天意外发现有挖矿木马在该容器内,故而采取删除措施,抑或创建新容器,且禁止开放9000端口
有且在安全组对该ip地址的所有端口服务禁止。
2022年3月14记录
自21年12月后,3月9日以来,服务器又遇到挖矿木马的问题。
此时在之前基础上,创建新的kdevtmpfsi、kinsing、libsystems.so文件,随意输入内容,放于容器中的/tmp目录下。
更多推荐
所有评论(0)