Skip to content

Commit 3e5c1c8

Browse files
committed
Merge pull request #1 from wangyongtao/test
ADD
2 parents a7d7dd6 + 9bb29e7 commit 3e5c1c8

21 files changed

+1232
-0
lines changed

PHP-知识体系结构.md

Lines changed: 51 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,51 @@
1+
2+
1. 服务器与部署
3+
2. PHP基础知识
4+
3. JavaScript与HTML基础知识
5+
4. 数据库基础知识
6+
5. Linux基础知识
7+
6. 编程实践
8+
9+
10+
11+
# 计算机基础
12+
13+
网站系统的结构:
14+
操作系统: Linux
15+
后端: PHP/Python/Ruby/Java
16+
前端: JavaScript、HTML、CSS + iOS(OC、Swift), Android(Java), HTML5
17+
数据库: MySQL、Redis、MongoDB
18+
19+
20+
# PHP基础知识
21+
22+
### 字符串与编码
23+
24+
### 正则表达式
25+
26+
### PHP数组
27+
28+
### PHP文件系统
29+
30+
### PHP安全
31+
32+
33+
34+
# Linux基础知识
35+
36+
37+
# 深入JavaScript与HTML/CSS
38+
39+
40+
# 综合项目实战、大规模网站开发技术
41+
42+
43+
# 其他知识:
44+
45+
NodeJS
46+
47+
Docker
48+
49+
Vagrant
50+
51+

chapter1_basic/HTTP基础知识.md

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
# 深入HTTP协议
2+
3+
HTTP协议和W3C组织
4+
5+
用开发者工具分析HTTP数据包
6+
7+
HTTP请求行、消息头、实体内容
8+
9+
HTTP响应状态行、消息头和实体内容
10+
11+
HTTP响应状态码详解
12+
13+
HTTP协议的应用和实战

chapter1_basic/PHP7_安装.md

