PHP笔记 https://www.phpnote.cc 专注PHP教程 Sat, 30 May 2020 08:05:07 +0000 zh-CN hourly 1 https://wordpress.org/?v=5.5.3 nginx反向代理swoole配置性能优化 https://www.phpnote.cc/nginx-proxy-swoole https://www.phpnote.cc/nginx-proxy-swoole#respond Sat, 25 Apr 2020 10:19:11 +0000 https://www.phpnote.cc/?p=1396 涛哥在用swoole进行压力测试时,在nginx的error.log发现了一些警报,诸如:

2020/04/25 12:08:32 [alert] 20768#0: *137363 socket() failed (24: Too many open files) while connecting to upstream, client: 127.0.0.1, server: www.kydbk-admin.com, request: "GET /api/user HTTP/1.1", upstream: "http://127.0.0.1:1215/api/user", host: "www.kydbk-admin.com"
2020/04/25 12:08:32 [alert] 20768#0: *137439 setsockopt(TCP_NODELAY) failed (22: Invalid argument) while keepalive, client: 127.0.0.1, server: 0.0.0.0:80

这是因为访问量的增大,相应nginx连接数,以及打开的文件数,nginx.conf是需要调整的

#涛哥的mac上nginx 1.17.10配置
#user  nobody;
worker_processes  auto;
#定义了nginx对外提供web服务时的worker进程数。最优值取决于许多因素,包括(但不限于)CPU核的数量、存储数据的硬盘数量及负载模式。不能确定的时候,将其设置为可用的CPU内核数将是一个好的开始(设置为“auto”将尝试自动检测它)
worker_rlimit_nofile 65535;
#更改worker进程的最大打开文件数限制。如果没设置的话,这个值为操作系统的限制。设置后你的操作系统和Nginx可以处理比“ulimit -a”更多的文件,所以把这个值设高,这样nginx就不会有“too many open files”问题了

#error_log  logs/error.log;
#error_log  logs/error.log  notice;
#error_log  logs/error.log  info;

#pid        logs/nginx.pid;

events {
    use kqueue;
    #use 设置用于复用客户端线程的轮询方法。如果你使用Linux 2.6+,你应该使用epoll。如果你使用BSD如mac,你应该使用kqueue。
    multi_accept on;
    #告诉nginx收到一个新连接通知后接受尽可能多的连接
    worker_connections  65535;
    #设置可由一个worker进程同时打开的最大连接数
}

http {
    include       mime.types;
    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_nopush     on;
    #让nginx在一个数据包中发送所有的头文件,而不是一个一个单独发
    server_tokens   off;
    #可以关闭在错误页面中的nginx版本数字,这样对于安全性是有好处的

    #keepalive_timeout  0;
    keepalive_timeout  65;

更多nginx优化
nginx反向代理  https://blog.csdn.net/qq_42030417/article/details/83185809
高并发之 Nginx 优化  http://lzly216.com/article/nginx_high
nginx转发swoole以及nginx负载  https://www.cnblogs.com/phpshen/p/9166104.html
Nginx性能优化指南 https://www.linuxidc.com/Linux/2015-10/124365.htm
仔细看参数–NGINX之tcp_nodelay https://www.cnblogs.com/MrVolleyball/p/10972166.html
Nginx 作为反向代理优化要点proxy_buffering https://blog.csdn.net/cymm_liu/article/details/76667153
Nginx反向代理+Nginx性能优化配置详解 https://blog.csdn.net/Kangshuo2471781030/article/details/79194973
更多待涛哥实践总结…

转载请注明:PHP笔记 » nginx反向代理swoole配置性能优化

]]>
https://www.phpnote.cc/nginx-proxy-swoole/feed 0
laravel安装swoole扩展性能提升几十倍wrk压测 https://www.phpnote.cc/laravel-swoole-wrk https://www.phpnote.cc/laravel-swoole-wrk#respond Tue, 21 Apr 2020 01:09:08 +0000 https://www.phpnote.cc/?p=1388 背景:提升laravel的api接口并发性能
涛哥mac硬件cpu2核8g内存,使用wrk来进行压力测试,常用的压测工具诸如ab,wrk等

一、wrk压测工具

wrk -t4 -c200 -d30s –latency http://www.kydbk-admin.com/api/user

使用4个线程运行30秒,200个http并发

