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
自身的输出(如启动信息)写入另一个日志文件- 最后的
&
:确保进程在后台运行,不阻塞终端
