首先前置条件,是按照上一篇文档安装好了dnmp+swoole+laravel6.0环境
https://www.jianshu.com/p/562a2ef0b23d
参考文献
1.dnmp环境 https://github.com/yeszao/dnmp
2.laravel6.0文档 https://learnku.com/docs/laravel/6.x
3.laravels 文档 https://github.com/hhxsv5/laravel-s/blob/master/README-CN.md
在这里非常感谢laravels交流群里面帮助我一步步解决问题的各位大佬
***@遇珮 @小陈 @so what @涸泽渔人 @Mr. Xie ***
没有他们的帮助我已经放弃了哈哈
1.安装laravels 框架
在上一篇文章中已经部署好了环境和laravel6项目
接下来部署laravels,一定要多看https://github.com/hhxsv5/laravel-s/blob/master/README-CN.md
的官方文档
cmd 中进入php容器
docker exec -it php /bin/sh
进入laravel项目
cd blog/
1.下载项目
composer require "hhxsv5/laravel-s:~3.7.19" -vvv
2.注册Service Provider(以下两步二选一)。
Laravel: 修改文件config/app.php,Laravel 5.5+支持包自动发现,我们是laravel6,跳过这步
'providers' => [
//...
Hhxsv5\LaravelS\Illuminate\LaravelSServiceProvider::class,
],
等下载运行好后根据laravels的官方文档运行以下代码,发布laravels的文件
php artisan laravels publish
# 配置文件:config/laravels.php
# 二进制文件:bin/laravels bin/fswatch bin/inotify
接下来启动laravels
php bin/laravels start -d
注意我的截图 laravels 监控地址是 http://127.0.0.1:5200,这个代表只被这台容器(容器就是单独的微型主机)内的程序可以连接,容器外的win10或者其他容器nginx是无法链接的。这个之后需要修改。先停止laravels,
php容器内进入laravel项目根目录
php bin/laravels stop #停止laraves
项目配置文件目录中找到laravels的配置文件 blog/config/laravels.php
找到
'listen_ip' => env('LARAVELS_LISTEN_IP', '127.0.0.1'),
修改为
'listen_ip' => env('LARAVELS_LISTEN_IP', '0.0.0.0'),
接着PHP容器内,在laravel项目中清除缓存,然后启动laravels
php artisan cache:clear #清除laravels缓存 如果这个清除后不行,可以用php artisan optimize:clear。
php bin/laravels start -d #启动laravels后台进程
可以看到,此时配置已经修改好了,其他主机或者容器都可以通过容器ip访问到laraves进程
2.启动php容器的5200端口
接下来开启php容器内的5200端口。
win10中 进入dnmp目录 修改配置文件docker\dnmp\docker-compose.yml
给php配置中找到container_name: php这一行,在这行代买后增加一行增加ports:-"5200:5200"配置
ports:
- "5200:5200"
接着然后重新build PHP镜像。cmd 进入dnmp目录重建php后重新启动dnmp环境,查看容器的情况
docker-compose build php #重建php
docker-compose up -d #重启dnmp环境
docker ps #查看容器
以上php容器方面就配置好了
3.nginx代理laraves配置
win10系统中找到我们的站点配置文件
dnmp\services\nginx\conf.d\blog.conf
记事本打开,将配置改成以下,x相关的域名,还有文件路径根据自己的项目修改
gzip on;
gzip_min_length 1024;
gzip_comp_level 2;
gzip_types text/plain text/css text/javascript application/json application/javascript application/x-javascript application/xml application/x-httpd-php image/jpeg image/gif image/png font/ttf font/otf image/svg+xml;
gzip_vary on;
gzip_disable "msie6";
upstream swoole {
# 通过 IP:Port 连接
server 192.168.3.58:5200 weight=5 max_fails=3 fail_timeout=30s;
# 通过 UnixSocket Stream 连接,小诀窍:将socket文件放在/dev/shm目录下,可获得更好的性能
#server unix:/yourpath/laravel-s-test/storage/laravels.sock weight=5 max_fails=3 fail_timeout=30s;
#server 192.168.1.1:5200 weight=3 max_fails=3 fail_timeout=30s;
#server 192.168.1.2:5200 backup;
keepalive 16;
}
server {
listen 80;
server_name lblog.com;
root /www/blog/public;
autoindex off;
index index.php index.html index.htm;
access_log /dev/null;
error_log /var/log/nginx/nginx.lar.error.log warn;
error_page 500 502 503 504 /50x.html;
# Nginx处理静态资源(建议开启gzip),LaravelS处理动态资源。
location / {
try_files $uri @laravels;
}
location @laravels {
# proxy_connect_timeout 60s;
# proxy_send_timeout 60s;
# proxy_read_timeout 120s;
proxy_http_version 1.1;
proxy_set_header Connection "";
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Real-PORT $remote_port;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Host $http_host;
proxy_set_header Scheme $scheme;
proxy_set_header Server-Protocol $server_protocol;
proxy_set_header Server-Name $server_name;
proxy_set_header Server-Addr $server_addr;
proxy_set_header Server-Port $server_port;
# “swoole”是指upstream
proxy_pass http://swoole;
}
}
修改好后 cmd 进入dnmp目录下重启nginx
docker-compose restart nginx
这个时候网站继续访问http://lblog.com/
这个时候已经是laravels 在处理你的项目了,之后你就可以用laraves的多进程代码了
结束语
可以转载,但需要说明出处。
我花了两天摸出来的经验,两个小时的码字,写教程不容易。
部署过程中遇到问题欢迎留言,我不定时登录回复