美文网首页
如何使用 Homestead 作为 thinkphp tp5 的

如何使用 Homestead 作为 thinkphp tp5 的

作者: fourn熊能 | 来源:发表于2018-08-20 16:11 被阅读603次

    这可能是迄今为止最优雅的解决方案了

    Homestead/scripts 目录下新建文件 serve-tp5.sh

    #!/usr/bin/env bash
    declare -A params=$6     # Create an associative array
    paramsTXT=""
    if [ -n "$6" ]; then
       for element in "${!params[@]}"
       do
          paramsTXT="${paramsTXT}
          fastcgi_param ${element} ${params[$element]};"
       done
    fi
    
    block="server {
        listen ${3:-80};
        listen ${4:-443} ssl http2;
        server_name .$1;
        root \"$2\";
    
        index index.html index.htm index.php;
    
        charset utf-8;
    
        location / {
            #try_files \$uri \$uri/ /index.php?\$query_string;
            if (!-e \$request_filename) {
               rewrite  ^(.*)$  /index.php?s=/\$1  last;
               #break;
            }
        }
    
        location = /favicon.ico { access_log off; log_not_found off; }
        location = /robots.txt  { access_log off; log_not_found off; }
    
        access_log off;
        error_log  /var/log/nginx/$1-error.log error;
    
        sendfile off;
    
        client_max_body_size 100m;
    
    
        location ~* ^(/images|/Static).+.(jpg|jpeg|css|gif|png|ico) {
            access_log              off;
        }
    
        location ~ \.php$ {
            fastcgi_split_path_info ^(.+\.php)(/.+)$;
            fastcgi_pass unix:/var/run/php/php7.1-fpm.sock;
            fastcgi_index index.php;
            include fastcgi_params;
            fastcgi_param  SCRIPT_FILENAME  \$document_root\$fastcgi_script_name;
            fastcgi_intercept_errors off;
            fastcgi_buffer_size 16k;
            fastcgi_buffers 4 16k;
            fastcgi_connect_timeout 300;
            fastcgi_send_timeout 300;
            fastcgi_read_timeout 300;
            include fastcgi_params;
        }
    
        location ~ /\.ht {
            deny all;
        }
    
        ssl_certificate     /etc/nginx/ssl/$1.crt;
        ssl_certificate_key /etc/nginx/ssl/$1.key;
    }
    "
    
    echo "$block" > "/etc/nginx/sites-available/$1"
    ln -fs "/etc/nginx/sites-available/$1" "/etc/nginx/sites-enabled/$1"
    

    Homestead.yaml 文件添加 type 设置

    sites:
        - map: domain.test
          to: /path
          type: tp5
    

    现在更新到最新的Homestead版本(大概6.3.0),官方自带了thinkphp类型

    sites:
        - map: domain.test
          to: /path
          type: thinkphp
    

    生成的配置文件如下:

    server {
        listen 80;
        listen 443 ssl http2;
        server_name .ndd.local;
        root "/home/vagrant/code/ndd";
    
        index index.html index.htm index.php;
    
        charset utf-8;
    
        location / {
            if (!-e $request_filename) {
                rewrite  ^(.*)$  /index.php?s=/$1  last;
                break;
            }
        }
    
    
    
        location = /favicon.ico { access_log off; log_not_found off; }
        location = /robots.txt  { access_log off; log_not_found off; }
    
        access_log off;
        error_log  /var/log/nginx/ndd.local-error.log error;
    
        sendfile off;
    
        client_max_body_size 100m;
    
        location ~ \.php$ {
            fastcgi_split_path_info ^(.+\.php)(/.+)$;
            fastcgi_pass unix:/var/run/php/php5.6-fpm.sock;
            fastcgi_index index.php;
            include fastcgi_params;
            fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
    
    
            fastcgi_intercept_errors off;
            fastcgi_buffer_size 16k;
            fastcgi_buffers 4 16k;
            fastcgi_connect_timeout 300;
            fastcgi_send_timeout 300;
            fastcgi_read_timeout 300;
        }
    
        location ~ /\.ht {
            deny all;
        }
    
        ssl_certificate     /etc/nginx/ssl/ndd.local.crt;
        ssl_certificate_key /etc/nginx/ssl/ndd.local.key;
    }
    

    相关文章

      网友评论

          本文标题:如何使用 Homestead 作为 thinkphp tp5 的

          本文链接:https://www.haomeiwen.com/subject/nveliftx.html