本节介绍如何在 Ubuntu 系统上从零开始部署 SunPMS 招标采购系统。

1. 更新系统和安装必要工具

sudo apt update && sudo apt upgrade -y
sudo apt install -y curl wget git unzip software-properties-common

2. 安装 PHP 8.2 及扩展

# 添加 PHP PPA 源
sudo add-apt-repository ppa:ondrej/php -y
sudo apt update

# 安装 PHP 8.2 及必要扩展
sudo apt install -y php8.2-fpm php8.2-cli php8.2-mysql php8.2-redis \
  php8.2-xml php8.2-mbstring php8.2-curl php8.2-zip php8.2-gd \
  php8.2-fileinfo php8.2-sodium php8.2-pcntl php8.2-bcmath

# 安装 xlswriter 扩展
sudo pecl install xlswriter

3. 安装 Redis

sudo apt install -y redis-server
sudo systemctl enable redis-server
sudo systemctl start redis-server

4. 安装 MySQL

sudo apt install -y mysql-server-5.7
sudo systemctl enable mysql
sudo systemctl start mysql

# 初始化数据库
mysql -u root -p
CREATE DATABASE ecp_purchasing CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
CREATE USER 'ecp_user'@'localhost' IDENTIFIED BY 'your_password';
GRANT ALL PRIVILEGES ON ecp_purchasing.* TO 'ecp_user'@'localhost';
FLUSH PRIVILEGES;
EXIT;

5. 安装 Nginx

sudo apt install -y nginx
sudo systemctl enable nginx
sudo systemctl start nginx

6. 安装 Composer

curl -sS https://getcomposer.org/installer | php
sudo mv composer.phar /usr/local/bin/composer
sudo chmod +x /usr/local/bin/composer

7. 克隆项目代码

cd /var/www
sudo git clone https://gitee.com/ehewon/ecp-purchasing.git
cd ecp-purchasing
sudo composer install

8. 配置 Nginx

创建 Nginx 站点配置文件:

sudo nano /etc/nginx/sites-available/ecp-purchasing

添加以下配置:

server {
    listen 80;
    server_name your-domain.com;
    root /var/www/ecp-purchasing/public;
    index index.php index.html;

    # 路由重写
    location / {
        try_files $uri $uri/ /index.php?$query_string;
    }

    # PHP 处理
    location ~ \.php$ {
        fastcgi_pass unix:/run/php/php8.2-fpm.sock;
        fastcgi_index index.php;
        fastcgi_param SCRIPT_FILENAME $realpath_root$fastcgi_script_name;
        include fastcgi_params;
    }

    # WebSocket 代理
    location /ws {
        proxy_pass http://127.0.0.1:8282;
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection "Upgrade";
        proxy_set_header Host $host;
    }

    # 禁止访问隐藏文件
    location ~ /\. {
        deny all;
    }

    # 静态资源缓存
    location ~* \.(js|css|png|jpg|jpeg|gif|ico|svg|woff|woff2|ttf|eot)$ {
        expires 30d;
        add_header Cache-Control "public, immutable";
    }
}

启用站点配置:

sudo ln -s /etc/nginx/sites-available/ecp-purchasing /etc/nginx/sites-enabled/
sudo nginx -t
sudo systemctl reload nginx

9. 设置目录权限

sudo chown -R www-data:www-data /var/www/ecp-purchasing
sudo chmod -R 755 /var/www/ecp-purchasing
sudo chmod -R 775 /var/www/ecp-purchasing/storage
sudo chmod -R 775 /var/www/ecp-purchasing/bootstrap/cache

10. 启动服务

# 启动 WebSocket 服务
php /var/www/ecp-purchasing/bin/ecp-timer start -d
php /var/www/ecp-purchasing/bin/ecp-workman start -d
php /var/www/ecp-purchasing/bin/ecp-queue start -d

# 设置定时任务
crontab -e
# 添加以下行:
# * * * * * php /var/www/ecp-purchasing/artisan schedule:run >> /dev/null 2>&1
部署完成

完成以上步骤后,访问您的域名即可看到 SunPMS 系统。默认后台地址为 /admin