##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:接口文檔參考模板