# :-: **健康方舟云上部署總覽圖**
服務器端采用Nginx+

## :-: 阿里云相關部署
云服務器配置:
云服務器放開對應端口:22(服務器連接ssh接口)、3306(mysql接口)、6379(redis接口)、80(HTTP接口)、443(HTTPS接口)
云數據庫RDS部署:
建立與服務器同區域的RDS數據庫服務

設置定時備份

配置數據庫帳號密碼

oss存儲桶:
建立與服務器同區域的oss存儲桶

配置圖片存儲域名

配置圖片存儲樣式

## :-: 服務器相關部署
## **Nginx 1.17.10安裝:**
### 一、安裝編譯工具及庫文件
~~~
yum -y install make zlib zlib-devel gcc-c++ libtool ?openssl openssl-devel
~~~
### 二、首先要安裝 PCRE
PCRE 作用是讓 Nginx 支持 Rewrite 功能。
1、下載 PCRE 安裝包,下載地址:?[http://downloads.sourceforge.net/project/pcre/pcre/8.35/pcre-8.35.tar.gz](http://downloads.sourceforge.net/project/pcre/pcre/8.35/pcre-8.35.tar.gz)
~~~
[root@bogon?src]# cd /usr/local/src/
[root@bogon?src]# wget?http://downloads.sourceforge.net/project/pcre/pcre/8.35/pcre-8.35.tar.gz
~~~

2、解壓安裝包:
~~~
[root@bogon?src]# tar zxvf pcre-8.35.tar.gz
~~~
3、進入安裝包目錄
~~~
[root@bogon?src]# cd pcre-8.35
~~~
4、編譯安裝?
~~~
[root@bogon?pcre-8.35]# ./configure
[root@bogon?pcre-8.35]# make?&& make install
~~~
5、查看pcre版本
~~~
[root@bogon?pcre-8.35]# pcre-config --version
~~~

### 安裝 Nginx
1、下載 Nginx,下載地址:[https://nginx.org/en/download.html](https://nginx.org/en/download.html)
~~~
[root@bogon?src]# cd /usr/local/src/
[root@bogon?src]# wget?http://nginx.org/download/nginx-1.6.2.tar.gz
~~~
2、解壓安裝包
~~~
[root@bogon?src]# tar zxvf nginx-1.6.2.tar.gz
~~~
3、進入安裝包目錄
~~~
[root@bogon?src]# cd nginx-1.6.2
~~~
4、編譯安裝
~~~
[root@bogon?nginx-1.6.2]# ./configure --prefix=/usr/local/webserver/nginx --with-http_stub_status_module --with-http_ssl_module --with-pcre=/usr/local/src/pcre-8.35
[root@bogon?nginx-1.6.2]# make
[root@bogon?nginx-1.6.2]# make install
~~~
5、查看nginx版本
~~~
[root@bogon?nginx-1.6.2]# /usr/local/webserver/nginx/sbin/nginx -v
~~~

到此,nginx安裝完成。
* * *
## Nginx 配置
創建 Nginx 運行使用的用戶 www:
~~~
[root@bogon?conf]# /usr/sbin/groupadd www?
[root@bogon?conf]# /usr/sbin/useradd -g www www
~~~
配置nginx.conf ,將/usr/local/webserver/nginx/conf/nginx.conf替換為以下內容
~~~
[root@bogon?conf]# ?cat /usr/local/webserver/nginx/conf/nginx.conf
user www www;
worker_processes 2; #設置值和CPU核心數一致
error_log /usr/local/webserver/nginx/logs/nginx_error.log crit; #日志位置和日志級別
pid /usr/local/webserver/nginx/nginx.pid;
#Specifies the value for maximum file descriptors that can be opened by this process.
worker_rlimit_nofile 65535;
events
{
? use epoll;
? worker_connections 65535;
}
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';
??
#charset gb2312;
? ? ?
? server_names_hash_bucket_size 128;
? client_header_buffer_size 32k;
? large_client_header_buffers 4 32k;
? client_max_body_size 8m;
? ? ?
? sendfile on;
? tcp_nopush on;
? keepalive_timeout 60;
? tcp_nodelay on;
? fastcgi_connect_timeout 300;
? fastcgi_send_timeout 300;
? fastcgi_read_timeout 300;
? fastcgi_buffer_size 64k;
? fastcgi_buffers 4 64k;
? fastcgi_busy_buffers_size 128k;
? fastcgi_temp_file_write_size 128k;
? gzip on;?
? gzip_min_length 1k;
? gzip_buffers 4 16k;
? gzip_http_version 1.0;
? gzip_comp_level 2;
? gzip_types text/plain application/x-javascript text/css application/xml;
? gzip_vary on;
?
? #limit_zone crawler $binary_remote_addr 10m;
?#下面是server虛擬主機的配置
?server
? {
? ? listen 80;#監聽端口
? ? server_name localhost;#域名
? ? index index.html index.htm index.php;
? ? root /usr/local/webserver/nginx/html;#站點目錄
? ? ? location ~ .*\.(php|php5)?$
? ? {
? ? ? #fastcgi_pass unix:/tmp/php-cgi.sock;
? ? ? fastcgi_pass 127.0.0.1:9000;
? ? ? fastcgi_index index.php;
? ? ? include fastcgi.conf;
? ? }
? ? location ~ .*\.(gif|jpg|jpeg|png|bmp|swf|ico)$
? ? {
? ? ? expires 30d;
? # access_log off;
? ? }
? ? location ~ .*\.(js|css)?$
? ? {
? ? ? expires 15d;
? ?# access_log off;
? ? }
? ? access_log off;
? }
}
~~~
檢查配置文件nginx.conf的正確性命令:
~~~
[root@bogon?conf]# /usr/local/webserver/nginx/sbin/nginx -t
~~~

* * *
## 啟動 Nginx
Nginx 啟動命令如下:
~~~
[root@bogon?conf]# /usr/local/webserver/nginx/sbin/nginx
~~~

* * *
## 訪問站點
從瀏覽器訪問我們配置的站點ip:

* * *
## Nginx 其他命令
以下包含了 Nginx 常用的幾個命令:
~~~
/usr/local/webserver/nginx/sbin/nginx -s reload # 重新載入配置文件
/usr/local/webserver/nginx/sbin/nginx -s reopen # 重啟 Nginx
/usr/local/webserver/nginx/sbin/nginx -s stop # 停止 Nginx
~~~
# MySQL 安裝配置
MySQL 是最流行的關系型數據庫管理系統,由瑞典MySQL?AB公司開發,目前屬于Oracle公司。
MySQL所使用的SQL語言是用于訪問數據庫的最常用標準化語言。
MySQL由于其體積小、速度快、總體擁有成本低,尤其是開放源碼這一特點,一般中小型網站的開發都選擇MySQL作為網站數據庫。
* * *
## MySQL 安裝
本教程的系統平臺:CentOS release 6.6 (Final) 64位。
### 一、安裝編譯工具及庫文件
~~~
yum -y install gcc gcc-c++ make autoconf libtool-ltdl-devel gd-devel freetype-devel libxml2-devel libjpeg-devel libpng-devel openssl-devel curl-devel bison patch unzip libmcrypt-devel libmhash-devel ncurses-devel sudo bzip2 flex libaio-devel
~~~
### 二、?安裝cmake 編譯器
cmake 版本:cmake-3.1.1。
1、下載地址:[http://www.cmake.org/files/v3.1/cmake-3.1.1.tar.gz](http://www.cmake.org/files/v3.1/cmake-3.1.1.tar.gz)
~~~
$ wget?http://www.cmake.org/files/v3.1/cmake-3.1.1.tar.gz
~~~

2、解壓安裝包
~~~
$ tar zxvf cmake-3.1.1.tar.gz
~~~
3、進入安裝包目錄
~~~
$ cd cmake-3.1.1
~~~
4、編譯安裝?
~~~
$ ./bootstrap
$ make && make install
~~~
* * *
### 安裝 MySQL 5.6.50
MySQL版本:mysql-5.6.15。
1、下載地址:?[http://dev.mysql.com/get/Downloads/MySQL-5.6/mysql-5.6.50.tar.gz](http://dev.mysql.com/get/Downloads/MySQL-5.6/mysql-5.6.50.tar.gz)
~~~
$ wget?http://dev.mysql.com/get/Downloads/MySQL-5.6/mysql-5.6.15.tar.gz
~~~

2、解壓安裝包
~~~
$ tar zxvf mysql-5.6.15.tar.gz
~~~
3、進入安裝包目錄
~~~
$ cd mysql-5.6.15
~~~
4、編譯安裝?
~~~
$ cmake -DCMAKE_INSTALL_PREFIX=/usr/local/webserver/mysql/ -DMYSQL_UNIX_ADDR=/tmp/mysql.sock -DDEFAULT_CHARSET=utf8 -DDEFAULT_COLLATION=utf8_general_ci -DWITH_EXTRA_CHARSETS=all -DWITH_MYISAM_STORAGE_ENGINE=1 -DWITH_INNOBASE_STORAGE_ENGINE=1 -DWITH_MEMORY_STORAGE_ENGINE=1 -DWITH_READLINE=1 -DWITH_INNODB_MEMCACHED=1 -DWITH_DEBUG=OFF -DWITH_ZLIB=bundled -DENABLED_LOCAL_INFILE=1 -DENABLED_PROFILING=ON -DMYSQL_MAINTAINER_MODE=OFF -DMYSQL_DATADIR=/usr/local/webserver/mysql/data -DMYSQL_TCP_PORT=3306
$ make && make install
~~~
5、查看mysql版本:
~~~
$ /usr/local/webserver/mysql/bin/mysql --version
~~~

到此,mysql安裝完成。
* * *
## MySQL 配置
1、創建mysql運行使用的用戶mysql:
~~~
$ /usr/sbin/groupadd mysql
$ /usr/sbin/useradd -g mysql mysql
~~~
2、創建binlog和庫的存儲路徑并賦予mysql用戶權限
~~~
$ mkdir -p /usr/local/webserver/mysql/binlog /www/data_mysql
$ chown mysql.mysql /usr/local/webserver/mysql/binlog/ /www/data_mysql/
~~~
3、創建my.cnf配置文件
將/etc/my.cnf替換為下面內容
~~~
$ cat /etc/my.cnf
[client]
port = 3306
socket = /tmp/mysql.sock
[mysqld]
replicate-ignore-db = mysql
replicate-ignore-db = test
replicate-ignore-db = information_schema
user = mysql
port = 3306
socket = /tmp/mysql.sock
basedir = /usr/local/webserver/mysql
datadir = /www/data_mysql
log-error = /usr/local/webserver/mysql/mysql_error.log
pid-file = /usr/local/webserver/mysql/mysql.pid
open_files_limit = 65535
back_log = 600
max_connections = 5000
max_connect_errors = 1000
table_open_cache = 1024
external-locking = FALSE
max_allowed_packet = 32M
sort_buffer_size = 1M
join_buffer_size = 1M
thread_cache_size = 600
#thread_concurrency = 8
query_cache_size = 128M
query_cache_limit = 2M
query_cache_min_res_unit = 2k
default-storage-engine = MyISAM
default-tmp-storage-engine=MYISAM
thread_stack = 192K
transaction_isolation = READ-COMMITTED
tmp_table_size = 128M
max_heap_table_size = 128M
log-slave-updates
log-bin = /usr/local/webserver/mysql/binlog/binlog
binlog-do-db=oa_fb
binlog-ignore-db=mysql
binlog_cache_size = 4M
binlog_format = MIXED
max_binlog_cache_size = 8M
max_binlog_size = 1G
relay-log-index = /usr/local/webserver/mysql/relaylog/relaylog
relay-log-info-file = /usr/local/webserver/mysql/relaylog/relaylog
relay-log = /usr/local/webserver/mysql/relaylog/relaylog
expire_logs_days = 10
key_buffer_size = 256M
read_buffer_size = 1M
read_rnd_buffer_size = 16M
bulk_insert_buffer_size = 64M
myisam_sort_buffer_size = 128M
myisam_max_sort_file_size = 10G
myisam_repair_threads = 1
myisam_recover
interactive_timeout = 120
wait_timeout = 120
skip-name-resolve
#master-connect-retry = 10
slave-skip-errors = 1032,1062,126,1114,1146,1048,1396
#master-host = 192.168.1.2
#master-user = username
#master-password = password
#master-port = 3306
server-id = 1
loose-innodb-trx=0?
loose-innodb-locks=0?
loose-innodb-lock-waits=0?
loose-innodb-cmp=0?
loose-innodb-cmp-per-index=0
loose-innodb-cmp-per-index-reset=0
loose-innodb-cmp-reset=0?
loose-innodb-cmpmem=0?
loose-innodb-cmpmem-reset=0?
loose-innodb-buffer-page=0?
loose-innodb-buffer-page-lru=0?
loose-innodb-buffer-pool-stats=0?
loose-innodb-metrics=0?
loose-innodb-ft-default-stopword=0?
loose-innodb-ft-inserted=0?
loose-innodb-ft-deleted=0?
loose-innodb-ft-being-deleted=0?
loose-innodb-ft-config=0?
loose-innodb-ft-index-cache=0?
loose-innodb-ft-index-table=0?
loose-innodb-sys-tables=0?
loose-innodb-sys-tablestats=0?
loose-innodb-sys-indexes=0?
loose-innodb-sys-columns=0?
loose-innodb-sys-fields=0?
loose-innodb-sys-foreign=0?
loose-innodb-sys-foreign-cols=0
slow_query_log_file=/usr/local/webserver/mysql/mysql_slow.log
long_query_time = 1
[mysqldump]
quick
max_allowed_packet = 32M
~~~
4、初始化數據庫
~~~
$/usr/local/webserver/mysql/scripts/mysql_install_db --defaults-file=/etc/my.cnf ?--user=mysql
~~~
顯示如下信息:
~~~
Installing MySQL system tables...2015-01-26 20:18:51 0 [Warning] TIMESTAMP with implicit DEFAULT value is deprecated. Please use --explicit_defaults_for_timestamp server option (see documentation for more details).
OK
Filling help tables...2015-01-26 20:18:57 0 [Warning] TIMESTAMP with implicit DEFAULT value is deprecated. Please use --explicit_defaults_for_timestamp server option (see documentation for more details).
OK
...
~~~
5、創建開機啟動腳本
~~~
$ cd /usr/local/webserver/mysql/
$ cp support-files/mysql.server /etc/rc.d/init.d/mysqld?
$ chkconfig --add mysqld?
$ chkconfig --level 35 mysqld on
~~~
6、啟動mysql服務器
~~~
$ service mysqld start
~~~

7、連接 MySQL
~~~
$ /usr/local/webserver/mysql/bin/mysql -u root -p
~~~

## 修改MySQL用戶密碼
~~~
mysqladmin -u用戶名 -p舊密碼 password 新密碼
~~~
或進入mysql命令行
~~~
SET PASSWORD FOR '用戶名'@'主機' = PASSWORD(‘密碼');
~~~
創建新用戶并授權:
~~~
grant all privileges on *.* to 用戶名@'%' identified by '密碼' with grant option;
~~~
### 其他命令
* 啟動:service mysqld start
* 停止:service mysqld stop
* 重啟:service mysqld?restart
* 重載配置:service mysqld?reload
[](https://www.runoob.com/linux/nginx-install-setup.html)[Nginx 安裝配置](https://www.runoob.com/linux/nginx-install-setup.html "Nginx 安裝配置")
##
1 篇筆記寫筆記
1. ???li1121567428
??li1\*\*\*567428@live.com
63
啟動MySQL服務器程序,確認狀態
1)啟動MySQL服務程序
啟動服務并查看狀態:
~~~
[root@dbsvr1 pub]# service mysql start
Starting MySQL... [確定]
[root@dbsvr1 pub]# service mysql status
MySQL running (31724) [確定]
~~~
服務器進程為mysqld,監聽的默認端口為TCP 3306:
~~~
[root@dbsvr1 pub]# netstat -anpt | grep mysql
tcp 0 0 :::3306 :::* LISTEN 31724/mysqld
~~~
2)查看MySQL服務器進程、運行用戶
提供連接服務的進程為mysqld,由其父進程mysqld\_safe啟動。
~~~
[root@dbsvr1 pub]# ps -elf | grep mysqld
4 S root 31619 1 0 80 0 - 2834 wait 15:14 pts/0 00:00:00 /bin/sh /usr/bin/mysqld_safe --datadir=/var/lib/mysql --pid file=/var/lib/mysql/dbsvr1.tarena.com.pid
4 S mysql 31724 31619 0 80 0 - 252496 poll_s 15:14 pts/0 00:00:01 /usr/sbin/mysqld --basedir=/usr --datadir=/var/lib/mysql --plugin-dir=/usr/lib64/mysql/plugin --user=mysql --log-error=/var/lib/mysql/dbsvr1.tarena.com.err --pid-file=/var/lib/mysql/dbsvr1.tarena.com.pid
~~~
數據庫的默認存放位置為 /var/lib/mysql:
~~~
[root@dbsvr1 pub]# ls /var/lib/mysql/
auto.cnf ibdata1 mysql RPM_UPGRADE_HISTORY
dbsvr1.tarena.com.err ib_logfile0 mysql.sock RPM_UPGRADE_MARKER-LAST
dbsvr1.tarena.com.pid ib_logfile1 performance_schema test
~~~
安裝PHP7.2
1)依賴包安裝
yum install gcc-c++ libxml2 libxml2-devel openssl openssl-devel bzip2 bzip2-devel libcurl libcurl-devel libjpeg libjpeg-devel libpng libpng-devel freetype freetype-devel gmp gmp-devel libmcrypt libmcrypt-devel readline readline-devel libxslt libxslt-devel gd net-snmp-\*
libzip版本低問題處理
libzip要求1.1及以上,系統提供1.0需要升級
官方網站: [https://libzip.org/](https://links.jianshu.com/go?to=https%3A%2F%2Flibzip.org%2F)
\[root@apache\_251 ~\]# wget [https://libzip.org/download/libzip-1.5.2.tar.gz](https://links.jianshu.com/go?to=https%3A%2F%2Flibzip.org%2Fdownload%2Flibzip-1.5.2.tar.gz)
\[root@apache\_251 ~\]# tar xf [libzip-1.5.2.tar.gz](https://links.jianshu.com/go?to=https%3A%2F%2Flibzip.org%2Fdownload%2Flibzip-1.5.2.tar.gz)
\[root@apache\_251 ~\]# cd [libzip-1.5.2](https://links.jianshu.com/go?to=https%3A%2F%2Flibzip.org%2Fdownload%2Flibzip-1.5.2.tar.gz)
\[root@apache\_251 libzip-1.5.2\]# mkdir build
\[root@apache\_251 build\]# cd build
\[root@apache\_251 build\]#cmake ..
\[root@apache\_251 build\]#make
\[root@apache\_251 build\]#make install
2)配置
\[root@apache\_251 ~\]# tar xf php-7.3.4.tar.bz2
\[root@apache\_251 php-7.3.4\]# ./configure --prefix=/usr/local/php --with-config-file-path=/usr/local/php/etc --with-mysqli=mysqlnd --enable-pdo --with-pdo-mysql=mysqlnd --with-iconv-dir=/usr/local/ --enable-fpm --with-fpm-user=www --with-fpm-group=www --with-pcre-regex --with-zlib --with-bz2 --enable-calendar --disable-phar --with-curl --enable-dba --with-libxml-dir --enable-ftp --with-gd --with-jpeg-dir --with-png-dir --with-zlib-dir --with-freetype-dir --enable-gd-jis-conv --with-mhash --enable-mbstring --enable-opcache=yes --enable-pcntl --enable-xml --disable-rpath --enable-shmop --enable-sockets --enable-zip --enable-bcmath --with-snmp --disable-ipv6 --with-gettext --disable-rpath --disable-debug --enable-embedded-mysqli --with-mysql-sock=/usr/local/mysql/
~~~jsx
配置參數說明
---prefix=/usr/local/php 安裝路徑
--with-config-file-path=/usr/local/php/etc 配置文件路徑
--with-mysqli=mysqlnd --enable-embedded-mysqli --with-mysql-sock=/usr/local/mysql/ mysql支持及客戶端設置
--enable-pdo --with-pdo-mysql=mysqlnd 開啟php pdo,PDO一是PHP數據對象(PHP Data Object)的縮寫
--with-iconv-dir=/usr/local/ 指定轉碼工具,各種字符集間的轉換
--enable-fpm --with-fpm-user=www --with-fpm-group=www 支持php-fpm,允許以服務的方式啟動PHP
--with-pcre-regex 支持pcre正則表達式
--with-zlib --with-bz2 --with-zlib-dir --enable-zip 支持壓縮
--enable-calendar 支持日歷
--disable-phar PHAR (“Php ARchive”) 是PHP里類似于JAR的一種打包文件。如果你使用的是 PHP 5.3 或更高版本,那么Phar后綴文件是默認開啟支持的.
--with-curl 支持curl
--enable-dba 開啟dba函數支持
--with-libxml-dir 支持xml文件庫 對xml讀取和查詢
--enable-ftp 支持ftp
--with-gd --with-jpeg-dir --with-png-dir 支持圖片
--with-freetype-dir 支持字庫
--enable-gd-jis-conv 支持gd庫
--with-mhash --enable-mbstring 支持加密
--enable-opcache=yes 開啟opcache
--enable-pcntl 開啟PHP進程控制支持 默認是關閉的
--enable-xml 允許xml文件
--disable-rpath 關閉額外的運行庫文件
--enable-shmop 開啟Shmop 是一個易用的允許PHP讀取、寫入、創建和刪除Unix共享內存段的函數集
--enable-sockets 打開 sockets 支持
--enable-bcmath 增加bcmath擴展的支持,這是一個支持大整數計算的擴展。
--with-snmp 支持snmp
--disable-ipv6 關閉IPV6支持
--with-gettext 打開gnu 的gettext 支持,編碼庫用到
--disable-debug 關閉調試模式
~~~
3)編譯
\[root@apache\_251 php-7.3.4\]# make
4)安裝
\[root@apache\_251 php-7.3.4\]# make install
5)拷貝一個配置文件
\[root@apache\_251 php-7.3.4\]# cp /usr/src/php-7.3.4/php.ini-production /usr/local/php/etc/php.ini
## 三、PHP配置
#### **關于PHP工作方式**
* #### 作為模塊運行
* #### 獨立服務運行
1)作為apache模塊運行
# if bind to apache
\--with-apxs2=/usr/local/apache2/bin/apxs
AddType application/x-httpd-php .php
# if no mysql
./configure --with-mysql=mysqlnd --with-mysqli=mysqlnd --with-pdo-mysql=mysqlnd
2)作為服務運行
思考問題 apache如何將PHP請求交給PHP呢 PHP是一門語言
~~~objectivec
思路 CGI fastcgi
~~~
CGI 公共網關接口 (COMMON GATEWAY INTERFACE),是一個協議
~~~objectivec
它的作用就是幫助服務器與語言通信. 就是apache和php進行通信,因為apache和php的語言不通,因此需要一個溝通轉換的過程,而CGI就是這個
溝通的協議。
~~~
FastCGI 快速通用網關接口(FastCommonGatewayInterface),是CGI的升級版,一種語言無關的協議,FastCGI是用來提高CGI程序性能的
缺點:傳統的cgi協議在每次連接請求時,會開啟一個進程進行處理,處理完畢會關閉該進程,因此下次連接,又要再次開啟一個進程進行處理,因此有多少個連接就有多少個cgi進程,這也就是為什么傳統的cgi會顯得緩慢的原因,因此過多的進程會消耗資源和內存。而fast-cgi則是一個進程可以處理多個請求,和上面的cgi協議完全不一樣,cgi是一個進程只能處理一個請求,這樣就會導致大量的cgi程序,因此會給服務器帶來負擔。
php-fpm:是一個實現了FastCGI(協議)的程序
是php提供給http前端服務器(web serve)的fastcgi協議接口程序,允許一個進程對多個連接進行處理,而不會立即關閉這個進程,而是會接著處理下一個連接。
PHP-CGI:PHP-CGI是php自帶的Fast-CGI管理器。
PHP-CGI的不足:
php-cgi變更php.ini配置后需重啟php-cgi才能讓新的php-ini生效,不可以平滑重啟。
直接殺死php-cgi進程,php就不能運行了。(PHP-FPM和Spawn-FCGI就沒有這個問題,守護進程會平滑從新生成新的子進程。)
PHP-FPM(FastCGI Process Manager:FastCGI進程管理器)是一個PHPFastCGI管理器,對于PHP 5.3.3之前的php來說,是一個補丁包 ,旨在將FastCGI進程管理整合進PHP包中。如果你使用的是PHP5.3.3之前的PHP的話,就必須將它patch到你的PHP源代碼中,在編譯安裝PHP后才可以使用。從PHP 5.4 RC2開始,php-fpm已經轉正了
**PHP-FPM特點**
1. listen:The address on which to accept FastCGI requests.它支持TCP Socket和unix socket兩種通訊協議。可設置listen = \[::\]:9000。
2. listen.allowed\_clients:List of addresses (IPv4/IPv6) of FastCGI clients which are allowed to connect. 該配置項為逗號分隔的列表,如listen.allowed\_clients = 127.0.0.1,172.17.0.5。
3. pm:Choose how the process manager will control the number of child processes. 該配置項設置FPM管理進程池的方式,包括static、dynamic、ondemand三種。
4. pm.max\_requests:The number of requests each child process should execute before respawning. This can be useful to work around memory leaks in 3rd party libraries.設置每個子進程處理請求數的上限,對于處理第三方庫中的內存泄漏很有用。
5. pm.status\_path:The URI to view the FPM status page. 支持狀態頁面監控php-fpm
**PHP-FPM工作原理:**
1、Web Server啟動時載入FastCGI進程管理器(IIS ISAPI或Apache Module)
2、FastCGI進程管理器自身初始化,啟動多個CGI解釋器進程(可見多個php-cgi)并等待來自Web Server的連接。
3、當客戶端請求到達Web Server時,FastCGI進程管理器選擇并連接到一個CGI解釋器。Web server將CGI環境變量和標準輸入發送到FastCGI子進程php-cgi。
4、FastCGI子進程完成處理后將標準輸出和錯誤信息從同一連接返回Web Server。當FastCGI子進程關閉連接時,請求便告處理完成。FastCGI子進程接著等待并處理來自FastCGI進程管理器(運行在Web Server中)的下一個連接。 在CGI模式中,php-cgi在此便退出了。
在上述情況中,你可以想象CGI通常有多慢。每一個Web請求PHP都必須重新解析php.ini、重新載入全部擴展并重初始化全部數據結構。使用FastCGI,所有這些都只在進程啟動時發生一次。一個額外的好處是,持續數據庫連接(Persistent database connection)可以工作。
# php-fpm服務設置 pool
每個pool可以監聽不同的sock、tcp/ip,pool池是支持定義多個pool的。所有的網站使用同一個池,那其中一個網站發生一些故障,比如程序員寫的一些程序有問題,就會把php資源耗盡,這樣的結果就是其他站點的php也會502。所以有必要把每一個站點隔離開。每個pool的名字要唯一。
#### PHP服務配置
# 主配置文件
\[root@apache\_251 var\]# egrep -v ";|$" /usr/local/php/etc/php-fpm.conf
\[global\]
pid = run/php-fpm.pid
error\_log = log/php-fpm.log
daemonize = yes
include = /usr/local/php/etc/php-fpm.d/\*.conf
# 子配置文件
\[root@apache\_251 var\]# cp /usr/local/php/etc/php-fpm.d/[www.conf.default](https://links.jianshu.com/go?to=http%3A%2F%2Fwww.conf.default) /usr/local/php/etc/php-fpm.d/[www.conf](https://links.jianshu.com/go?to=http%3A%2F%2Fwww.conf)
\[root@apache\_251 var\]# egrep -v ";|$" /usr/local/php/etc/php-fpm.d/[www.conf](https://links.jianshu.com/go?to=http%3A%2F%2Fwww.conf)
\[www\]
user = www
group = www
listen = 127.0.0.1:9000
listen.owner = www
listen.group = www
listen.mode = 0660
pm = dynamic
pm.max\_children = 5
pm.start\_servers = 2
pm.min\_spare\_servers = 1
pm.max\_spare\_servers = 3
~~~csharp
注釋
# 全局配置
[global]
# PID、可以不填
pid = /usr/local/php/var/run/php-fpm.pid
# 錯誤日志路徑、可以不填
error_log = /usr/local/php/var/log/php-fpm.log
# www虛擬主機配置、可寫多個
# pool命名:www
[www]
# 監聽socket方式
# 可以寫成listen = 127.0.0.1:9000
listen = /tmp/php-fcgi.sock
# 開啟php-fpm的執行用戶
user = www
# 開啟php-fpm的所屬組
group = www
# 監聽socket listen的用戶,和web服務器軟件的一致
listen.owner = nobody
# 監聽socket listen的組,和web服務器軟件的一致
listen.group = nobody
# 怎樣的形式啟用進程
pm = dynamic
# 最大開啟子進程數
pm.max_children = 50
# 一開始啟動多少子進程
pm.start_servers = 20
# 空閑時保留多少個子進程
pm.min_spare_servers = 5
# 最多空閑子進程
pm.max_spare_servers = 35
# 進程處理多少個請求之后銷毀重建
pm.max_requests = 500
# 限定打開最大的文件數
rlimit_files = 1024
~~~
## 四、PHP啟動
\[root@apache\_251 ~\]# cp /usr/src/php-7.3.4/sapi/fpm/php-fpm.service /etc/systemd/system/
\[root@apache\_251 ~\]# systemctl daemon-reload
\[root@apache\_251 ~\]# systemctl enable php-fpm
\[root@apache\_251 ~\]# systemctl start php-fpm
## :-: 程序相關部署
數據庫信息配置位置:/www/wwwroot/shop.gimp.cn/database.php
> <?php
return [
// 默認使用的數據庫連接配置
'default' => 'mysql',
// 自定義時間查詢規則
'time_query_rule' => [],
// 自動寫入時間戳字段
// true為自動識別類型 false關閉
// 字符串則明確指定時間字段類型 支持 int timestamp datetime date
'auto_timestamp' => true,
// 時間字段取出后的默認時間格式
'datetime_format' => 'Y-m-d H:i:s',
// 數據庫連接配置信息
'connections' => [
'mysql' => [
// 數據庫類型
'type' => 'mysql',
// 服務器地址
'hostname' => '127.0.0.1',
// 數據庫名
'database' => 'shop_gimp_cn',
// 用戶名
'username' => 'shop_gimp_cn',
// 密碼
'password' => 'kWy2dB8b8S4THi8p',
// 端口
'hostport' => '3306',
// 數據庫連接參數
'params' => [],
// 數據庫編碼默認采用utf8
'charset' => 'utf8',
// 數據庫表前綴
'prefix' => 'hyok',
// 數據庫部署方式:0 集中式(單一服務器),1 分布式(主從服務器)
'deploy' => 0,
// 數據庫讀寫是否分離 主從式有效
'rw_separate' => false,
// 讀寫分離后 主服務器數量
'master_num' => 1,
// 指定從服務器序號
'slave_no' => '',
// 是否嚴格檢查字段是否存在
'fields_strict' => false,
// 是否需要斷線重連
'break_reconnect' => true,
// 監聽SQL
'trigger_sql' => true,
// 開啟字段緩存
'fields_cache' => true,
// 字段緩存路徑
'schema_cache_path' => app()->getRuntimePath() . 'schema' . DIRECTORY_SEPARATOR,
],
// 更多的數據庫配置信息
],
];
OSS相關配置(如下圖):https://test.gimp.cn/alioss/admin/config/config.html

