高手项目:手把手带你构建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 进行同步。

相关推荐
昭昭日月明5 小时前
🚀 告别手动调试,Chrome DevTools MCP 推荐
ai编程·mcp
紫穹6 小时前
010.ConversationChain 一键记忆链:字幕版实现与暴躁助手实战
后端·ai编程
飞哥数智坊6 小时前
打造我的 AI 开发团队(四):在 Cursor 里跑通 bmad
人工智能·ai编程
JaguarJack8 小时前
开发者必看的 15 个困惑的 Git 术语(以及它们的真正含义)
后端·php·laravel
Goboy16 小时前
用Trae IDE+GLM4.6 API 搭了个小红书文案生成器,新手也能秒出爆款!附保姆级教程
llm·ai编程·trae
rengang6619 小时前
AI辅助需求分析:AI大模型将自然语言需求转化为技术规格
人工智能·需求分析·ai编程·1024程序员节·ai智能体编程
Yiii_x1 天前
如何使用IntelliJ IDEA进行Java编程
java·课程设计·ai编程
Sailing1 天前
5分钟搞定 DeepSeek API 配置:从配置到调用一步到位
前端·openai·ai编程
熙客1 天前
Cursor:开发常用工具网站
ai·ai作画·ai编程·ai写作