# 涛哥总结的wrk命令参数说明
-c, --connections: 总的http并发连接数(每个线程处理的连接数=总连接数/线程数)
-d, --duration:    测试的持续时间,如2s(2second),2m(2minute),2h(hour),默认为s
-t, --threads:     需要执行的线程总数,默认为2,一般线程数不宜过多. 核数的2到4倍足够了. 多了反而因为线程切换过多造成效率降低
-s, --script:      执行Lua脚本,这里写lua脚本的路径和名称
-H, --header:      需要添加的头信息, 比如. "User-Agent: wrk"
    --latency:     显示延迟统计信息
    --timeout:     http超时时间
#------------------------------------------------------------------------
返回结果
Latency:响应时间
Req/Sec:每个线程每秒钟的执行的连接数
Avg:平均
Max:最大
Stdev:标准差
+/- Stdev: 正负一个标准差占比
Requests/sec:每秒请求数(也就是QPS),等于总请求数/测试总耗时
Latency Distribution,如果命名中添加了—latency就会出现相关信息

二、laravel6安装swoole扩展包

swoole扩展包:composer require swooletw/laravel-swoole
把vendor/swooletw/laravel-swoole/config中swoole_http.php和swoole_websocket.php复制到laravel的config目录中,根据需要修改配置
If using Lumen, append the following line to bootstrap/app.php:
$app->register(SwooleTW\Http\LumenServiceProvider::class);

三、安装swoole前后laravel的api接口性能对比

测试前提:使用4个线程运行30秒,200个http并发,对本地后端相同api接口进行测试

未安装swoole前:

 

 

 

 

 

 

 

安装swoole前,接口的QPS为每秒41个

安装swoole后:

 

 

 

 

 

 

 

安装swoole后,接口的QPS为每秒540个,并发性能提升了几十倍

nginx反向代理后有性能损耗,ip访问接口可达上万QPS
更多swoole实践教程待涛哥总结分享…

转载请注明:PHP笔记 » laravel安装swoole扩展性能提升几十倍wrk压测

]]>
https://www.phpnote.cc/laravel-swoole-wrk/feed 0
webpack工程化实践总结 https://www.phpnote.cc/webpack https://www.phpnote.cc/webpack#respond Thu, 09 Apr 2020 13:46:33 +0000 https://www.phpnote.cc/?p=1385 涛哥最近研究webpack和vue也有一段时间了,写篇日志总结下:
使用淘宝的npm镜像安装

npm install -g cnpm --registry=https://registry.npm.taobao.org

一、Npm常用操作

1、npm init -y
# 初始化npm生成package.json  -y是为了不让他提很多问题让我们回复。
2、npm i 包名称 
# 安装对应包名称的插件  i就是install的缩写
# 安装包的时候,对应的信息会写到package.json里面。当node_modeles被删除时,要找回来,可以根据这个json里面的信息,重新安装下载:
使用npm i命令,npm i后面什么都不加,表示把所有库重新安装。
3、npm uninstall 包名称
# 删除对应包名称依赖,对应插件会在node_modules内移除,package.json的dependencies内对应的依赖也会移除。
4、npm update 包名称
# 指定包更新到最新版,也可以指定版本号 如:npm update jquery@3.0.0
5、查看安装包的版本信息
# 比如npm info webpack
6、npm i -s与-d的区别
# npm i module_name -S 等同于 npm install module_name --save
# 写入package.json的 dependencies 对象中,用于生产环境
# npm i module_name -D 等同于 npm install module_name --save-dev
# 写入package.json的 devDependencies 对象中,用于开发环境

二、初始化项目

# 创建目录并且进入
mkdir vue-project-name
# 初始化  生成package.json
npm init -y
# 安装 webpack 和 webpack-cli到开发依赖
npm i webpack --save-dev
npm i webpack-cli --save-dev
# 涛哥总结的一句话命令
mkdir vue-project-name && cd vue-project-name && npm init -y && npm i webpack webpack-cli -D

报错解决办法

报错一:NPM Error:gyp: No Xcode or CLT version detected!

# mac上报错解决办法
$ sudo rm -rf $(xcode-select -print-path)
$ xcode-select --install

报错二:TypeError: CleanWebpackPlugin is not a constructor

# 正确的写法
const {CleanWebpackPlugin} = require('clean-webpack-plugin');

output: {
    path: path.resolve(__dirname, '../dist'),
    filename: '[name].[hash].js'
}

plugins: [
    new CleanWebpackPlugin(),
]

三、webpack配置结构

 

 

