cygwin+php教程(swoole扩展+redis扩展)

cygwin

1.下载cygwin安装程序 :在Windows上获得Linux的感觉

2. 打开安装包:setup-x86_64.exe

3.选择安装类型

|---------|-----------|
| 从互联网安装 | 首次安装 |
| 下载而不安装 | 仅下载软件包不安装 |
| 从本地目录安装 | 迁移程序时使用 |

4.选择安装目录

5.选择本地软件包目录(下载与安装的软件包目录,迁移程序时会用)

6.选择连接类型

7.选择下载站点

8.选择软件包

php 复制代码
    //软件包                版本选最高
    automake1.10
    gcc-g++
    gdb
    libpcre2-devel
    libzstd-devel
    mysql
    mysql-devel
    mysql-server
    nginx
    pcre
    pcre2
    php
    php-PEAR
    php-curl
    php-devel
    php-ftp
    php-json
    php-mysqli
    unzip
    wget

    //需要什么安装什么,搜索不到的如 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

php 复制代码
# 指定用来运行 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.html
        error_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

php 复制代码
[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 自身的输出(如启动信息)写入另一个日志文件
  • 最后的 &:确保进程在后台运行,不阻塞终端
相关推荐
bcbnb5 分钟前
怎么在 Windows 上架 iOS APP?签名 + 发布一文全懂
后端
掘金一周14 分钟前
只有 7 KB!前端圈疯传的 Vue3 转场动效神库!效果炸裂! | 掘金一周 8.7
前端·后端·ai编程
得物技术18 分钟前
Valkey 单点性能比肩 Redis 集群了?Valkey8.0 新特性分析|得物技术
大数据·数据库·redis
枣伊吕波18 分钟前
十一、请求响应-请求:简单参数和实体参数(简单实体参数与复杂实体参数)
java·spring boot·后端
苇柠19 分钟前
SpringMVC基础
java·后端·spring
白白白鲤鱼21 分钟前
Vue2项目—基于路由守卫实现钉钉小程序动态更新标题
服务器·前端·spring boot·后端·职场和发展·小程序·钉钉
苦学编程的谢32 分钟前
Spring_事务
java·后端·spring
倾听醉梦语40 分钟前
Redis作为MySQL缓存的完整指南:从原理到实战
数据库·redis·mysql·缓存
kebeiovo41 分钟前
C++实现线程池(3)缓存线程池
开发语言·c++
_代号00743 分钟前
MySQL梳理:其他
mysql