高手项目:手把手带你构建AI办公应用,赋能企业数字化

🎯 学习目标

完成本课程后,学习者将能够:

  • Linux 同时运行多版本PHP(7.4、8.1)、源码安装PHP Swoole5扩展
  • 手把手从0完整部署一套属于自己的 AI+企业办公助手
  • Git/Gitee的简单通信,方便多人高效开发协作

一、Linux 同时运行多版本PHP

之前的服务器上已经运行了一个PHP7.4版本的服务,现在的需要PHP8.1版本,所以需要再同一个服务器部署多版本的PHP环境,使用Lnmp.org,官网安装命令,选择合适的版本进行安装,同时安装7.4和PHP8.1,多版本监听不同。

bash 复制代码
./install.sh mphp
#常用的php扩展使用下面的命令
./addons.sh

如果Lnmp安装Swoole扩展失败,可以使用源码安装,如果之后想安装什么扩展,就使用下面的方法,应该都是差不多的,提前安装扩展,不然程序运行不起来。

bash 复制代码
cd /root/lnmp2.2/src

# 下载并解压
wget https://github.com/swoole/swoole-src/archive/v5.1.1.tar.gz
tar -zxvf v5.1.1.tar.gz
cd swoole-src-5.1.1/

# 编译安装
/usr/local/php8.0/bin/phpize
./configure --with-php-config=/usr/local/php8.0/bin/php-config
make && make install

# 添加扩展配置
echo "extension=swoole.so" >> /usr/local/php8.0/etc/php.ini

# 重启 PHP-FPM
service php-fpm8.0 restart

二、 部署AI+企业办公助手

因为我本地同时运行php7.4 和 php8.1的环境所以需要指明8.0的版本的操作。下载源码,源码地址:gitee.com/ZhongBangKe...

  • 可选执行(PHP8.1),删除composer.lock文件和vendor目录,执行:composer install安装扩展
  • 可选执行:/usr/local/php8.1/bin/php artisan storage:link创建本地文件映射软链
  • 执行:/usr/local/php8.1/bin/php bin/laravels start -d启动swoole服务(默认端口20200)
  • 按照文档配置反向代理参考下面的Nginx反向代理参考文档
  • 按照安装步骤完成安装
  • 启动服务

这里需要说明的,我服务器上因为是同时运行7.4和8.1版本的php,所以在执行composer的时候需要进行指定路径,这个也可以在系统里设置环境变量,指定名称,出现INFO Discovering packages.就是按照成功了。

bash 复制代码
/usr/local/php8.1/bin/php /usr/local/bin/composer install

可以使用命令启动服务,最后会使用Supervisor管理器来管理,看到下面的页面就是启动成功了,具体运行的软件和版本信息。

bash 复制代码
+---------------------------+---------+
| Component                 | Version |
+---------------------------+---------+
| PHP                       | 8.1.28  |
| Swoole                    | 5.1.1   |
| LaravelS                  | 3.7.42  |
| Laravel Framework [local] | 9.52.21 |
+---------------------------+---------+
>>> Protocols
+----------------+--------+-------------------------------+----------------------+
| Protocol       | Status | Handler                       | Listen At            |
+----------------+--------+-------------------------------+----------------------+
| Main HTTP      | On     | Laravel Router                | http://0.0.0.0:20200 |
| Main WebSocket | On     | crmeb\socket\WebsocketHandler | ws://0.0.0.0:20200   |
+----------------+--------+-------------------------------+----------------------+

Nginx配置文件如下,反向代理监听20200端口的服务:

bash 复制代码
sudo cat << 'EOF' | sudo tee /usr/local/nginx/conf/vhost/crm.conf > /dev/null
server {
    listen       80;
    server_name  oa.work.com;
    root         /home/wwwroot/crm/public;

    location ~* .(php|jsp|cgi|asp|aspx)$ {
        proxy_pass http://127.0.0.1:20200;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header REMOTE-HOST $remote_addr;
    }

    location / {
        proxy_pass http://127.0.0.1:20200;
        proxy_http_version 1.1;
        proxy_read_timeout 360s;
        proxy_redirect off;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection "upgrade";
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header REMOTE-HOST $remote_addr;
        add_header X-Cache $upstream_cache_status;
        # Set Nginx Cache
        add_header Cache-Control no-cache;
        expires 12h;
    }
}
EOF

如果在安装过程中,读取配置文件遇到了一点小问题,清空缓存 && 重启服务,这点很重要,我是这样DeepSeek后解决的。

bash 复制代码
# 清除所有缓存
/usr/local/php8.1/bin/php artisan config:clear
/usr/local/php8.1/bin/php artisan cache:clear

# 如果之前有缓存配置,重新缓存
/usr/local/php8.1/bin/php artisan config:cache