转载请注明:PHP笔记 » webpack工程化实践总结

]]>
https://www.phpnote.cc/webpack/feed 0
ElasticSearch最新版本安装配置及PHP中使用 https://www.phpnote.cc/elasticsearch-php https://www.phpnote.cc/elasticsearch-php#respond Fri, 29 Nov 2019 02:52:43 +0000 https://www.phpnote.cc/?p=1348 官方网站:https://www.elastic.co/
ElasticSearch下载地址:https://www.elastic.co/cn/downloads/elasticsearch
Mac homebrew安装使用教程 https://www.elastic.co/guide/en/elasticsearch/reference/7.4/brew.html
Linux and MacOS安装教程  https://www.elastic.co/guide/en/elasticsearch/reference/7.4/targz.html

一、ElasticSearch及插件安装、分布式安装

ElasticSearch插件
1、elasticsearch-head
A web front end for an Elasticsearch cluster
https://github.com/mobz/elasticsearch-head

问题一:
mac安装elasticsearch-head到node install时报错,删除已经存在的rm -rf elasticsearch-head 重新下载包,进入cd elasticsearch-head   执行npm cache clean –force
误的原因是install的过程中有过异常终止或按过ctrl + c 。 删除install的缓存即可解决

问题二:
安装完elasticsearch-head  访问http://127.0.0.1:9100/  提示未连接,需要解决与ElasticSearch跨域问题

#mac中路径是这个,其它系统查阅文档
vi /usr/local/etc/elasticsearch/elasticsearch.yml

//最末增加
http.cors.enabled: true
http.cors.allow-origin: "*"

再启动ElasticSearch以及elasticsearch-head访问即可

#mac中路径是这个,其它系统查阅文档
ElasticSearch
#进入bin目录,设置后台运行
cd /usr/local/var/homebrew/linked/elasticsearch-full/bin
./elasticsearch -d 
elasticsearch-head
#进入目录
cd elasticsearch-head
npm run start

ElasticSearch分布式安装布署

#master节点
#修改es配置 vi /usr/local/etc/elasticsearch/elasticsearch.yml
#设置master节点
http.cors.enabled: true
http.cors.allow-origin: "*"
#如果是用brew安装的,刚需要修改配置里已经存在的cluster.name值
cluster.name: sam

node.name: master
node.master: true

network.host: 172.0.0.1
#保存后,杀掉原进程后重启

创建es_slave文件夹,把ElasticSearch解压包复制两个,分别为es_slave1 es_slave2,修改config/elasticsearch.yml配置,启动节点

slave1节点

cluster.name: sam
node.name: slave1

network.host: 127.0.0.1
http.port: 9201

discovery.zen.ping.unicast.hosts: ["127.0.0.1"]

slave2节点

cluster.name: sam
node.name: slave2

network.host: 127.0.0.1
http.port: 9202

discovery.zen.ping.unicast.hosts: ["127.0.0.1"]

二、ElasticSearch在php中基本操作

https://blog.csdn.net/achuo/article/details/87865141
Elasticsearch增、删、改、查操作深入详解
https://blog.csdn.net/laoyang360/article/details/51931981

更多待涛哥实践总结…

转载请注明:PHP笔记 » ElasticSearch最新版本安装配置及PHP中使用

]]>
https://www.phpnote.cc/elasticsearch-php/feed 0
Easyswoole/swoole安装布署及使用 https://www.phpnote.cc/easyswoole-swoole https://www.phpnote.cc/easyswoole-swoole#respond Fri, 15 Nov 2019 03:18:57 +0000 https://www.phpnote.cc/?p=1371 安装之前可以把composer源切换到阿里云,这样安装快些

composer config -g repo.packagist composer https://mirrors.aliyun.com/composer/

一、php的swoole扩展安装

swoole官方网站 https://www.swoole.com/

pecl install swoole

关于 Swoole 安装配置选项:(特别注意:如果有些扩展没安装,yes之后后面会报错)

#php笔记 https://www.phpnote.cc
// 是否启用 PHP Sockets 支持
// 如果你需要用 PHP 编写 Sockets 服务,可以启用此项。
enable sockets supports? [no] : yes
// 是否启用 OpenSSL 支持
// 是否启用 SSL 加密,如果你是通过 Swoole 提供对外的 HTTPS 服务,则需要启用此项。
// 我的 Mac 是本地开发用,所以不启用。
enable openssl support? [no] : no
// 是否启用 HTTP2 支持
// 了解 HTTP2 新特性 https://zh.wikipedia.org/wiki/HTTP/2
enable http2 support? [no] : yes
// 是否启用异步 Redis 支持
// Swoole 实现了一套支持异步的 Redis 服务端框架
// https://wiki.swoole.com/wiki/page/p-redis_server.html
enable async-redis support? [no] : yes
// 是否启用 MySQL 原生支持
enable mysqlnd support? [no] : yes

