https://github.com/wuding/note/blob/master/Cygwin.md
以前也似乎看到过 Cygwin 这个词,没在意。
这次是因为安装 vbot 需要安装 Swoole 但是只能 Linux
然后,就搜到了 在 Windows 下搭建 swoole 环境与测试
https://zh.wikipedia.org/wiki/Cygwin
Cygnus Solutions 开发
https://fanyi.baidu.com/#en/zh/Cygnus
天鹅座
https://www.cygwin.com/setup-x86_64.exe
-
Install from Internet
-
Root Directory
D:\ProgramFiles\Cygwin64
-
Local Package Directory
D:\Program_Data\Cygwin
-
Use System Proxy Settings
-
User URL: Add http://mirrors.163.com/cygwin/
-
Select Packages, View Full, Search:
gcc, gcc-g++, php, php-devel, autoconf, pcre-devel, wget, unzip
还要选择 php 扩展 fileinfo, gd, simplexml 因为 vbot 需要,Composer 要 json,
常见的也一并选上,phar 等等……
参考:
- Cygwin下安装Linux PHP环境和Swoole扩展并在PHPStorm中调试
- https://cygwin.com/mirrors.html
- https://cygwin.com/packages/
Windows XP 和 Server 2003 可以使用 Cygwin 2.5.2
下载 setup-x86-2.874.exe 或 setup-x86.exe
安装时跳过签名验证
setup-x86-2.874.exe -X
URL 使用下面之一:
- http://ctm.crouchingtigerhiddenfruitbat.org/pub/cygwin/circa/2016/08/30/104223
- http://cygwin-xp.portfolis.net/cygwin
参考:
- Setup Cygwin in Windows XP/2003
- Cygwin Time Machine, TL;DR
- Cygwin-XP
- Is it still possible to get Cygwin for XP?
点击打开 Cygwin64 Terminal
cd /home
# 下载
wget https://github.com/swoole/swoole-src/archive/v4.1.2.zip
# 解压
unzip swoole-src-4.1.2.zip
cd /home/swoole-src-4.1.2
# 输入命令
phpize
# 等待一会后执行:
./configure && make && make install
# 配置、编译、编译安装 swoole
会在 2 处生成 dll
- /home/swoole-src-4.1.2/modules/swoole.dll
- /lib/php/20160303/swoole.dll
使用命令: php -i | grep php.ini
,找到 php cli 使用的配置文件 php.ini 的路径
编辑
/etc/php.ini
extension=swoole.dll
查看是否安装成功
php -m
wget http://pear.php.net/go-pear.phar
php go-pear.phar
安装好后要编辑 Cygwin 全局环境变量
/etc/profile
PATH="/usr/local/bin:/usr/bin:/home/Benny/pear/bin"
检查配置是否正确
pear config-show
部分错误可以直接修改
pear config-set php_bin /usr/bin/php
配置文件在 /home/Benny/.pearrc
可以参照 /home/Benny/pear/share/pear/PEAR/Config.php
对应的配置变量名称修改
配置 PEAR 环境变量
D:\ProgramFiles\Cygwin64\Cygwin.bat
set PHP_PEAR_PHP_BIN=/usr/bin/php
set PHP_PEAR_INSTALL_DIR=/home/Benny/pear/share/pear
set PHP_PEAR_BIN_DIR=/usr/bin/php
set PHP_PEAR_SYSCONF_DIR=/etc
但是只有点击 bat 有效
修改 Cygwin 默认终端 mintty 环境变量
/home/Benny/.bash_profile
PHP_PEAR_PHP_BIN=/usr/bin/php
PHP_PEAR_INSTALL_DIR=/home/Benny/pear/share/pear
PHP_PEAR_BIN_DIR=/usr/bin/php
PHP_PEAR_SYSCONF_DIR=/etc
最后你可能还要修改 /home/Benny/pear/bin/ 目录下文件中的变量 $PHP
$INCDIR
$INCARG
参考:
pecl install redis
好几次都不行,即使安装了 igbinary
虽然生成了 redis.dll 但是 php 报错
最后还是手动下载源代码 https://github.com/phpredis/phpredis/archive/develop.zip 安装成功
参考:
安装 Cygwin 时选择包:lynx, openSSH 还有 apt-cyg 的依赖软件:wget, tar, gawk, bzip2 这些可能之前都已安装好了
使用 https://github.com/transcode-open/apt-cyg 官方安装方法:
lynx -source https://raw.githubusercontent.com/transcode-open/apt-cyg/master/apt-cyg > apt-cyg
install apt-cyg /bin
只是需要修改源文件链接,其实下载 apt-cyg 这个脚本文件放到 /bin 即可
参考:
apt-cyg install cygrunsrv
# 这个包好像没了,有 cygrunsrv 应该就可以了
apt-cyg install cygserver
apt-cyg install httpd
apt-cyg install httpd-mod_php7
测试 Apache
/usr/sbin/apachectl restart
配置 Apache
/etc/httpd/conf/httpd.conf
# 改 ip 和端口,避免冲突
Listen 127.0.0.1:8888
# 不设置的话可能报错
ServerName localhost:8888
# 启用 mpm 配置
Include conf/extra/httpd-mpm.conf
设置启动的进程数
httpd 的 mod_php 必须使用 prefork 模式的 MPM(Multi-Processing Modules),
默认应该已经配置好了,可以通过 /usr/sbin/apachectl -t -D DUMP_MODULES | grep mpm
来确认下。
默认情况下会开启很多 httpd 进程,可以参照下面配置减少
/etc/httpd/conf/extra/httpd-mpm.conf
# 修改数目
<IfModule mpm_prefork_module>
StartServers 1
MinSpareServers 1
MaxSpareServers 2
MaxRequestWorkers 3
MaxConnectionsPerChild 0
</IfModule>
安装服务
/etc/rc.d/init.d/httpd install
可能报错,如下
Installing httpd daemon: cygrunsrv: Error installing a service: OpenSCManager: Win32 error 5: access denied.
“以管理员身份运行“ Cygwin 即可
安装成功 Windows 服务 services.msc 会出现 CYGWIN Apache HTTP Server
启动服务
cygrunsrv -S httpd
又可能报错,如下
cygrunsrv: Error starting a service: QueryServiceStatus: Win32 error 1062:
删除 /var/run/httpd/httpd.pid 重试
测试 PHP
/srv/www/htdocs/phpinfo.php
<?php
phpinfo();
可能需要修改配置
/etc/httpd/conf.d/php7.conf
# 其实就是模块命名不同
#<IfModule mod_php7.c>
<IfModule php7_module>
/etc/httpd/conf.modules.d/mod_php7.conf
#<IfModule prefork.c>
<IfModule mpm_prefork_module>
参考:
参考:
- cygwin openssh for windows Cygwin + OpenSSH FOR Windows的安装配置
- 安装 cygwin sshd 服务遇到的问题
- 通过cygwin安装openSSH
- SecureCRT登录本地cygwin。
# 软件包
apt-cyg install mysql
apt-cyg install mysql-server
安装数据库
mysql_install_db
# 时间比较长
设置密码
/usr/bin/mysql_secure_installation
可能报错
Can't connect to local MySQL server through socket '/var/run/mysql.sock' (2 "No such file or directory")
解决方式
# 查找映像
ps aux | grep mysqld
# 设置 socket
mysql --socket=/var/run/mysql.sock
配置 MySQL
/etc/my.cnf.d/server.cnf
[mysqld]
port=3308
socket=/var/run/mysql.sock
datadir=/var/lib/mysql
#log-error=error.log
/etc/my.cnf.d/client.cnf
[client]
port=3308
#socket=/var/run/mysql.sock
启动 MySQL 服务
/bin/mysqld_safe &
关闭 MySQL 服务
mysqladmin -u root -p shutdown
# 输入前面设置的密码
安装为 Windows 服务
cygrunsrv --install mysqld --disp 'CYGWIN MySQL Server' --path /usr/bin/mysqld_safe --args '--datadir=/var/lib/mysql --pid-file=/var/lib/mysql/mysql.pid'
使用 mklink 做目录链接
D:\ProgramFiles\cygwin64\var\lib>mklink /D mysql K:\tmp\mysql
参考:
- mysqld_safe — MySQL Server Startup Script
- cygwin下 mysql安装
- Can’t connect MySQL server through socket的解决方法
- Ubuntu下出现Mysql error(2002)的解决方法
参考: