##2.21.1 前言
目前服务器架构通常采用:CentOs + Nginx + php-fpm + MySql [+ Memcached],现将部署方案安装方法、遇到的问题和解决方法、启动方式总结如下,以便后期服务器快速部署。
```
以下文档的是经过几个深夜整理并在阿里云服务器真实部署通过,运行良好,整个过程熟悉后约共半小时,可以进一步考虑做成自动化部署脚本。
如是,请把脚本也邮件发我一份。^_^
```
##2.21.2 统一约定
+ 全部使用编译安装
+ 安装路径路径:/usr/local/
+ 安装包存放位置:/home/apps/web/
**特别注意:请尽量不要使用root账号操作服务器,特别是对外服务器,谢谢。**
##2.21.3 依赖库和开发工具
```javascript
yum -y install gcc gcc-c++ autoconf libjpeg libjpeg-devel libpng libpng-devel freetype freetype-devel libxml2 libxml2-devel zlib zlib-devel glibc glibc-devel glib2 glib2-devel bzip2 bzip2-devel ncurses ncurses-devel curl curl-devel e2fsprogs e2fsprogs-devel krb5 krb5-devel libidn libidn-devel openssl openssl-devel openldap openldap-devel nss_ldap openldap-clients openldap-servers
# nginx
yum -y install pcre-devel zlib-devel
# php
yum -y install gd-devel libjpeg-devel libpng-devel freetype-devel libxml2-devel curl-devel freetype-devel
# mysql
yum -y install bison gcc gcc-c++ autoconf automake zlib* libxml* ncurses-devel libtool-ltdl-devel* mysql-devel
# sz rz
yum install lrzsz
```
##2.21.4 安装Nginx 1.6.0
###参考官方网站
```
http://wiki.nginx.org/Install
```
###(1)安装
```javascript
./configure --prefix=/usr/local/nginx
make
make install
```
###(2)启动
```javascript
/usr/local/nginx/sbin/nginx
```
###(3)重启
```javascript
/usr/local/nginx/sbin/nginx -t
/usr/local/nginx/sbin/nginx -s reload
```
###(4)更多配置
```javascript
server {
listen 80;
server_name test.wetime.com;
root /home/apps/projects/test.wetime.com;
charset utf-8;
access_log logs/test.wetime.com.access.log;
error_log logs/test.wetime.com.error.log;
location / {
index index.html index.htm index.php;
}
location ~ \.php$ {
fastcgi_split_path_info ^(.+\.php)(/.+)$;
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
}
}
```
##2.21.5 安装PHP-FPM 5.3.5
###(1)参考
```
http://blog.csdn.net/dc_726/article/details/9519619
```
###(2)安装
```javascript
./configure --prefix=/usr/local/php --with-mcrypt --with-zlib --with-curl --with-gd --disable-debug --enable-fpm --enable-mbstring --enable-sockets --enable-zip --enable-xml --enable-pdo
```
####温馨提示
如果提示以下错误:
```javascript
If configure fails try --with-jpeg-dir=<DIR>
configure: error: libpng.(a|so) not found.
```
则需要执行以下命令:
```javascript
cp -frp /usr/lib64/libjpeg.* /usr/lib/
ln -s /usr/lib64/libpng.so /usr/lib/libpng.so
yum install libmcrypt libmcrypt-devel mcrypt mhash
yum install unixODBC-devel
```
###(3)启动
```javascript
/usr/local/php/sbin/php-fpm -y=/usr/local/php/etc/php-fpm.conf -c=/usr/local/php/etc/php.ini
```
###(4)重启
```javascript
/usr/local/php/sbin/php-fpm -y=/usr/local/php/etc/php-fpm.conf -c=/usr/local/php/etc/php.ini -t
killall php
/usr/local/php/sbin/php-fpm -y=/usr/local/php/etc/php-fpm.conf -c=/usr/local/php/etc/php.ini
```
###(5)错误处理与依赖
```javascript
cp -frp /usr/lib64/libjpeg.* /usr/lib/
ln -s /usr/lib64/libpng.so /usr/lib/libpng.so
yum install libmcrypt libmcrypt-devel mcrypt mhash
yum install unixODBC-devel
我们可以在命令下输入:
yum localinstall –nogpgcheck http://mirrors.ustc.edu.cn/fedora/epel/6/x86_64/epel-release-6-8.noarch.rpm
yum localinstall –nogpgcheck http://download1.rpmfusion.org/free/el/updates/6/x86_64/rpmfusion-free-release-6-1.noarch.rpm
yum localinstall –nogpgcheck http://download1.rpmfusion.org/nonfree/el/updates/6/x86_64/rpmfusion-nonfree-release-6-1.noarch.rpm
安装这3个东东后,我们就可以直接使用yum install libmcrypt来安装啦~
```
###(6)php扩展安装
```javascript
#安装mysql扩展
./configure --with-php-config=/usr/local/php/bin/php-config --with-mysql=/usr/local/mysql/
make
make install
#安装mysqli扩展
./configure --with-php-config=/usr/local/php/bin/php-config --with-mysqli=/usr/local/mysql/bin/mysql_config
make
make install
```
_扩展包位置在./php-5.3.5/ext/mysql,需要使用到 /usr/local/php/bin/phpize,扩展so应该放到:/usr/lib/php/modules/_
此外,
```
#PHP之pdo_mysql扩展安装步骤
# http://www.smallbigcake.com/2012/08/05/1572/
# http://pecl.php.net/get/PDO_MYSQL-1.0.2.tgz
./configure --with-php-config=/usr/local/php/bin/php-config --with-pdo-mysql=/usr/local/mysql
如果提示“libmysqlclient.so.18: cannot open shared object file: No such file or directory in ”错误则参考 :http://blog.itpub.net/26230597/viewspace-1161322/,
或进行软链:
ln -s /usr/local/mysql/lib/libmysqlclient.so.18 /usr/lib64/libmysqlclient.so.18
```
##2.21.6 安装MYSQL 5.6.10
###(1)参考
```
http://www.cnblogs.com/xiongpq/p/3384681.html
```
###(2)mysql-5.6.10.tar.gz下载
```
http://pan.baidu.com/share/link?shareid=3729862999&uk=1327790029
```
###(3)前期清理和依赖
```javascript
rpm -e mysql //普通删除模式
rpm -e --nodeps mysql // 强力删除模式,如果使用上面命令删除时,提示有依赖的其它文件,则用该命令可以对其进行强力删除
yum -y install make gcc-c++ cmake bison-devel ncurses-devel
```
###(4)安装
```javascript
cmake \
-DCMAKE_INSTALL_PREFIX=/usr/local/mysql \
-DMYSQL_DATADIR=/usr/local/mysql/data \
-DSYSCONFDIR=/etc \
-DWITH_MYISAM_STORAGE_ENGINE=1 \
-DWITH_INNOBASE_STORAGE_ENGINE=1 \
-DWITH_MEMORY_STORAGE_ENGINE=1 \
-DWITH_READLINE=1 \
-DMYSQL_UNIX_ADDR=/var/lib/mysql/mysql.sock \
-DMYSQL_TCP_PORT=3306 \
-DENABLED_LOCAL_INFILE=1 \
-DWITH_PARTITION_STORAGE_ENGINE=1 \
-DEXTRA_CHARSETS=all \
-DDEFAULT_CHARSET=utf8 \
-DDEFAULT_COLLATION=utf8_general_ci
make && make install
```
###(5)ERROR! The server quit without updating PID file
```javascript
#去掉干扰的配置
mv /etc/my.cnf /etc/my.cnf.bak
#添加日志纪录
vim /usr/local/mysql/my.cnf
log-error=/var/log/mysqld.log
innodb_force_recovery=1
```
##2.21.7 [可选]MEMCACHE 1.4.20
###(1)参考官网
```
http://www.memcached.org/downloads
```
###(2)更多参考
```
http://crtlib.blog.163.com/blog/static/133158013201392661912837/
```
###(3)先安装依赖包
```javascript
./configure --prefix=/usr/local/libevent/
make
make install
```
###(4)安装
```javascript
wget http://memcached.org/latest tar -zxvf memcached-1.x.x.tar.gz cd memcached-1.x.x ./configure && make && make test && sudo make install
```
###(5)最后成功安装后启动
```javascript
/usr/local/memcached/bin/memcached -d -m 64 -u root -l 127.0.0.1 -p 11211 -c 128 -P /tmp/memcached.pid
```
###(6)memcached 扩展
```javascript
#http://blog.sina.com.cn/s/blog_66ac09390101drxc.html
#http://www.linuxidc.com/Linux/2013-07/87743.htm
#准备依赖包
./configure --prefix=/usr/local/libmemcached --with-memcached
make
make install
#安装 扩展
/usr/local/php/bin/pecl install memcached
接着输入
libmemcached directory [no] : /usr/local/libmemcached
```
- 欢迎使用PhalApi!
- 接口,从简单开始!
- [1.1]-下载与安装
- [1.2]-创建一个自己的项目
- [1.3]-在线体验
- [1.4]-文档、帮助和官网
- [1.10]-对PhalApi框架的抉择
- [1.11]-快速入门(backup)
- [1.12]-参数规则:接口参数规则配置
- [1.13]-统一的接口请求方式:_sevice=XXX.XXX
- [1.14]-统一的返回格式和结构:ret-data-msg
- [1.15]-数据库操作:基于NotORM的使用及优化
- [1.16]-配置读取:内外网环境配置的完美切换
- [1.17]-日记纪录:简化版的日记接口
- [1.18]-快速函数:人性化的关怀
- [1.19]-DI服务速查:各资源服务一览表
- [1.20]-DB操作:数据库基本操作速查
- [1.21]-类的自动加载:遵循PEAR包的命名规范
- [1.22]-签名验证:自定义签名规则
- [1.23]-请求和响应:GET和POST两者皆可得及超越JSON格式返回
- [1.24]-缓存策略:更灵活地可配置化的多级缓存
- [1.25]-国际化翻译:为走向国际化提前做好翻译准备
- [1.26]-数据安全:数据对称加密方案
- [1.27]-精益开发:更富表现力的Model层和重量级数据获取的应对方案
- [1.28]-COOKIE:对COOKIE原生态的支持及记忆加密升级版
- [1.29]-开放与封闭:多入口和统一初始化
- [1.30]-保持的力量:接口开发最佳实践
- [1.31]-新型计划任务:以接口形式实现的计划任务
- [2.11]-核心思想:DI依赖注入-让资源更可控
- [2.12]-海量数据:可配置的分库分表
- [2.13]-接口调试:在线SQL语句查看与性能优化
- [2.14]-测试驱动开发:意图导向编程下的接口开发
- [2.15]-演进:新型计划任务续篇
- [2.16]-领域驱动设计:应对复杂领域业务的Domain层
- [2.17]-微服务:Api接口服务层
- [2.18]-定制化:资源服务的再实现
- [2.19]-扩展库:可重用的扩展类库
- [2.20]-约定编程:架构明显的编程风格
- [2.21]-服务器统一部署方案简明版:CentOs---Nginx---php-fpm---MySql-[--Memcached]
- [2.22]-更多工具:精益项目和团队建设
- [3.1]-扩展类库:微信开发
- [3.2]-扩展类库:代理模式下phprpc协议的轻松支持
- [3.3]-扩展类库:基于PHPMailer的邮件发送
- [3.4]-扩展类库:优酷开放平台接口调用
- [3.5]-扩展类库:七牛云存储接口调用
- [3.6]-扩展类库:新型计划任务
- [3.8]-扩展类库:用户、会话和第三方登录集成
- [3.9]-扩展类库:swoole支持下的长链接和异步任务实现
- [3.11]-扩展类库:基于FastRoute的快速路由
- [4.2]-开发实战2:模拟优酷开放平台接口项目开发
- [4.3]-开发实战3:一个简单的小型项目开发(奔跑吧兄弟投票活动)
- [5.1]-架构与思想:PhalApi核心设计和思想解读
- [5.2]-杂谈:扯一些PhalApi的前世和今生
- [5.3]-框架总结:术语表和PHP开发建议
- [5.4]-许可
- [5.5]-联系和加入我们
- [5.6]-更新日记
- [5.8]-致框架贡献者:加入PhalApi开源指南
- [6.1]-基于接口查询语言的SDK包
- [6.2]-SDK包(JAVA版)
- [6.3]-SDK包(PHP版)
- [6.4]-SDK包(Objective-C版)
- [6.5]-SDK包(javascript版)
- [6.6]-SDK包(Ruby版)
- [8.1]-PhalApi视频教程
- 附录1:接口文档参考模板