安装成功后,查看php.ini中是否加入extension=swoole.so ,没有则手动加入。可通过php -m查看是否已安装swoole模块,或者phpinfo(),phpinfo中没有重启php  brew services restart php

二、安装easyswoole

官方网站:https://www.easyswoole.com/

创建项目目录,保证项目目录有可写入权限,cd进该目录

composer require easyswoole/easyswoole=3.x
php vendor/easyswoole/easyswoole/bin/easyswoole install

中途没有报错的话,启动和使用框架

#php笔记 https://www.phpnote.cc
#启动框架

#开发模式
php easyswoole start
#此时可以访问http://localhost:9501看到框架的欢迎页面,表示框架已经安装成功

#生产环境(守护模式)
php easyswoole start --d
#注意是两个 -

#服务停止
php easyswoole stop
注意,守护模式下才需要stop,不然control+c或者是终端断开就退出进程了

#服务热重启
php easyswoole reload
#注意,守护模式下才需要reload,不然control+c或者是终端断开就退出进程了,此处为热重启,可以用于更新worker start后才加载的文件(业务逻辑),主进程(如配置文件)不会被重启。

#服务重新启动
php easyswoole restart
#此处逻辑为,先stop,再启动服务。
#由于它是进程的,代码上传后必须服务重启,代码才能生效,这个并不像我们传统的写法,代码保存后就生效

更多待涛哥实践总结…

转载请注明:PHP笔记 » Easyswoole/swoole安装布署及使用

]]>
https://www.phpnote.cc/easyswoole-swoole/feed 0
mac安装mongodb4.2及php7.2的mongodb扩展 https://www.phpnote.cc/mac-mongodb42-php72 https://www.phpnote.cc/mac-mongodb42-php72#respond Sun, 29 Sep 2019 12:34:49 +0000 https://www.phpnote.cc/?p=1340 官方mac安装mongodb方法:https://docs.mongodb.com/manual/tutorial/install-mongodb-on-os-x/#tap-the-mongodb-homebrew-tap

安装mongodb4.2

1、终端添加自定义的mongodb第三方 https://github.com/mongodb/homebrew-brew

brew tap mongodb/brew

2、安装mongodb4.2

brew install mongodb-community@4.2

3、运行mongodb4.2

brew services start mongodb-community@4.2

4、使用brew安装好的MongoDB,默认会在如下位置创建相关文件

the configuration file (/usr/local/etc/mongod.conf)
the log directory path (/usr/local/var/log/mongodb)
the data directory path (/usr/local/var/mongodb)

5、启动mongodb

//启动

brew services start mongodb-community@4.2

//关闭

brew services stop mongodb-community@4.2

6、连接并使用mongodb,使用sell命令
mongo

7、常用mongodb操作

查看数据库 show dbs
创建数据库 use test
统计数据信息 db.stats()
指定集合写入数据 db.user.insert({name:”phpnote.cc”,password:”123456″})
查找集合中数据db.user.find()

8、安装php扩展mongodb

which is pecl
sudo /usr/local/bin/pecl install mongodb
find / -name php.ini
查看是否已经有了,没有加入:extension=mongodb.so
重启服务即可。

验证mongodb扩展是否安装成功:php -m | grep mongodb

9、mac上mongodb管理工具

https://github.com/remysaissy/mongodb-macosx-prefspane

10、mac上各类数据库管理工具 Navicat Premium

使用方法访问 https://navicat.com.cn/company/aboutus/blog/257-working-with-documents-in-navicat-for-mongodb.html

11、MongoDB 默认没有设置用户名密码,需要我们自己设置。简单来说首先设置一个管理所有用户角色的用户admin,然后根据需要为此用户添加其他角色即可。

一、设置一个管理所有用户角色的用户admin

use admin
db.createUser(
  {
    user: "root",
    pwd: "root",
    roles: [ { role: "userAdminAnyDatabase", db: "admin" }, "readWriteAnyDatabase" ]
  }
)

use admin  //如果不重启可以,可以不用输入这句
db.auth("root", "root" )

返回1表示成功
二、创建指定数据库用户