# 重启 LaravelS 服务
/usr/local/php8.1/bin/php bin/laravels reload

# 或者完全重启
/usr/local/php8.1/bin/php bin/laravels stop
/usr/local/php8.1/bin/php bin/laravels start

三、服务添加到Supervisor

刚才的部署是服务启动,但是更推荐的方式是放置在 Supervisor管理器中统一管理,添加配置文件,主要是command和环境变量,端口和配置里的要保持一致。

bash 复制代码
sudo vim /etc/supervisor/conf.d/laravel-swoole.conf
bash 复制代码
[program:laravel-swoole]
; 命令路径,需替换为你的项目实际路径
command=/usr/local/php8.1/bin/php /home/wwwroot/crmv2/bin/laravels start
; 项目根目录,需替换为你的项目实际路径
directory=/home/wwwroot/crmv2
; 运行队列的用户(根据你的 Web 服务器用户设置)
user=www
; 自动启动
autostart=true
; 程序意外退出时自动重启
autorestart=true
; 启动重试次数
startretries=3
; 日志输出配置
redirect_stderr=true
stdout_logfile=/var/log/laravel-swoole.log
; 日志文件大小限制
stdout_logfile_maxbytes=10MB
; 日志文件备份数量
stdout_logfile_backups=10
; 进程启动超时时间
startsecs=5
; 停止信号
stopsignal=INT
; 停止等待时间
stopwaitsecs=60
; 环境变量
environment=LARAVELS_LISTEN_IP="0.0.0.0",LARAVELS_LISTEN_PORT="20200"
bash 复制代码
# 重新读取配置文件
sudo supervisorctl reread
# 更新配置
sudo supervisorctl update
# 启动队列进程
sudo supervisorctl start laravel-swoole
# 查看进程状态
sudo supervisorctl status laravel-swoole
#查看状态
# sudo supervisorctl status
laravel-swoole                   STARTING  
think-queue                      STARTING  

# 查看端口是否已监听
netstat -tulpn | grep 20200

四、Git/Gitee简单通信,多人远程协作

在成功运行后,我们应该把代码推送到远程仓库,以方便多人在项目中的协作,在github/gitee上进行管理,首先在gitee新建一个仓库,进行配置和设置远程仓库,先全局设置身份。

bash 复制代码
git config --global user.name "stark张宇"
git config --global user.email "stark@126.com"

设置远程仓库和默认仓库、进行Tag标签,Tag的好处在于即做了一下记录,又可以追溯代码。

bash 复制代码
git remote add origin git@gitee.com:star-zhang-yu/huashuiya_oa_api.git
git push -u origin "master"

# 标记发布版本Tag 
# 创建附注标签(包含详细信息)
git tag -a v0.0.1 -m "划水鸭OA助手 版本0.0.1发布"

# 推送所有本地标签到远程
git push origin --tags

#获取所有远程标签到本地
git fetch --tags

#查看本地和远程标签
# 查看本地标签
git tag

# 查看远程标签
git ls-remote --tags origin

# 查看标签详情(包括提交信息)
git tag -l -n

有时候我们为了开发和协作的时候方便,还可以联结本地和远程仓库的分支,在执行git pullgit push的时候自己操作。

bash 复制代码
# 首先检查当前分支的追踪关系
git branch -vv
git push -u origin master

如果是work分支我们也可以先切换到分支,进行关联

bash 复制代码
git checkout work
git branch --set-upstream-to=origin/work work

设置完成后,每次在 master 分支上执行 git pushgit pull 时,Git 会自动知道要与 origin/master 进行同步。

相关推荐
KEEN的创享空间2 小时前
AI编程从0到1之10X提效(Vibe Coding 氛围式编码 )09篇
openai·ai编程
AlienZHOU3 小时前
为 AI Agent 编写高质量 Skill:Claude 官方指南
agent·ai编程·claude
恋猫de小郭4 小时前
移动端开发稳了?AI 目前还无法取代客户端开发,小红书的论文告诉你数据
前端·flutter·ai编程
KaneLogger5 小时前
【翻译】打造 Agent Skills 的最佳实践
agent·ai编程·claude
王小酱5 小时前
Everything Claude Code 文档
openai·ai编程·aiops
雮尘6 小时前
如何在非 Claude IDE (TARE、 Cursor、Antigravity 等)下使用 Agent Skills
前端·agent·ai编程
刘贺同学6 小时前
Day12-龙虾哥打工日记:OpenClaw 子 Agent 到底看到了什么?
aigc·ai编程
程序员鱼皮8 小时前
离大谱,我竟然在 VS Code 里做了个视频!
github·aigc·ai编程
Kayshen10 小时前
我用纯前端逆向了 Figma 的二进制文件格式,实现了 .fig 文件的完整解析和导入
前端·agent·ai编程