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 自身的输出(如启动信息)写入另一个日志文件
  • 最后的 &:确保进程在后台运行,不阻塞终端
相关推荐
一只叫煤球的猫2 小时前
写代码很6,面试秒变菜鸟?不卖课,面试官视角走心探讨
前端·后端·面试
bobz9652 小时前
tcp/ip 中的多路复用
后端
bobz9653 小时前
tls ingress 简单记录
后端
你的人类朋友4 小时前
什么是OpenSSL
后端·安全·程序员
bobz9654 小时前
mcp 直接操作浏览器
后端
程序新视界5 小时前
MySQL中什么是回表查询,如何避免和优化?
mysql
前端小张同学6 小时前
服务器部署 gitlab 占用空间太大怎么办,优化思路。
后端
databook7 小时前
Manim实现闪光轨迹特效
后端·python·动效
武子康7 小时前
大数据-98 Spark 从 DStream 到 Structured Streaming:Spark 实时计算的演进
大数据·后端·spark
该用户已不存在8 小时前
6个值得收藏的.NET ORM 框架
前端·后端·.net