use test
db.createUser(
  {
    user: "myTester",
    pwd:  passwordPrompt(),   // or cleartext password
    roles: [ { role: "readWrite", db: "test" },
             { role: "read", db: "reporting" } ]
  }
)

更多待涛哥总结分享

 

转载请注明:PHP笔记 » mac安装mongodb4.2及php7.2的mongodb扩展

]]>
https://www.phpnote.cc/mac-mongodb42-php72/feed 0
mac brew切换到国内的源 https://www.phpnote.cc/mac-brew-source https://www.phpnote.cc/mac-brew-source#respond Fri, 30 Aug 2019 07:57:15 +0000 https://www.phpnote.cc/?p=1405 切换到国内源

# 替换brew.git:
 cd "$(brew --repo)"
# 中国科大:
 git remote set-url origin https://mirrors.ustc.edu.cn/brew.git
# 清华大学:
 git remote set-url origin https://mirrors.tuna.tsinghua.edu.cn/git/homebrew/brew.git

# 替换homebrew-core.git:
 cd "$(brew --repo)/Library/Taps/homebrew/homebrew-core"
# 中国科大:
 git remote set-url origin https://mirrors.ustc.edu.cn/homebrew-core.git
# 清华大学:
 git remote set-url origin https://mirrors.tuna.tsinghua.edu.cn/git/homebrew/homebrew-core.git

# 替换homebrew-bottles:
# 中国科大:
 echo 'export HOMEBREW_BOTTLE_DOMAIN=https://mirrors.ustc.edu.cn/homebrew-bottles' >> ~/.bash_profile
 source ~/.bash_profile
# 清华大学:
 echo 'export HOMEBREW_BOTTLE_DOMAIN=https://mirrors.tuna.tsinghua.edu.cn/homebrew-bottles' >> ~/.bash_profile
 source ~/.bash_profile

# 应用生效:
 brew update

切换到官方源

# 重置brew.git:
 cd "$(brew --repo)"
 git remote set-url origin https://github.com/Homebrew/brew.git

# 重置homebrew-core.git:
 cd "$(brew --repo)/Library/Taps/homebrew/homebrew-core"
 git remote set-url origin https://github.com/Homebrew/homebrew-core.git

替换Homebrew Bottles源

官方预先编译好的软件会被装在一个bottle里直接下载解压到系统里,无需本地编译。 Bottle是放在bintray上面的,在国内依然不快。可以通过换bottle的源地址来加速bottle的下载

对于bash用户

echo 'export HOMEBREW_BOTTLE_DOMAIN=https://mirrors.ustc.edu.cn/homebrew-bottles' >> ~/.bash_profile
source ~/.bash_profile

对于zsh用户

echo 'export HOMEBREW_BOTTLE_DOMAIN=https://mirrors.ustc.edu.cn/homebrew-bottles' >> ~/.zshrc
source ~/.zshrc

解释一下,安装方法就是替换HOMEBREW_BOTTLE_DOMAIN这个环境变量,所以把export这一行加入到配置文件中,再用source命令让它立即生效就可以了

https://github.com/Homebrew/brew

https://github.com/protocolbuffers/protobuf/releases
brew install protobuf  protoc –version
brew install cmake     cmake –version
https://www.jianshu.com/p/24ac2300bf1d
深入 ProtoBuf  https://www.jianshu.com/p/a24c88c0526a

 

转载请注明:PHP笔记 » mac brew切换到国内的源

]]>
https://www.phpnote.cc/mac-brew-source/feed 0
MAC上Navicat数据库管理工具使用 https://www.phpnote.cc/mac-navicat-tool https://www.phpnote.cc/mac-navicat-tool#respond Wed, 21 Aug 2019 14:03:03 +0000 https://www.phpnote.cc/?p=1344 MAC上Navicat数据库管理工具离线激活

https://github.com/DoubleLabyrinth/navicat-keygen/blob/mac/README.zh-CN.md

一、安装必要的库

php笔记 https://www.phpnote.cc
$ brew install openssl
$ brew install capstone
$ brew install keystone
$ brew install rapidjson
$ brew install libplist

二、Clone mac 分支,并编译keygen和patcher

$ git clone -b mac --single-branch https://github.com/DoubleLabyrinth/navicat-keygen.git
$ cd navicat-keygen
$ make all

编译完成后你会在 bin/ 文件夹下看到两个可执行文件:

$ ls bin/
navicat-keygen    navicat-patcher

