cygwin+php教程(swoole扩展+redis扩展)
cygwin
1.下载cygwin安装程序 :在Windows上获得Linux的感觉
2. 打开安装包:setup-x86_64.exe

3.选择安装类型
从互联网安装 | 首次安装 |
下载而不安装 | 仅下载软件包不安装 |
从本地目录安装 | 迁移程序时使用 |
4.选择安装目录
5.选择本地软件包目录(下载与安装的软件包目录,迁移程序时会用)
6.选择连接类型
7.选择下载站点
8.选择软件包
//软件包 版本选最高automake1.10gcc-g++gdblibpcre2-devellibzstd-develmysqlmysql-develmysql-servernginxpcrepcre2phpphp-PEARphp-curlphp-develphp-ftpphp-jsonphp-mysqliunzipwget//需要什么安装什么,搜索不到的如 php-swoole扩展 php-redis扩展 则需要下载源码编译
9.审查并确认更改
10.完成安装
11.cygwin64目录结构
12.打开桌面cygwin64
首次打开将会创建启动源文件 位于home文件夹下
swoole扩展
1.查看php版本
2.下载对应版本的swoole扩展源码
3.将扩展源码放在php扩展目录 地址:C:\cygwin64\usr\include\php\ext
4.cygwin打开swoole-v4.8.13并追加phpize扩展
5.配置构建和安装环境 ./configure
6.make构建
7.make install 安装
8.打开C:/cygwin64/etc/php.ini编辑最下面添加 extension=swoole.so
9.查看php扩展,安装完成
redis扩展
1.查看php版本
2.下载对应版本的redis扩展源码
3.将扩展源码放在php扩展目录 地址:C:\cygwin64\usr\include\php\ext
4.cygwin打开redis-4.2.0并追加phpize扩展
5.配置构建和安装环境 ./configure
6.make构建
7.make install 安装
8.打开C:/cygwin64/etc/php.ini编辑最下面添加 extension=redis.so
9.查看php扩展,安装完成
nginx+php-fpm
1.修改cygwin启动源文件C:/cygwin64/home/25848/.bashrc
2.重新打开桌面cygwin64
3.测试
4.niginx配置文件C:/cygwin64/etc/nginx/nginx.conf
# 指定用来运行 Nginx 进程的用户。通常注释掉以使用默认用户。
#user nobody;# 设置工作进程的数量,通常设置为服务器CPU核心数。
worker_processes 1;# 定义错误日志的位置和日志级别,默认情况下注释掉。
#error_log logs/error.log;
#error_log logs/error.log notice;
#error_log logs/error.log info;# 定义存储 Nginx 进程 ID 的文件位置。
#pid logs/nginx.pid;# 加载动态模块,这里包含所有在指定目录中的 .conf 文件。
include /usr/share/nginx/modules/*.conf;events {# 设置每个工作进程可以处理的最大连接数。worker_connections 1024;
}http {# 导入 MIME 类型映射文件,文件扩展名映射到 MIME 类型。include mime.types;# 设置默认的 MIME 类型。default_type application/octet-stream;# 定义日志格式,默认注释掉。#log_format main '$remote_addr - $remote_user [$time_local] "$request" '# '$status $body_bytes_sent "$http_referer" '# '"$http_user_agent" "$http_x_forwarded_for"';# 指定访问日志的位置和使用的日志格式。#access_log logs/access.log main;# 启用高效的文件传输方式。sendfile on;# 优化 TCP 包的传输,默认注释掉。#tcp_nopush on;# 设置连接保持的超时时间,单位为秒。#keepalive_timeout 0;keepalive_timeout 65;# 启用 gzip 压缩。#gzip on;server {# 监听端口号。listen 80;# 定义服务器名。server_name localhost;# 设置字符集,默认注释掉。#charset koi8-r;# 定义 access log 的位置和格式。#access_log logs/host.access.log main;location / {# 定义当前 location 的根目录。root html;# 定义默认的索引文件。index index.html index.htm;}# 自定义错误页面。#error_page 404 /404.html;# 将服务器错误页面重定向到静态页面 /50x.htmlerror_page 500 502 503 504 /50x.html;location = /50x.html {# 定义错误页面文件所在的根目录。root html;}# 将 PHP 脚本代理到监听在 127.0.0.1:80 上的 Apache。#location ~ \.php$ {# proxy_pass http://127.0.0.1;#}# 将 PHP 脚本传递给监听在 127.0.0.1:9000 的 FastCGI 服务器。#location ~ \.php$ {# root html;# fastcgi_pass 127.0.0.1:9000;# fastcgi_index index.php;# fastcgi_param SCRIPT_FILENAME /scripts$fastcgi_script_name;# include fastcgi_params;#}# 拒绝对 .htaccess 文件的访问,如果 Apache 的根目录与 nginx 的根目录相同时。#location ~ /\.ht {# deny all;#}}# 另一个虚拟主机配置示例,基于 IP、名称和端口的配置。#server {# listen 8000;# listen somename:8080;# server_name somename alias another.alias;# location / {# root html;# index index.html index.htm;# }#}# HTTPS 服务器的配置示例。#server {# listen 443 ssl;# server_name localhost;# ssl_certificate cert.pem; # SSL 证书文件# ssl_certificate_key cert.key; # SSL 证书密钥文件# ssl_session_cache shared:SSL:1m;# ssl_session_timeout 5m;# ssl_ciphers HIGH:!aNULL:!MD5;# ssl_prefer_server_ciphers on;# location / {# root html;# index index.html index.htm;# }#}
}
5.nginx前端网页部署C:/cygwin64/usr/share/nginx/html
MariaDB(mysql的一个分支)
1.创建数据库目录 mkdir -p /var/lib/mysql
2.设置权限 chmod 700 /var/lib/mysql
3.修改 C:/cygwin64/etc/my.cnf
[mysqld]
max_connections = 300 # 最大连接数设置为300(默认通常是151)
table_cache= 400 # 表缓存大小设置为400(影响能同时打开的表数量)
lower_case_table_names=1 # 表名不区分大小写(1表示不区分,0表示区分,2表示保留大小写但比较时不区分)
log-error=/var/log/mysql/error.log # 自定义错误日志路径
4.创建错误日志文件
5.初始化数据库 mysql_install_db --datadir=/var/lib/mysql
6.启动服务前台运行 mysqld_safe &
7.测试(无密码)
8.登录root用户 mysql -u root
9.设置密码 ALTER USER 'root'@'localhost' IDENTIFIED BY 'wuerluo0';
10.修改cygwin启动源文件C:/cygwin64/home/25848/.bashrc
11.重新打开桌面cygwin64
12.mysqld阻塞用户输入问题(输出重定向)
12.1丢弃
> /dev/null
:将标准输出(正常日志)丢弃2>&1
:将错误输出也重定向到标准输出(一起丢弃)- 最后的
&
:将进程放入后台运行,终端立即返回控制权
12.2 重定向(推荐)
--log-error=...
:指定mysqld
的错误日志路径(mysqld_safe
会自动将mysqld
的错误输出写入这里)> ... 2>&1
:将mysqld_safe
自身的输出(如启动信息)写入另一个日志文件- 最后的
&
:确保进程在后台运行,不阻塞终端