【PHP】Swoole:CentOS安装MySQL+Swoole
一、安装 CentOS 7
1. 下载系统
- 为什么安装 CentOS 7 呢 —— 因为精简。
- 首先打开 CentOS 的官网
- 下载 CentOS
- 在目录中选择 Older Versions(老版本)
- 点击唯一的超链接
- 这里有 CentOS 所有的版本,我选 7.9.2009
- 点击 isos
- 选择下载版本
2. 安装系统
点击新建虚拟机
典型安装,如果有计算机基础的话可以选自定义,没有就典型安装
选择刚刚下载的 iso 文件
注意这里把位置换成其他盘,如果只有一个系统盘就无所谓
这里它说建议 20 GB 那就不改了,下一步
点完成
3. 系统初始化
- 启动系统后,通过上下键,让白颜色选中第一个
- 等待几分钟,弹出语言选择界面,鼠标往下滚动,选择中文,然后点继续
- 提示先完成感叹号标记的内容,点一下那个选项
- 什么都不用动,点完成,会自动分区
- 点击开始安装,跳转到用户设置界面,点 ROOT 密码
- 输入两次密码,最好记录下来,忘了密码的话这个系统就报废了,输入完后点完成
- 然后不要动了,等几分钟,然后点击重启,安装完成
二、安装 PHP8.1
1. 使用 SSH 连接
- 虚拟机中不好复制粘贴,所以需要第三方软件使用 SSH 连接虚拟机,我这里使用 FinalShell
进入系统
输入
ip addr show
查看 IP 地址
如果没有 IP 地址就输入
sudo dhclient 网络适配器名
获取 IP
重新输入
ip addr show
查看 IP,就有 IP 了
我用的 FinalShell 连接,输入 IP、用户名、密码
但是每次重启都会重置 IP,所以还需要修改网络配置文件
把
ONBOOT
改成yes
,意思是开机自启动,然后保存
2. 更改镜像源
下载之前先把主机名固定下来,不然每次开机会变,修改完后重启。修改主机名参考:CentOS 修改主机名
修改成国内的阿里云镜像
sudo curl -o /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo sudo yum clean all sudo yum makecache
3. 安装 PHP8.1
- 安装 Remi 仓库
sudo yum install -y https://mirrors.aliyun.com/remi/enterprise/remi-release-7.rpm sudo yum install -y yum-utils
- 启用 PHP 8.1
sudo yum-config-manager --enable remi-php81
- 安装 PHP 8 和常用扩展
sudo yum install -y php php-cli php-fpm php-mysqlnd php-pdo php-mbstring php-xml php-gd php-opcache php-json
- 确认是否安装成功
php -v
- 前面四步没问题,那就没问题
三、安装 MySQL8
- 安装 MySQL 官方 Yum 仓库
sudo yum install -y https://dev.mysql.com/get/mysql80-community-release-el7-5.noarch.rpm sudo yum makecache fast
- 导入 MySQL 官方 GPG 密钥(可以先进行第3步安装,如果安装失败再导入)
sudo rpm --import https://repo.mysql.com/RPM-GPG-KEY-mysql-2023 sudo rpm --import https://repo.mysql.com/RPM-GPG-KEY-mysql
- 安装 MySQL 8.0
sudo yum install -y mysql-community-server
- 启动 MySQL 并设置开机启动
sudo systemctl start mysqld sudo systemctl enable mysqld
- 查看初始密码
sudo grep 'temporary password' /var/log/mysqld.log
- 安全初始化配置
sudo mysql_secure_installation
Do you wish to continue with the password provided?
您想继续使用提供的密码吗?
Remove anonymous users?
删除匿名用户?
Disallow root login remotely?
不允许远程root登录?
Remove test database and access to it?
删除测试数据库?
Reload privilege tables now?
现在重新加载权限表吗? - 登录测试
mysql -u root -p
- 防火墙开放 3306 端口
sudo firewall-cmd --permanent --add-port=3306/tcp sudo firewall-cmd --reload
- 允许远程访问
CREATE USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY '你的密码'; GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' WITH GRANT OPTION; FLUSH PRIVILEGES;
- 用 Navicat 测试连接,正常情况显示连接成功
四、安装 Swoole6
确保依赖环境
sudo yum install -y gcc gcc-c++ make autoconf php-devel php-pear
安装依赖库(该步骤可选,根据需求安装)
sudo yum install -y brotli brotli-devel openssl-devel libzstd libzstd-devel
安装 Swoole
sudo pecl install swoole
参数太多了,这里写一部分,其他参数的信息看官网
功能支持 是否建议开启 理由与说明 sockets ❌ 可不开启 用于原生 TCP/UDP 服务开发,v4.3.2 版本后 Swoole 内置的 Coroutine\Socket 可以完成大部分事情 openssl ✅ 根据需求 如果需要 HTTPS / wss 支持(输入 yes) mysqlnd ✅ 根据需求 如果使用 Swoole 的协程 MySQL 客户端,建议开启(输入 yes) curl ❌ 可不开启 通常不依赖 Swoole 中的 curl 支持 cares ❌ 可不开启 一般项目用不到高级 DNS 异步解析 brotli ✅ 可开启 默认为 yes,压缩支持,可保留 zstd ✅ 根据需求 高性能压缩算法,适合大数据量接口压缩,根据需求开启 PostgreSQL ❌ 根据需求 使用 pgsql 才需要开启 ODBC ❌ 基本不用 如果项目与 ODBC 数据库交互才需要 Oracle ❌ 根据需求 需要 Oracle 支持才开启 Sqlite ❌ 根据需求 基本不用,除非你有 sqlite 协程客户端需求 swoole thread support ❌ 不开启 需要 PHP ZTS 支持,通常不开启 iouring ✅ 根据需求 高级文件异步,普通项目不用 启用 Swoole 扩展
echo "extension=swoole.so" | sudo tee /etc/php.d/20-swoole.ini
验证是否安装成功,显示版本信息,说明安装成功
php --ri swoole
五、PHPStrom代码同步
- 本地开发(Windows 11)+ 远程运行(CentOS 7 虚拟机),本地与虚拟机之间的项目文件实时同步(本地写代码,虚拟机运行)。如果虚拟机性能足够可以用
Remote Development
,就不用这么麻烦
- 打开 PHPStorm,在顶部的菜单栏中选择
Tools/Deployment/Configuration...
- 添加远程连接(SFTP 类型)
输入服务器名字
添加服务器
测试服务器是否连接正常
选择服务器和项目目录路径,然后点击 Mappings 选项卡
选择本地项目路径(一般自动填写当前项目)和项目路径,然后点击 OK - 开启自动上传
六、PHPStorm连接远程终端
- 点击右下角 Terminal 面板,选择服务器
- 检测代码是否同步,下图可以看到同步成功
七、PHPStrom安装swoole插件
- 打开设置
- 搜索 Swoole IDE Helper,点击安装
八、安装 Redis
检查是否安装了依赖
rpm -q epel-release gcc jemalloc jemalloc-devel
把没有安装的安装上
sudo yum install -y jemalloc jemalloc-devel
安装 Redis
sudo yum install -y redis
启动 Redis 服务
sudo systemctl start redis sudo systemctl enable redis
查看运行状态
sudo systemctl status redis