三、使用Keygen

移除所有Navicat在 Keychain Access.app (即钥匙链)中保存的连接,如果有的话。

你可以通过在 Keychain Access.app 中搜索关键词 navicat 来找到它们。

使用navicat-patcher替换掉公钥:

navicat-patcher将会在当前目录下生成一个新的RSA-2048私钥文件RegPrivateKey.pem

$ ./navicat-patcher /Applications/Navicat\ Premium.app/

四、生成一份自签名的代码证书,并总是信任该证书

生成一份自签名的代码证书,并总是信任该证书

打开钥匙串访问->证书助理->创建证书颁发机构

设置ca证书名称,用户证书为代码签名 电子邮件 foobar@foobar.com

自已创建的证书拖到系统,输入管理员密码,点开信任全部选为信任

#用codesign对Navicat Premium.app重签名
#foobar为证书名称
$ codesign -f -s "foobar" /Applications/Navicat\ Premium.app/

五、接下来使用navicat-keygen来生成 序列号 和 激活码

$ ./navicat-keygen ./RegPrivateKey.pem

选择Navicat的语言以及输入主版本号。之后会随机生成一个 序列号

你可以使用这个 序列号 暂时激活Navicat

接下来你会被要求输入用户名和组织名,之后你会被要求填入请求码。注意 不要关闭注册机,断开网络 并打开Navicat。找到注册窗口,填入注册机给你的序列号。然后点击激活按钮,在手动激活窗口你会得到一个请求码,复制它并把它粘贴到keygen里。最后别忘了连按至少两下回车结束输入

你会得到一个看似用Base64编码的激活码。直接复制它,并把它粘贴到Navicat的手动激活窗口,最后点激活按钮

转载请注明:PHP笔记 » MAC上Navicat数据库管理工具使用

]]>
https://www.phpnote.cc/mac-navicat-tool/feed 0
在Docker容器中部署静态网站 https://www.phpnote.cc/docker-container-website https://www.phpnote.cc/docker-container-website#respond Sat, 25 May 2019 04:08:56 +0000 https://www.phpnote.cc/?p=1379 一、在容器中部署静态网站-设置容器的端口映射
设置容器的端口映射  docker run [-P][-p]
大写的P为容器所有端口进行映射  docker run -P -i -t ubuntu /bin/bash
小写的p能为指定容器端口进行映射,四种映射方式
涛哥在实际项目使用过程中常用第二种,https://www.phpnote.cc就在容器中布署
第一种情况:
containerPort  (只指定容器的端口,这时宿主机的端口是随机映射的)
docker run -p 80 -i -t ubuntu /bin/bash
第二种情况:(同时指定宿主机端口及容器端口,这是一一对应的)
hostPort:containerPort
docker run -p 8080:80 -i -t ubuntu /bin/bash
第三种情况:(指定ip和容器的端口)
ip::containerPort
docker run -p 0.0.0.0:80 -i -t ubuntu /bin/bash
第四种情况:(指定ip和宿主机端口-对应-容器端口)
docker run -p 0.0.0.0:8080:80 -i -t ubuntu /bin/bash
二、nginx部署流程
1、创建映射80端口的交互式容器
2、安装nginx
3、安装文本编辑器vim
4、创建静态页面
5、修改nginx配置文件
6、运行nginx
7、验证网站访问

 

 

 

转载请注明:PHP笔记 » 在Docker容器中部署静态网站

]]>
https://www.phpnote.cc/docker-container-website/feed 0
php -S 创建php内置http服务器 https://www.phpnote.cc/php-s-http https://www.phpnote.cc/php-s-http#respond Thu, 09 May 2019 04:03:11 +0000 https://www.phpnote.cc/?p=1347 从php5.4开始,引入了一个内置web服务器,可以在测试环境迅速搭建web环境而无须复杂的配置。性能肯定是不如nginx和apache服务器的,生成环境还是要搭建服务器。

1-命令使用方法:

php -S 127.0.0.1:5000

进入到项目的相应的入口文件index.php的目录中执行
端口是可以的改变,在浏览器输入 127.0.0.1:5000/地址

sam:php-design-pattern zyt$ php -S 127.0.0.1:5000
PHP 7.2.11 Development Server started at Fri May 9 11:42:38 2019
Listening on http://127.0.0.1:5000

 

转载请注明:PHP笔记 » php -S 创建php内置http服务器

]]>
https://www.phpnote.cc/php-s-http/feed 0