mac电脑ThinkAdmin安装与使用

53 阅读2分钟

1、创建项目

composer83是设置别名了,设置教程:mac电脑设置给冗长的命令设置别名

 composer83 create-project zoujingli/thinkadmin thinkadmin

或 如果没设置别名,

/usr/local/opt/php@8.3/bin/php $(which composer)  create-project zoujingli/thinkadmin thinkadmin

2、Nginx配置(HTTP)

server {
    listen       80;
    server_name  local.thinkadmin.com;  # 本地自定义域名(需修改 hosts 映射)
    root         /www/thinkadmin/public;  # 你的 ThinkAdmin public 目录绝对路径
    index        index.php index.html;

    # 字符集配置(避免中文乱码)
    charset utf-8;

    # 1. 伪静态规则:隐藏 index.php(核心)
    location / {
        # 优先匹配真实文件/目录,否则转发到 index.php
        try_files $uri $uri/ /index.php$is_args$args;
        # 解决 ThinkPHP PATH_INFO 兼容问题(可选,部分环境需要)
        if (!-e $request_filename) {
            rewrite  ^(.*)$  /index.php?s=$1  last;
            break;
        }
    }

    # 2. 禁止访问敏感目录(安全防护)
    location ~ ^/(application|config|runtime|extend|vendor)/ {
        deny all;  # 直接拒绝访问
        return 403;
    }

    # 3. PHP 解析配置(适配 PHP-FPM)
    location ~ \.php$ {
        root           /www/thinkadmin/public;  # 与上面 root 一致
        fastcgi_pass   127.0.0.1:9000;  # PHP-FPM 地址(默认端口 9000,若用 socket 则改为 unix:/tmp/php-cgi.sock)
        fastcgi_index  index.php;
        fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;  # 关键:指定 PHP 脚本路径
        # 传递 PATH_INFO 给 ThinkPHP(必须配置)
        fastcgi_split_path_info  ^((?U).+\.php)(/?.+)$;
        fastcgi_param  PATH_INFO  $fastcgi_path_info;
        fastcgi_param  PATH_TRANSLATED  $document_root$fastcgi_path_info;
        include        fastcgi_params;  # 引入系统默认 fastcgi 参数
    }

    # 4. 静态资源缓存(优化性能)
    location ~* \.(jpg|jpeg|png|gif|ico|css|js|woff2|woff|ttf)$ {
        expires 7d;  # 静态文件缓存 7 天
        add_header Cache-Control "public, max-age=604800";
        access_log off;  # 关闭静态资源日志
    }

    # 错误页面配置
    error_page  404              /404.html;
    error_page  500 502 503 504  /50x.html;
    location = /50x.html {
        root   html;
    }
}

3、线上生产环境(HTTPS + 性能优化)

server {
    listen       80;
    server_name  thinkadmin.com www.thinkadmin.com;  # 你的域名
    # 强制 HTTP 跳转到 HTTPS
    return 301 https://$host$request_uri;
}

server {
    listen       443 ssl;
    server_name  thinkadmin.com www.thinkadmin.com;
    root         /home/wwwroot/thinkadmin/public;  # 线上 public 目录路径
    index        index.php index.html;

    # HTTPS 配置(替换为你的证书路径)
    ssl_certificate      /usr/local/nginx/conf/ssl/thinkadmin.com.pem;  # 证书公钥
    ssl_certificate_key  /usr/local/nginx/conf/ssl/thinkadmin.com.key;  # 证书私钥
    # SSL 优化(禁用不安全协议/加密套件)
    ssl_protocols TLSv1.2 TLSv1.3;
    ssl_prefer_server_ciphers on;
    ssl_ciphers "EECDH+AESGCM:EDH+AESGCM:AES256+EECDH:AES256+EDH";
    ssl_session_timeout 1d;
    ssl_session_cache shared:SSL:10m;
    ssl_session_tickets off;

    # 字符集 + 跨域配置(若前后端分离需开启)
    charset utf-8;
    add_header Access-Control-Allow-Origin *;  # 允许所有域名跨域(生产建议指定具体域名)
    add_header Access-Control-Allow-Methods "GET,POST,PUT,DELETE,OPTIONS";
    add_header Access-Control-Allow-Headers "Content-Type,Authorization";

    # 1. 伪静态规则(同本地,核心不变)
    location / {
        try_files $uri $uri/ /index.php$is_args$args;
        if (!-e $request_filename) {
            rewrite  ^(.*)$  /index.php?s=$1  last;
            break;
        }
    }

    # 2. 禁止访问敏感目录 + 隐藏 .env 配置文件
    location ~ ^/(application|config|runtime|extend|vendor)/ {
        deny all;
        return 403;
    }
    location ~ /\.env {
        deny all;
        return 403;
    }

    # 3. PHP 解析配置(线上优化)
    location ~ \.php$ {
        root           /home/wwwroot/thinkadmin/public;
        fastcgi_pass   unix:/tmp/php-cgi.sock;  # 线上推荐用 socket(比端口更高效)
        fastcgi_index  index.php;
        fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;
        fastcgi_split_path_info  ^((?U).+\.php)(/?.+)$;
        fastcgi_param  PATH_INFO  $fastcgi_path_info;
        fastcgi_param  PATH_TRANSLATED  $document_root$fastcgi_path_info;
        include        fastcgi_params;
        # PHP 超时设置(避免长请求超时)
        fastcgi_connect_timeout 300;
        fastcgi_send_timeout 300;
        fastcgi_read_timeout 300;
    }

    # 4. 静态资源优化(防盗链 + 缓存)
    location ~* \.(jpg|jpeg|png|gif|ico|css|js|woff2|woff|ttf)$ {
        expires 30d;  # 线上缓存 30 天
        add_header Cache-Control "public, max-age=2592000";
        access_log off;
        # 防盗链(只允许自己域名引用静态资源)
        valid_referers none blocked thinkadmin.com www.thinkadmin.com;
        if ($invalid_referer) {
            return 403;
        }
    }

    # 5. Gzip 压缩(提升传输速度)
    gzip on;
    gzip_types text/plain text/css application/json application/javascript text/xml application/xml application/xml+rss text/javascript;
    gzip_comp_level 6;
    gzip_vary on;
    gzip_buffers 16 8k;
    gzip_min_length 1024;

    # 错误页面
    error_page  404              /404.html;
    error_page  500 502 503 504  /50x.html;
    location = /50x.html {
        root   html;
    }
}

设置完成后重启nginx,nginx -s reload