飞道的博客

window 10系统 在docker里搭建lnmp环境

182人阅读  评论(0)

首先说一下子,这里的lnmp的l不是linux 是laravel框架 哈哈哈

  • 安装centos下载centos7
    这篇文章是下载的图形界面
    在图形界面使用 ctrl+alt+F2切换到dos界面
    dos界面 ctrl+alt+F2切换回图形界面

进入dos界面 查看当前的默认界面形式:

systemctl get-default

结果出现:
图形化界面

graphical.target

命令行界面

multi-user.target

设置系统默认的界面形式(需要进入到root模式)

设置为图形化界面:

systemctl set-default graphical.target

设置为命令行界面:

systemctl set-default multi-user.target

如果出现 interactive authentication required 说明没有用root角色运行
切换root角色

su

重新运行。查看当前默认开启的是图形还是命令行

重启系统

reboot


基础设施ok

  • 安装docker

yum安装

yum install -y docker


查看是否安装完成

docker version


报错来了,这个报错是因为etc/docker 下面没有daemon.json文件,那我们创建一个
编辑daemon.json文件

{
   
 "registry-mirrors": ["https://registry.docker-cn.com"]
}


重启docker

systemctl restart docker.service


这下没有报错了
附带一下docker 命令

systemctl start docker   # 启动docker
systemctl stop docker    # 停止docker
systemctl status docker  # 查看docker状态
systemctl restart docker # 重新启动docker
docker search nginx命令查找 Docker Hub 上的 nginx 镜像
  • docker搭建lnmp环境
    1.下载php
docker pull php:7.4-fpm
docker run -p 9000:9000 -d --name php -v /docker/www:/docker/www --privileged=true php:7.4-fpm
-p 9000:9000 :将容器的9000端口映射到主机的9000端口
-d 后台运行(守护进程)
--name php:将容器命名为php
-v 将主机中当前目录下的www挂载到容器的www目录

查看php-fpm服务ip

docker inspect php | grep "IPAddress"

2.下载nginx


创建nginx配置

 cd /docker/nginx
 touch default.conf
 vim default.conf
 server {
   
    listen       80;
    listen  [::]:80;
    server_name  localhost;
    root /docker/www/blog/public;
    index index.php index.html;

    location / {
   
        try_files $uri $uri/ /index.php?$query_string;
    }

    error_page   500 502 503 504  /50x.html;
    location = /50x.html {
   
        root   /docker/www/blog/public;
    }

    location ~ \.php$ {
   
        root /docker/www/blog/public;
        fastcgi_pass   172.17.0.2:9000;
        fastcgi_index  index.php;
        fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;
        include        fastcgi_params;
    }
}



```bash
docker run -p 80:80 -d --name nginx2 -v /docker/nginx/default.conf:/etc/nginx/conf.d/default.conf -v /docker/www:/docker/www  --privileged=true nginx

-p 80:80:将容器的80端口映射到主机的80端口
-d 后台运行(守护进程)
–name nginx:将容器命名为nginx
-v 将主机中当前目录下的www挂载到容器的www目录

又来报错,没事继续解决
问题是,没有开启转发,网桥配置完后,需要开启转发,不然容器启动后,就会没有网络,配置/etc/sysctl.conf,添加net.ipv4.ip_forward=1

vim /etc/sysctl.conf
#配置转发
net.ipv4.ip_forward=1
#重启服务,让配置生效
systemctl restart network

#查看是否成功,如果返回为“net.ipv4.ip_forward = 1”则表示成功

sysctl net.ipv4.ip_forward


ps: 我中间改了一下nginx配置
重新加载配置

docker-composer restart nginx-lsb #这个要下载好几个包 我懒我用下面这种
docker restart nginx2 #重启nginx (nginx2是我起的别名  )

嗯嗯 这里是没有权限

cd /docker/www
chmod -R 777 lmrs-2008


很nice

继续安装mysql

docker pull mysql
vim /etc/my.cnf

添加配置文件

[client]
port		= 3306
socket		= /tmp/mysql.sock

[mysqld]
secure_file_priv=/var/lib/mysql
port		= 3306
socket		= /tmp/mysql.sock
datadir = /usr/local/mysql/data
default_storage_engine = InnoDB
performance_schema_max_table_instances = 400
table_definition_cache = 400
skip-external-locking
key_buffer_size = 32M
max_allowed_packet = 100G
table_open_cache = 128
sort_buffer_size = 768K
net_buffer_length = 4K
read_buffer_size = 768K
read_rnd_buffer_size = 256K
myisam_sort_buffer_size = 8M
thread_cache_size = 16
tmp_table_size = 32M
default_authentication_plugin = mysql_native_password
lower_case_table_names = 1
sql-mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES

explicit_defaults_for_timestamp = true
max_connections = 500
max_connect_errors = 100
open_files_limit = 65535

log-bin=mysql-bin
binlog_format=mixed
server-id = 1
binlog_expire_logs_seconds = 600000
slow_query_log=1
slow-query-log-file=/usr/local/mysql/data/mysql-slow.log
long_query_time=3
early-plugin-load = ""

innodb_data_home_dir = /usr/local/mysql/data
innodb_data_file_path = ibdata1:10M:autoextend
innodb_log_group_home_dir = /usr/local/mysql/data
innodb_buffer_pool_size = 128M
innodb_log_file_size = 64M
innodb_log_buffer_size = 16M
innodb_flush_log_at_trx_commit = 1
innodb_lock_wait_timeout = 50
innodb_max_dirty_pages_pct = 90
innodb_read_io_threads = 1
innodb_write_io_threads = 1

[mysqldump]
quick
max_allowed_packet = 500M

[mysql]
no-auto-rehash

[myisamchk]
key_buffer_size = 32M
sort_buffer_size = 768K
read_buffer = 2M
write_buffer = 2M

[mysqlhotcopy]
interactive-timeout

开启mysql

docker run -p 3306:3306 -d --name mysql -v /etc/my.cnf:/etc/mysql/my.cnf --privileged=true -e MYSQL_ROOT_PASSWORD=root mysql

-p 3306:3306 :将容器的3306端口映射到主机的3306端口
-d 后台运行(守护进程)
–name mysql:将容器命名为mysql
-v 将主机中的mysql配置挂载到容器的/etc/mysql/my.cnf

进入容器内部,查看是否能运行mysql

docker exec -it mysql bash
mysql -uroot -p

很耐思

用navicat连接一下子

未完待续 之后更新一下 swoole怎么加速laravel框架


转载:https://blog.csdn.net/jerryvd/article/details/116572980
查看评论
* 以上用户言论只代表其个人观点,不代表本网站的观点或立场