Lines changed: 208 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,208 @@
1+
php7-install.md
2+
3+
使用源码编译安装PHP7
4+
5+
2015年6月11日,PHP官网发布消息,正式公开发布PHP7第一版的alpha版本.
6+
7+
### PHP7特性:
8+
9+
PHP 7.0.0 Alpha 1使用新版的ZendEngine引擎,带来了许多新的特性,以下是不完全列表:
10+
(1)性能提升:PHP7比PHP5.6性能提升了两倍。 Improved performance: PHP 7 is up to twice as fast as PHP 5.6
11+
(2)全面一致的64位支持。 Consistent 64-bit support
12+
(3)以前的许多致命错误,现在改成抛出异常。Many fatal errors are now Exceptions
13+
(4)移除了一些老的不在支持的SAPI(服务器端应用编程端口)和扩展。Removal of old and unsupported SAPIs and extensions
14+
(5)新增了空接合操作符。The null coalescing operator (??)
15+
(6)新增加了结合比较运算符。Combined comparison Operator (<=>)
16+
(7)新增加了函数的返回类型声明。Return Type Declarations
17+
(8)新增加了标量类型声明。Scalar Type Declarations
18+
(9)新增加匿名类。Anonymous Classes
19+
20+
### 系统环境:
21+
```
22+
Mac-mini:~ WangTom$ uname -mnprs
23+
Darwin Mac-mini.local 14.3.0 x86_64 i386
24+
25+
Mac-mini:~ WangTom$ sw_vers
26+
ProductName: Mac OS X
27+
ProductVersion: 10.10.3
28+
BuildVersion: 14D136
29+
```
30+
31+
### 源码安装PHP7:
32+
33+
PHP7下载地址:https://downloads.php.net/~ab/
34+
35+
```
36+
$ wget https://downloads.php.net/~ab/php-7.0.0alpha1.tar.bz2
37+
$ tar jxf php-7.0.0alpha1.tar.bz2
38+
$ cd php-7.0.0alpha1
39+
40+
$ ./configure
41+
... ...
42+
checking size of long... (cached) 8
43+
checking size of long long... (cached) 8
44+
checking for iconv support... yes
45+
checking for iconv... no
46+
checking for libiconv... no
47+
configure: error: Please specify the install prefix of iconv with --with-iconv=<DIR>
48+
49+
```
50+
51+
安装 libiconv (字符编码转换库)
52+
网站地址: http://www.gnu.org/software/libiconv/
53+
当前版本: http://ftp.gnu.org/pub/gnu/libiconv/libiconv-1.14.tar.gz
54+
55+
```
56+
$ wget http://ftp.gnu.org/pub/gnu/libiconv/libiconv-1.14.tar.gz
57+
$ tar zxf libiconv-1.14.tar.gz
58+
$ cd libiconv-1.14
59+
$ ./configure --prefix=/usr/local/lib/libiconv
60+
$ make
61+
$ sudo make install
62+
```
63+
64+
65+
配置参数
66+
```
67+
$ ./configure --prefix=/usr/local/php7 \
68+
--enable-fpm \
69+
--with-config-file-path=/usr/local/php7/etc \
70+
--with-iconv=/usr/local/lib/libiconv \
71+
72+
执行configure配置后,可以看到有如下结果:
73+
... ...
74+
Thank you for using PHP.
75+
76+
config.status: creating php7.spec
77+
config.status: creating main/build-defs.h
78+
config.status: creating scripts/phpize
79+
config.status: creating scripts/man1/phpize.1
80+
config.status: creating scripts/php-config
81+
config.status: creating scripts/man1/php-config.1
82+
config.status: creating sapi/cli/php.1
83+
config.status: creating sapi/cgi/php-cgi.1
84+
config.status: creating ext/phar/phar.1
85+
config.status: creating ext/phar/phar.phar.1
86+
config.status: creating main/php_config.h
87+
config.status: executing default commands
88+
WangTomdeMacBook-Pro:php-7.0.0alpha1 wangtom$
89+
```
90+
$ make
91+
$ make test
92+
$ sudo make install
93+
94+
查看PHP7是否安装成功
95+
````
96+
WangTomdeMacBook-Pro:php-7.0.0alpha1 wangtom$ /usr/local/php7/bin/php -v
97+
PHP 7.0.0alpha1 (cli) (built: Jun 20 2015 00:04:19)
98+
Copyright (c) 1997-2015 The PHP Group
99+
Zend Engine v3.0.0-dev, Copyright (c) 1998-2015 Zend Technologies
100+
101+
Mac-mini:~ WangTom$ sudo ln -s /usr/local/php7/bin/php /usr/bin/php7
102+
103+
Mac-mini:~ WangTom$ php -v
104+
PHP 5.5.20 (cli) (built: Feb 25 2015 23:30:53)
105+
Copyright (c) 1997-2014 The PHP Group
106+
Zend Engine v2.5.0, Copyright (c) 1998-2014 Zend Technologies
107+
108+
Mac-mini:~ WangTom$ php7 -v
109+
PHP 7.0.0alpha1 (cli) (built: Jun 23 2015 17:24:34)
110+
Copyright (c) 1997-2015 The PHP Group
111+
Zend Engine v3.0.0-dev, Copyright (c) 1998-2015 Zend Technologies
112+
113+
Mac-mini:php-fpm.d WangTom$ which php
114+
/usr/bin/php
115+
Mac-mini:php-fpm.d WangTom$ which php7
116+
/usr/bin/php7
117+
```
118+
119+
### 配置PHP-FPM:
120+
121+
Nginx不支持对外部程序的直接调用或者解析,所有的外部程序(包括PHP)必须通过FastCGI接口来调用。
122+
PHP-FPM是一个PHP FastCGI管理器,新版的PHP已经集成了php-fpm,在./configure的时候带 –enable-fpm参数即可开启PHP-FPM.
123+
FPM (FastCGI Process Manager) is an alternative PHP FastCGI implementation with some additional features (mostly) useful for heavy-loaded sites.
124+
125+
启动 PHP-FPM:
126+
```
127+
Mac-mini:php7 WangTom$ /usr/local/php7/sbin/php-fpm
128+
[23-Jun-2015 15:33:01] WARNING: Nothing matches the include pattern '/usr/local/php7/etc/php-fpm.d/*.conf' from /usr/local/php7/etc/php-fpm.conf at line 125.
129+
[23-Jun-2015 15:33:01] ERROR: failed to open error_log (/usr/local/php7/var/log/php-fpm.log): Permission denied (13)
130+
[23-Jun-2015 15:33:01] ERROR: failed to post process the configuration
131+
[23-Jun-2015 15:33:01] ERROR: FPM initialization failed
132+
```
133+
提示错误说/usr/local/php7/var/log/php-fpm.log 没权限,就给777权限:
134+
$ chmod 777 /usr/local/php7/var/log/
135+
136+
修改 php-fpm 配置文件:
137+
$ cd /usr/local/php7/etc/
138+
$ cp php-fpm.conf.default php-fpm.conf
139+
$ vim php-fpm.conf
140+
> 打开 error_log这一行的注释,默认该项被注释掉,若不修改会出现提示log文件路径不存在
141+
> error_log = /usr/local/php7/var/log/php-fpm.log
142+
> 打开inclue这一行的注释
143+
> include=/usr/local/php7/etc/php-fpm.d/*.conf
144+
145+
修改 /usr/local/php7/etc/php-fpm.d/www.conf 文件:
146+
如果这个文件不存在,就从default复制一份:
147+
$ cd /usr/local/php7/etc/php-fpm.d/
148+
$ cp www.conf.default www.conf
149+
将配置文件中的 user 和 group 部分的 nobody 改成 www:
150+
$ vim /usr/local/php7/etc/php-fpm.d/www.conf
151+
> user = www
152+
> group = www
153+
154+
开始启动 php-fpm:
155+
```
156+
Mac-mini:php-7.0.0alpha1 WangTom$ /usr/local/php7/sbin/php-fpm
157+
[23-Jun-2015 18:30:48] NOTICE: [pool www] 'user' directive is ignored when FPM is not running as root
158+
[23-Jun-2015 18:30:48] NOTICE: [pool www] 'group' directive is ignored when FPM is not running as root
159+
[23-Jun-2015 18:30:48] ERROR: unable to bind listening socket for address '127.0.0.1:9000': Address already in use (48)
160+
[23-Jun-2015 18:30:48] ERROR: FPM initialization failed
161+
```
162+
这个错误问题有两个:(1)没有使用root账户执行启动命令 (2)端口9000被占用
163+
解决方法:
164+
使用root账户执行php-fpm启动,或 sudo /usr/local/php7/sbin/php-fpm
165+
关闭 PHP-fpm, 并重新启动:
166+
```
167+
Mac-mini:~ WangTom$ lsof -P | grep ':9000' | awk '{print $2}' | xargs kill -9
168+
Mac-mini:php-7.0.0alpha1 WangTom$ /usr/local/php7/sbin/php-fpm -t
169+
[23-Jun-2015 18:30:25] NOTICE: configuration file /usr/local/php7/etc/php-fpm.conf test is successful
170+
Mac-mini:~ WangTom$ sudo /usr/local/php7/sbin/php-fpm
171+
Mac-mini:~ WangTom$
172+
```
173+
174+
修改Nginx 配置:
175+
在 nginx.conf 配置文件server 部分增加fastcgi配置,并重新加载配置文件:
176+
```
177+
Mac-mini:~ WangTom$ sudo vim /usr/local/nginx/conf/nginx.conf
178+
179+
> location ~ \.php$ {
180+
> root html;
181+
> fastcgi_pass 127.0.0.1:9000;
182+
> fastcgi_index index.php;
183+
> fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
184+
> include fastcgi_params;
185+
> }
186+
187+
Mac-mini:~ WangTom$ sudo /usr/local/nginx/sbin/nginx -t
188+
nginx: the configuration file /usr/local/nginx/conf/nginx.conf syntax is ok
189+
nginx: configuration file /usr/local/nginx/conf/nginx.conf test is successful
190+
Mac-mini:~ WangTom$ sudo /usr/local/nginx/sbin/nginx -s reload
191+
Mac-mini:~ WangTom$
192+
```
193+
194+
用到的一些命令:
195+
196+
uname: 用来获取电脑和操作系统的相关信息
197+
sw_vers: Mac下查看系统版本信息
198+
lsof: 列出当前系统打开文件(list open files)
199+
which: 指令会在环境变量$PATH设置的目录里查找符合条件的文件
200+
201+
202+
参考链接:
203+
204+
- http://php.net/archive/2015.php#id2015-06-11-3
205+
- http://www.hashbangcode.com/blog/compiling-and-installing-php7-ubuntu
206+
207+
208+
[END]

chapter1_basic/README.md

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
README.md
2+
服务器与部署
Lines changed: 93 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,93 @@
1+
02-如何源码安装Nginx服务器
2+
3+
# 02-如何源码安装Nginx服务器
4+
5+
##### 安装 PCRE :
6+
> 网站:http://pcre.org/
7+
> 下载:
8+
> - ftp://ftp.csx.cam.ac.uk/pub/software/programming/pcre/
9+
> - ftp://ftp.csx.cam.ac.uk/pub/software/programming/pcre/pcre-8.36.tar.bz2
10+
11+
##### 安装 Nginx :
12+
> + 网站地址:http://nginx.org/en/docs/
13+
> + 下载地址:http://nginx.org/download/nginx-1.8.0.tar.gz
14+
15+
##### 安装命令:
16+
```
17+
下载:
18+
wget http://nginx.org/download/nginx-1.8.0.tar.gz
19+
20+
tar zxf nginx-1.8.0.tar.gz
21+
cd nginx-1.8.0
22+
./configure --prefix=/usr/local/nginx
23+
make
24+
sudo make install
25+
26+
./configure --prefix=/usr/local/nginx \
27+
--sbin-path=/usr/local/nginx/nginx \
28+
--conf-path=/usr/local/nginx/nginx.conf \
29+
--pid-path=/usr/local/nginx/nginx.pid \
30+
--with-http_ssl_module \
31+
32+
33+
34+
35+
ps -ef |grep nginx
36+
37+
启动Nginx:
38+
sudo /usr/local/nginx/sbin/nginx
39+
40+
重新加载配置文件:
41+
sudo /usr/local/nginx/sbin/nginx -t
42+
sudo /usr/local/nginx/sbin/nginx -s reload
43+
44+
```
45+
46+
##### 检查是否安装成功:
47+
48+
[1] 命令行查看Nginx版本:
49+
```
50+
/usr/local/nginx/sbin/nginx -V
51+
Mac-mini:nginx-1.8.0 WangTom$ /usr/local/nginx/sbin/nginx -V
52+
nginx version: nginx/1.8.0
53+
built by clang 6.1.0 (clang-602.0.53) (based on LLVM 3.6.0svn)
54+
configure arguments: --prefix=/usr/local/nginx
55+
56+
Mac-mini:nginx-1.8.0 WangTom$ /usr/local/nginx/sbin/nginx -v
57+
nginx version: nginx/1.8.0
58+
```
59+
60+
[2] 浏览器中查看页面
61+
在浏览器中访问: http://localhost/ 安装成功则页面出现:
62+
```
63+
Welcome to nginx!
64+
If you see this page, the nginx web server is successfully installed and working.
65+
Further configuration is required.
66+
For online documentation and support please refer to nginx.org.
67+
Commercial support is available at nginx.com.
68+
Thank you for using nginx.
69+
```
70+
查看 Nginx 版本:
71+
Mac-mini:html WangTom$ sudo /usr/local/nginx/sbin/nginx -v
72+
nginx version: nginx/1.8.0
73+
74+
检测 Nginx 配置文件
75+
Mac-mini:html WangTom$ sudo /usr/local/nginx/sbin/nginx -t
76+
nginx: the configuration file /usr/local/nginx/conf/nginx.conf syntax is ok
77+
nginx: configuration file /usr/local/nginx/conf/nginx.conf test is successful
78+
79+
80+
To apply the new configuration, start nginx if it is not yet started or send the reload signal to the nginx’s master process, by executing:
81+
Mac-mini:html WangTom$ sudo /usr/local/nginx/sbin/nginx -s reload
82+
Mac-mini:html WangTom$
83+
84+
85+
86+
##### 参考地址:
87+
88+
Building nginx from Sources:
89+
http://nginx.org/en/docs/configure.html
90+
91+
92+
93+
[END]

0 commit comments

Comments
 (0)