🎯 学习目标
完成本课程后,学习者将能够:
- 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 pull和git 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 push 或 git pull 时,Git 会自动知道要与 origin/master 进行同步。