LAMP PHP介绍
LAMP & PMP 介绍及部署
- LAMP 相关概念介绍
- 1、LAM(M)P
- 2、web 资源类型
- 3、web 相关语言
- 4、CGI(Common Gateway Interface)
- 5、LAMP 工作原理
- 6、AMP 使用概述
- AMP 组合方式
- AMP 快速部署
- PHP 相关概念介绍
- 1、PHP 简介
- 2、PHP Zend Engine
- 3、PHP 的 Opcode
- 4、PHP 加速器
- 5、PHP 源码目录结构
- PHP 配置
- PHP 代码
- 1、格式一
- 2、格式二
- 3、php测试代码
- 4、使用mysql扩展连接数据库的测试代码
- 5、Php使用mysqli扩展连接数据库的测试代码
- 5、使用pdo扩展连接数据库的测试代码1
- 6、使用pdo扩展连接数据库的测试代码2
- LAMP 部署与配置
- 1、LAMP 主要安装部分
- 2、HTTP 与 PHP 结合的方式
- 3、CentOS 6/7 所需要安装的模块(实现LAMP)
- 4、LAMP 安装
- CentOS 6(Modules)
- CentOS 7(Modules)
- CentOS 7(FastCGI)
- 5、php 主文件说明(`/etc/httpd/conf.d/php.conf`)
- PHP 示例:创建一个显示 PHP INFO 的网页
- 6、mysql 启动、状态及登入(说明 mysql 启动成功)
- 7、常见LAMP应用
- PHP 使用 mysql 扩展连接数据库测试
- 1、语法格式:使用mysql扩展连接数据库的测试代码
- 2、在 HTTPD 的文件根目录创建 mysqltest.php
- 3、进行验证
- 4、注意事项
LAMP 相关概念介绍
1、LAM(M)P
L # linux
A # apache (httpd)
M # mysql, mariadb
M # memcached
P # php, perl, python
2、web 资源类型
- 静态资源:原始形式与响应内容一致
- 动态资源:原始形式通常为程序文件,需要在服务器端执行之后,将执行结果返回给客户端
3、web 相关语言
- 客户端技术:
html,javascript,css,jpg
- 服务器端技术:
php, jsp,python,asp
4、CGI(Common Gateway Interface)
通用网关接口:可以让一个客户端,从网页浏览器通过http服务器向执行在网络服务器上的程序传输数据;CGI描述了客户端和服务器程序之间传输的一种标准。
程序=指令+数据
数据模型:层次模型网状模型关系模型:表(行+列)关系模型 # IngreSQL, Oracle, Sybase, Infomix, DB2# SQL Server, MySQL, PostgreSQL, MariaDB指令:代码文件 数据:数据存储系统、文件
CGI 请求流程
Client--(httpd)-->httpd--(cgi)-->application server(program file)--(mysql)-->mysql
php:本编程语言、嵌入到html中的嵌入式web程序开发语言;基于zend编译成opcode(二进制格式的字节码,重复运行,可省略编译环境)。
5、LAMP 工作原理
6、AMP 使用概述
AMP 组合方式
第一种:client --> http protocol --> httpd + php module --> (php-mysql, mysql protocol) --> mysqld
第二种:client --> http protocol --> httpd --> fastcgi protocol --> fpm (php application server) --> (php-mysql, mysql protocol) --> mysqld
AMP 快速部署
CentOS 7:
Modules
:程序包httpd, php, php-mysql, mariadb-server
Modules
:启动的服务systemctl start mariadb.service httpd.service
FastCGI
:程序包httpd, php-fpm, php-mysql, mariadb-server
FastCGI
:启动的服务systemctl start mariadb.service php-fpm.service httpd.service
CentOS 6:
Modules
:程序包httpd, php, php-mysql, mysql-server
Modules
:启动的服务service mysqld start, service httpd start
PHP 相关概念介绍
1、PHP 简介
- 官网:
http://www.php.net/
- PHP是通用服务器端脚本编程语言,主要用于web开发实现动态web页面,也是最早实现将脚本嵌入HTML源码文档中的服务器端脚本语言之一。同时,php还提供了一个命令行接口,因此,其也可以在大多数系统上作为一个独立的shell来使用
- Rasmus Lerdorf 于1994年开始开发PHP,最初是一组被Rasmus Lerdorf 称作
“Personal Home Page Tool”
的Perl脚本, 可以用于显示作者的简历并记录用户对其网站的访问。后来,Rasmus Lerdorf 使用C语言将这些Perl脚本重写为CGI程序,还为其增加了运行Web forms
的能力以及与数据库交互的特性,并将其重命名为“Personal Home Page/Forms Interpreter” 或 “PHP/FI”
。此时,PHP/FI 已经可以用于开发简单的动态 web 程序了,这即PHP1.0。1995年6月,Rasmus Lerdorf把它的PHP发布于comp.infosystems.www.authoring.cgi Usenet
讨论组,从此PHP开始走进人们的视野。1997年,其2.0版本发布
1997年,两名以色列程序员 Zeev Suraski 和 Andi Gutmans 重写的PHP的分析器(parser)成为PHP发展到3.0的基础,而且从此将PHP重命名为PHP: Hypertext Preprocessor
。此后,这两名程序员开始重写整个PHP核心,并于1999年发布了Zend Engine 1.0
,这也意味着PHP 4.0的诞生。2004年7月,Zend Engine 2.0
发布,由此也将PHP带入了PHP 5时代。PHP5包含了许多重要的新特性,如增强的面向对象编程的支持、支持PDO(PHP Data Objects)
扩展机制以及一系列对PHP性能的改进
2、PHP Zend Engine
Zend Engine
是开源的、PHP脚本语言的解释器,它最早是由以色列理工学院(Technion)的学生Andi Gutmans和Zeev Suraski所开发,Zend也正是此二人名字的合称。后来两人联合创立了Zend Technologies公司Zend Engine 1.0
于1999年随PHP 4发布,由C语言开发且经过高度优化,并能够做为PHP的后端模块使用。Zend Engine
为PHP提供了内存和资源管理的功能以及其它的一些标准服务,其高性能、可靠性和可扩展性在促进PHP成为一种流行的语言方面发挥了重要作用Zend Engine
的出现将PHP代码的处理过程分成了两个阶段:首先是分析PHP代码并将其转换为称作Zend opcode的二进制格式opcode(类似Java的字节码),并将其存储于内存中;第二阶段是使用Zend Engine去执行这些转换后的Opcode
3、PHP 的 Opcode
Opcode是一种PHP脚本编译后的中间语言,类似于Java 的 ByteCode,或者.NET的MSL。PHP执行PHP脚本代码一般会经过如下4个步骤(确切的来说,应该是PHP的语言引擎Zend)
- 1、Scanning 词法分析,将PHP代码转换为语言片段(Tokens)
- 2、Parsing 语义分析,将Tokens转换成简单而有意义的表达式
- 3、Compilation 将表达式编译成Opcode
- 4、Execution 顺次执行Opcode,每次一条,从而实现PHP脚本的功能
总的过程就是:扫描–>分析–>编译–>执行
4、PHP 加速器
PHP 的加速器:基于PHP的特殊扩展机制如opcode缓存扩展也可以将opcode缓存于php的共享内存中,从而可以让同一段代码的后续重复执行时跳过编译阶段以提高性能。这些加速器并非真正提高了opcode的运行速度,而仅是通过分析opcode后并将它们重新排列以达到快速执行的目的
常见的 PHP 加速器有:
- 1、APC (Alternative PHP Cache)
遵循PHP License的开源框架,PHP opcode缓存加速器,目前的版本不适用于PHP 5.4。项目地址http://pecl.php.net/package/APC
- 2、eAccelerator
源于Turck MMCache,早期的版本包含了一个PHP encoder和PHP loader,目前encoder已经不在支持。项目地址http://eaccelerator.net/
- 3、XCache
快速而且稳定的PHP opcode缓存,经过严格测试且被大量用于生产环境。项目地址:http://xcache.lighttpd.net/
,收录EPEL源 - 4、Zend Optimizer和Zend Guard Loader
Zend Optimizer
并非一个opcode加速器,它是由Zend Technologies
为PHP5.2及以前的版本提供的一个免费、闭源的PHP扩展,其能够运行由Zend Guard生成的加密的PHP代码或模糊代码。 而Zend Guard Loader
则是专为PHP5.3提供的类似于Zend Optimizer
功能的扩展。项目地址http://www.zend.com/en/products/guard/runtime-decoders
- 5、NuSphere PhpExpress
NuSphere的一款开源PHP加速器,它支持装载通过NuSphere PHP Encoder
编码的PHP程序文件,并能够实现对常规PHP文件的执行加速。项目地址,http://www.nusphere.com/products/phpexpress.htm
5、PHP 源码目录结构
PHP的源码在结构上非常清晰。其代码根目录中主要包含了一些说明文件以及设计方案,并提供了如下子目录:
- 1、build —— 顾名思义,这里主要放置一些跟源码编译相关的文件,比如开始构建之前的buildconf脚本及一些检查环境的脚本等
- 2、ext —— 官方的扩展目录,包括了绝大多数PHP的函数的定义和实现,如array系列,pdo系列,spl系列等函数的实现。 个人开发的扩展在测试时也可以放到这个目录,以方便测试等
- 3、main —— 这里存放的就是PHP最为核心的文件了,是实现PHP的基础设施,这里和Zend引擎不一样,Zend引擎主要实现语言最核心的语言运行环境
- 4、Zend —— Zend引擎的实现目录,比如脚本的词法语法解析,opcode的执行以及扩展机制的实现等等
- 5、pear —— PHP 扩展与应用仓库,包含PEAR的核心文件
- 6、sapi —— 包含了各种服务器抽象层的代码,例如apache的mod_php,cgi,fastcgi以及fpm等等接口
- 7、TSRM —— PHP的线程安全是构建在TSRM库之上的,PHP实现中常见的*G宏通常是对TSRM的封装,
TSRM(Thread Safe Resource Manager)
线程安全资源管理器 - 8、tests —— PHP的测试脚本集合,包含PHP各项功能的测试文件
- 9、win32 —— 这个目录主要包括Windows平台相关的一些实现,比如sokcet的实现在Windows下和*Nix平台就不太一样,同时也包括了Windows下编译PHP相关的脚本
PHP 配置
PHP 是脚本语言解释器。
配置文件:
/etc/php.ini , /etc/php.d/*.ini
配置文件在php解释器启动时被读取,对配置文件的修改生效方法
Modules # 重启 httpd 服务 FastCGI # 重启 php-fpm 服务
/etc/php.ini
配置文件格式[foo]:Section Header directive = value 注释符:较新的版本中,已经完全使用;进行注释# # 纯粹的注释信息; # 用于注释可启用的directive
php 常用设置
max_execution_time= 30 # 最长执行时间30s memory_limit 128M # 生产不够,可调大 display_errors off # 调试使用,不要打开,否则可能暴露重要信息 display_startup_errors off # 建议关闭 post_max_size 8M # 最大上传数据大小,生产可能临时要调大,比下面项要大 upload_max_filesize 2M # 最大上传文件,生产可能要调大 max_file_uploads = 20 # 同时上传最多文件数 date.timezone =Asia/Shanghai # 指定时区 short_open_tag=on # 开启短标签,如<? phpinfo();?>
php 其它
php.ini的核心配置选项文档 # http://php.net/manual/zh/ini.core.php php.ini配置选项列表 # http://php.net/manual/zh/ini.list.php# php语言格式<?php ...php code... ?>
PHP 代码
1、格式一
<?phpecho "<h1>Hello world!</h1>"
?>
2、格式二
<h1><?php echo "Hello world!" ?>
</h1>
3、php测试代码
<?phpecho date("Y/m/d H:i:s");phpinfo();
?>
4、使用mysql扩展连接数据库的测试代码
<?php$conn = mysql_connect(‘mysqlserver','username','password');if ($conn)echo "OK";elseecho "Failure";#echo mysql_error();mysql_close();
?>
5、Php使用mysqli扩展连接数据库的测试代码
<?php$mysqli=new mysqli("mysqlserver",“username",“password");if(mysqli_connect_errno()){echo "Failure";$mysqli=null;exit;}echo “OK";$mysqli->close();
?>
5、使用pdo扩展连接数据库的测试代码1
<?php$dsn='mysql:host=mysqlhost;dbname=test';$username=‘root';$passwd=‘magedu';$dbh=new PDO($dsn,$username,$passwd);var_dump($dbh);
?>
6、使用pdo扩展连接数据库的测试代码2
<?phptry {$user=‘root';$pass=‘magedu';$dbh = new PDO('mysql:host=mysqlhost;dbname=mysql’, $user, $pass);foreach($dbh->query('SELECT user,host from user') as $row) {print_r($row);
}$dbh = null;} catch (PDOException $e) {print "Error!: " . $e->getMessage() . "<br/>";die();
}
?>
LAMP 部署与配置
1、LAMP 主要安装部分
- httpd:接收用户的web请求;静态资源则直接响应;动态资源为php脚本,对此类资源的请求将交由php来运行
- php:运行php程序
- MariaDB:数据管理系统
2、HTTP 与 PHP 结合的方式
CGI(现在很少用这种方式)
FastCGI
modules (将php编译成为httpd的模块,默认方式)
MPM:prefork: libphp5.soevent, worker: libphp5-zts.so
3、CentOS 6/7 所需要安装的模块(实现LAMP)
CentOS 7:
Modules # httpd, php, php-mysql, mariadb-server FastCGI # httpd, php-fpm, php-mysql, mariadb-server
CentOS 6:
Modules # httpd, php, php-mysql, mysql-server FastCGI # 默认不支持
4、LAMP 安装
注意:要使用 prefork 模型。
CentOS 6(Modules)
Modules:程序包 httpd, php, php-mysql, mysql-server
```
# yum install httpd, php, mysql-server, php-mysql
# service httpd start
# service mysqld start
```
CentOS 7(Modules)
Modules:程序包 httpd, php, php-mysql, mariadb-server
```
# yum install httpd, php, php-mysql, mariadb-server
# systemctl start mariadb.service httpd.service
```
CentOS 7(FastCGI)
FastCGI:程序包 httpd, php-fpm, php-mysql, mariadb-server
```
# yum install httpd, php-fpm, php-mysql, mariadb-server
# systemctl start mariadb.service php-fpm.service httpd.service
```
CentOS 7 安装后,默认生成的 php 文件
# rpm -ql php /etc/httpd/conf.d/php.conf /etc/httpd/conf.modules.d/10-php.conf /usr/lib64/httpd/modules/libphp5.so /usr/share/httpd/icons/php.gif /var/lib/php/session
5、php 主文件说明(/etc/httpd/conf.d/php.conf
)
文件结尾是 .php 的文件,才会交由 php 去运行。所以以 .html 运行是不会调用的,显示页面不会和预想的一样。
php 也是高度模块化的,称作 php 扩展。(可以是官方扩展,也可以是第三方扩展。)
可结合 php 配置主文件进行理解。
# cat /etc/httpd/conf.d/php.conf
# FileMatch 后匹配正则表达式,匹配任意以 .php(\ 是转译符)结尾的文件,调用模块执行
<FilesMatch \.php$>SetHandler application/x-httpd-php
</FilesMatch>
AddType text/html .php
DirectoryIndex index.php
php_value session.save_handler "files"
php_value session.save_path "/var/lib/php/session"
PHP 示例:创建一个显示 PHP INFO 的网页
- (1)在HTTPD 的文件根目录下创建一个 .php 结尾的文件
[root@neo html]# pwd
/var/www/html
[root@neo html]# ls
phpinfo.php
[root@neo html]# cat phpinfo.php
<html><title>PHP Test Page</title><body><h1>PHP Info Page<h1><?php # 调用 php 命令(;分号用于调用命令结尾)phpinfo(); # phpinfo 是php的一个内部命令,用于显示php信息?> # 开头和结尾要成对出现 <? ?></body>
</html>
- (2)使用浏览器进行页面访问
http://172.16.141.252/phpinfo.php
,成功显示 PHP INFO
- (3)在PHP INFO界面上,如果能看到 mysql 模块信息,说明 php 和 mysql 接口正常
6、mysql 启动、状态及登入(说明 mysql 启动成功)
可使用systemctl start mariadb.service
来启动 mysql 服务程序。第一次启动会比较慢,启动成功后,会多一个 TCP:3306 的监听端口。如下:
[root@neo ~]# ss -tnl
State Recv-Q Send-Q Local Address:Port Peer Address:Port
LISTEN 0 50 *:3306 *:*
LISTEN 0 128 *:22 *:*
LISTEN 0 100 127.0.0.1:25 *:*
LISTEN 0 128 :::80 :::*
LISTEN 0 128 :::22 :::*
LISTEN 0 100 ::1:25 :::*
[root@neo ~]# mysql # 进入数据库
Welcome to the MariaDB monitor. Commands end with ; or \g.
Your MariaDB connection id is 7
Server version: 5.5.60-MariaDB MariaDB ServerCopyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.MariaDB [(none)]> SHOW DATABASES; # 显示数据库
+--------------------+
| Database |
+--------------------+
| information_schema |
| mysql |
| performance_schema |
| test |
+--------------------+
4 rows in set (0.00 sec)
MariaDB [(none)]> quit # 退出数据库
Bye
7、常见LAMP应用
- PhpMyAdmin是一个以PHP为基础,以Web-Base方式架构在网站主机上的MySQL的数据库管理工具,让管理者可用Web接口管理MySQL数据库
- WordPress是一种使用PHP语言开发的博客平台,用户可以在支持PHP和MySQL数据库的服务器上架设属于自己的网站。也可把 WordPress当作一个内容管理系统(CMS)来使用
- PHPWind:2003年发布了PHPWind的前身版本ofstar,并发展成为包含BBS、CMS、博客、SNS等一系列程序的通用型建站软件, 于2008年加入阿里巴巴集团
- Crossday Discuz! Board(简称 Discuz!)是一套通用的社区论坛软件系统。自2001年6月面世以来,是全球成熟度最高、覆盖率最大的论坛软件系统之一。2010年8月23日,与腾讯达成收购协议
- ECShop是一款B2C独立网店系统,适合企业及个人快速构建个性化网上商店。系统是基于PHP语言及MYSQL数据库构架开发的跨平台开源程序。2006年6月,ECShop推出第一个版本1.0
PHP 使用 mysql 扩展连接数据库测试
1、语法格式:使用mysql扩展连接数据库的测试代码
<?php$conn = mysql_connect(‘mysqlserver','username','password'); if ($conn)echo "OK";elseecho "Failure";#echo mysql_error();#mysql_close();
?>
2、在 HTTPD 的文件根目录创建 mysqltest.php
[root@neo ~]# ll /var/www/html/
total 8
-rw-r--r--. 1 root root 162 Aug 8 05:10 mysqltest.php
-rw-r--r--. 1 root root 113 Aug 8 03:41 phpinfo.php
[root@neo ~]# cat /var/www/html/mysqltest.php
<?php$conn = mysql_connect('127.0.0.1','root',''); # root 是登陆 mysql 的用户名if ($conn)echo "OK";else echo "NOT OK";
?>
3、进行验证
在 mariadb 启动的情况下,显示 连接成功(OK),未启动的情况下,显示 连接不成功(NOT OK)。
[root@neo ~]# ss -tnl
State Recv-Q Send-Q Local Address:Port Peer Address:Port
LISTEN 0 50 *:3306 *:*
LISTEN 0 128 *:22 *:*
LISTEN 0 100 127.0.0.1:25 *:*
LISTEN 0 128 :::80 :::*
LISTEN 0 128 :::22 :::*
LISTEN 0 100 ::1:25 :::*
[root@neo ~]# curl http://127.0.0.1/mysqltest.php
OK
[root@neo ~]# systemctl stop mariadb.service
[root@neo ~]# ss -tnl
State Recv-Q Send-Q Local Address:Port Peer Address:Port
LISTEN 0 128 *:22 *:*
LISTEN 0 100 127.0.0.1:25 *:*
LISTEN 0 128 :::80 :::*
LISTEN 0 128 :::22 :::*
LISTEN 0 100 ::1:25 :::*
[root@neo ~]# curl http://127.0.0.1/mysqltest.php
NOT OK
[root@neo ~]# systemctl start mariadb.service
[root@neo ~]# ss -tnl
State Recv-Q Send-Q Local Address:Port Peer Address:Port
LISTEN 0 50 *:3306 *:*
LISTEN 0 128 *:22 *:*
LISTEN 0 100 127.0.0.1:25 *:*
LISTEN 0 128 :::80 :::*
LISTEN 0 128 :::22 :::*
LISTEN 0 100 ::1:25 :::*
[root@neo ~]# curl http://127.0.0.1/mysqltest.php
OK
4、注意事项
- 在登陆
mysql
数据库时不解析IP地址:可修改/etc/my.cnf
文件,添加skip_name_resolve=ON
,但是需要重启mysql才能生效 - 创建文件后,需要 apache 用户能访问,要确保 other 用户有读权限(这样的话,才能使用 HTTPD 进行访问)
LAMP PHP介绍相关推荐
- LAMP架构介绍、MySQL和MariaDB介绍、MySQL安装
2019独角兽企业重金招聘Python工程师标准>>> LAMP架构介绍 Linux+Apache+MySQL+PHP 就是在linux系统上安装httpd. mysql .PHP, ...
- LAMP架构介绍,MySQL、MariaDB介绍,MySQL安装
2019独角兽企业重金招聘Python工程师标准>>> LAMP架构介绍: MySQL.MariaDB介绍: Community 社区版本 =开源版本 Enterprise 企业 ...
- LAMP架构介绍以及Apache源码安装
一.LAMP架构介绍以及Apache源码安装 1.1.LAMP概述 LAMP是企业基础的应用架构 LAMP架构是目前成熟的企业网站应用模式之一,指的是协同工作的一整套系统和相关软件,能够提供动态Web ...
- 5月23日任务 LAMP架构介绍、MySQL、MariaDB介绍、 MySQL安装
2019独角兽企业重金招聘Python工程师标准>>> 11.1 LAMP架构 LAMP 是Linux. Apache. MySQL. PHP的简写,其实就是把Apache.MySQ ...
- LAMP架构介绍与网站部署
架构介绍 LAMP=Linux+Apache(httpd)+Mysql+PHP 三个角色可以在一台机器部署,也可以分开(apache和php要在一起) 示例:当一个网站用户登录网站时,apache先检 ...
- LAMP架构介绍MySQL、MariaDB介绍 MySQL安装
- LAMP架构(LAMP介绍,mysql/mariaDB介绍,Mysql安装)
一.LAMP架构介绍: Linux+ Apache(httpd)+ mysql + php 操作系统+外网服务软件 + 存储软件 + 脚本语言(由C开发) PHP网站 三个角色可以装在一台机器 ...
- LAMP和LNMP架构(介绍)
目录 工作原理 架构介绍 LAMP架构介绍 LNMP架构介绍 LAMP LNMP差别 工作原理 LAMP 浏览器向服务器发送http请求,服务器 (Apache) 接受请求,由于php作为Apache ...
- LAMP介绍、Apache安装
目录 一.LAMP架构介绍 1.1 LAMP概述 1.2 LAMP各组件介绍 二.编译安装Apache httpd服务 2.1 操作步骤流程 2.2 操作详细步骤 一.LAMP架构介绍 1.1 LAM ...
最新文章
- QDoc文件结构documentstructure
- spring 配置jdbc/hibernate/jpa
- 【Redis学习】Redis开启多个端口
- leetcode|第三大的数java题解
- Linux文件命名规则
- Simulink之不可控整流电路
- Web前端的状态管理
- MIDAS分布应用程序中的几个问题
- pytorch搭建卷积神经网络【第三课_自己搭建对抗神经网络】
- php excel 保护工作表,PHPExcel 指定列表锁定受保护加密不可更改方法
- 送给梨花仙子国的礼物
- Seata 设计方案
- [译]C++中的内存同步模式(memory order)
- WMS item与LPN的关系
- 红帽linux竞赛,浅谈红帽linux挑战赛(三)
- Excel 2007版的常用功能(1):Excel基本操作
- 恶意软件与反病毒技术
- vue下的@change事件
- 国家药监局:强化电子签名应用,助推疫苗生产检验电子化
- [JsonSchema] JsonSchema对比 (Java 版)
热门文章
- 使用Bootstrap搭界面案例以及图标的运用
- 攻防世界_MISC之碎纸机11
- mysql主从复制 主键 id_MySQL主从复制详解
- 幽你一默:江湖上流传只有程序猿才懂的幽默
- oppor11android多少,OPPO R11
- php通过$_SERVER获取当前页面完整URL地址
- 路由器php系统时间设置时间设置时间设置,华硕Padavan路由器设置定时重启_路由器自动重启脚本设置...
- ux设计师薪水_UX设计师的视觉设计技巧不再可选
- 学PS基础:Photoshop 技能167个
- 一个FLASH游戏[强烈推荐]