- 健康方舟技術性文檔
- 系統架構圖
- 系統源代碼
- 服務器配置方案
- 系統目錄結構
- 小程序前端地址庫
- 接口相關
- 系統接口
- 插件管理
- 插件列表
- 插件是否存在
- 地址管理
- 地址基礎信息
- 地址列表
- 地址列表子項結構
- 城市列表
- 通過名稱獲取城市信息
- 網站設置
- 網站基礎信息
- 手機端二維碼
- 上傳管理
- 頭像上傳
- 評價上傳
- 網站公告
- 公告信息
- 公告列表
- 廣告信息
- 默認圖片
- 商品接口
- 商品公共信息
- 修改商品點擊量
- 獲取商品海報
- 售后保障
- 商品品牌
- 商品瀏覽歷史
- 添加瀏覽歷史
- 刪除瀏覽記錄
- 瀏覽記錄分類列表
- 商品分類
- 分類樹狀結構信息
- 根據商品分類查詢關聯商品類型,查詢關聯品牌、屬性
- 商品信息
- 商品SKU基礎信息
- 商品SKU詳細信息
- 商品SKU列表信息
- 商品SKU商品推薦
- 商品SKU商品二維碼
- 商品收藏
- 添加信息
- 刪除收藏信息
- 分類列表信息
- 是否收藏
- 商品評價
- 添加信息·第一次評價
- 追評
- 評價基礎信息
- 評價列表信息
- 訂單相關接口
- 購物車
- 添加購物車
- 列表信息
- 編輯購物車
- 刪除信息
- 清空購物車
- 獲取購物車數量
- 訂單創建
- 創建訂單
- 計算信息
- 待支付訂單數據初始化
- 支付控制器
- 支付信息
- 支付調用
- 支付方式
- 獲取訂單支付狀態
- 訂單查詢操作
- 訂單詳情信息
- 訂單列表信息
- 訂單評價基礎信息
- 訂單收貨(收到所有貨物)
- 關閉訂單
- 獲取訂單數量
- 訂單包裹信息
- 訂單支付
- 訂單退款
- 發起退款
- 售后列表
- 取消發起的退款申請
- 買家退貨
- 維權詳情
- 平臺維權
- 發起維權
- 取消發起的平臺維權申請
- 維權詳情1
- 店鋪相關接口
- 店鋪會員
- 店鋪會員添加店鋪關注
- 店鋪會員取消店鋪關注
- 店鋪會員檢測是否關注
- 獲取會員店鋪分頁列表
- 入駐指南
- 入駐基礎信息
- 入駐列表信息
- 店鋪商品分類
- 樹狀信息
- 店鋪等級
- 店鋪分類
- 店鋪分類列表
- 店鋪
- 店鋪基礎信息
- 店鋪列表信息
- 會員相關接口
- 會員簽到
- 注冊
- 注冊設置
- 注冊協議
- 用戶名密碼注冊
- 注冊檢測存在性
- 登陸
- 登陸方式
- 第三方登陸
- 檢測openid是否存在
- 手機動態碼登陸
- 手機號登陸驗證碼
- 會員充值
- 會員充值基礎信息
- 會員充值配置
- 會員充值計算信息
- 會員充值訂單
- 會員充值訂單創建
- 會員
- 會員詳細信息
- 會員基礎信息
- 修改會員頭像
- 修改會員昵稱
- 修改會員手機
- 會員修改郵箱
- 修改會員密碼
- 會員綁定短信驗證
- 會員郵箱綁定驗證
- 設置密碼獲取驗證碼
- 通過token獲得會員id
- 賬戶獎勵規則說明
- 拉取會員頭像
- 統計會員優惠券
- 郵箱找回密碼
- 發送郵箱驗證碼
- 手機號找回密碼
- 短信驗證碼
- 會員賬戶
- 會員賬戶基礎信息
- 會員賬戶列表信息
- 地址信息
- 添加地址
- 編輯地址
- 設置默認地址
- 刪除地址信息
- 地址分頁列表信息
- 添加第三方地址信息
- 驗證碼
- 簽到
- 會員等級
- 支付接口
- 數據庫相關
- 數據庫操作
- 系統基礎表
- 配送相關表
- 商品相關表
- 廣告設置相關表
- 會員相關表
- 訂單相關表