Cenos7 编译安装 Mariadb Nginx PHP Memcache ZendOpcache (实测 笔记 Centos 7.0 + Mariadb 10.0.15 + Nginx 1.6.2 + PHP 5.5.19)
时间:2016-04-09 23:41 来源:linux.it.net.cn 作者:IT
环境:
系统硬件:vmware vsphere (CPU:2*4核,内存2G,双网卡)
系统版本:CentOS-7.0-1406-x86_64-DVD.iso
安装步骤:
1.准备
1.1 显示系统版本
[root@centos ~]# cat /etc/redhat-release
CentOS Linux release 7.0.1406 (Core)
[root@centos ~]# uname -a
Linux tCentos7 3.10.0-123.13.2.el7.x86_64 #1 SMP Thu Dec 18 14:09:13 UTC 2014 x86_64 x86_64 x86_64 GNU/Linux
1.2 安装基本软件包
[root@centos ~]# yum install vim wget lsof gcc gcc-c++ bzip2 -y
[root@centos ~]# yum install net-tools bind-utils -y
1.3 显示IP地址 (centos7需要先安装 net-tools bind-utils包)
[root@centos ~]# ifconfig|grep inet
inet 192.168.1.10 netmask 255.255.255.0 broadcast 192.168.1.255
1.4 关闭selinux (不关有时会添加不了用户,或者重启后没法开机)
[root@centos ~]# vim /etc/selinux/config
屏蔽以下两行
#SELINUX=enforcing
#SELINUXTYPE=targeted
添加以下一行
SELINUXTYPE=disabled
保存,退出
重启后,查询是否关闭(显示Disabled则表示关闭)
[root@centos ~]# shutdown -r now
[root@centos ~]# getenforce
Disabled
2.安装mariadb
2.1 安装依赖
[root@centos ~]# yum install ncurses-devel openssl* bzip2 m4 -y
2.2 安装cmake
[root@centos ~]# cd /usr/local/src/
[root@centos ~]# tar zvxf cmake-3.0.0.tar.gz
[root@centos ~]# cd cmake-3.0.0
[root@centos ~]# ./bootstrap
[root@centos ~]# make && make install
2.3 安装bison(需要 m4 库)
[root@centos ~]# cd /usr/local/src/
[root@centos ~]# tar zvxf bison-3.0.tar.gz
[root@centos ~]# cd bison-3.0
[root@centos ~]# ./configure
[root@centos ~]# make && make install
2.4 安装jemalloc(需要 bzip2 库解压)
[root@centos ~]# cd /usr/local/src/
[root@centos ~]# tar xjf jemalloc-3.6.0.tar.bz2
[root@centos ~]# cd jemalloc-3.6.0
[root@centos ~]# ./configure
[root@centos ~]# make && make install
[root@centos ~]# echo '/usr/local/lib' > /etc/ld.so.conf.d/local.conf
[root@centos ~]# ldconfig
2.5 创建mysql需要的目录、配置用户和用户组
[root@centos ~]# groupadd mysql
[root@centos ~]# useradd -g mysql mysql -s /sbin/nologin
[root@centos ~]# mkdir -p /data/mysql
[root@centos ~]# chown -R mysql:mysql /data/mysql
2.6 编译mariadb(需要 cmake ncurses-devel bison 库)
[root@centos ~]# cd /usr/local/src/
[root@centos ~]# tar zvxf mariadb-10.0.15.tar.gz
[root@centos ~]# cd mariadb-10.0.15
[root@centos ~]# cmake -DMYSQL_UNIX_ADDR=/tmp/mysql.sock -DCMAKE_INSTALL_PREFIX=/opt/mysql -DMYSQL_DATADIR=/data/mysql -DMYSQL_TCP_PORT=3306 -DDEFAULT_CHARSET=utf8 -DDEFAULT_COLLATION=utf8_general_ci -DWITH_READLINE=1 -DWITH_EXTRA_CHARSETS=all -DEXTRA_CHARSETS=all -DWITH_SSL=system -DWITH_ZLIB=system -DWITH_LIBWRAP=0 -DENABLED_LOCAL_INFILE=1 -DEXTRA_CHARSETS=all
# 编译说明
# -DCMAKE_INSTALL_PREFIX=/usr/local/mariadb # 安装根目录
# -DMYSQL_DATADIR=/usr/local/mariadb/data/ # 数据存储目录
# -DMYSQL_UNIX_ADDR=/usr/local/mariadb/tmp/mysqld.sock # UNIX socket文件
# -DDEFAULT_CHARSET=utf8 # 默认字符集
# -DDEFAULT_COLLATION=utf8_general_ci # 默认字符校对
# -DMYSQL_TCP_PORT=3306 # TCP/IP端口
# -DWITH_READLINE=1 # readline库
# -DENABLED_LOCAL_INFILE=1 # 启用加载本地数据
# -DWITH_EXTRA_CHARSETS=all # 扩展支持编码 ( all | utf8,gbk,gb2312 | none )
# -DEXTRA_CHARSETS=all # 扩展字符支持
# -DWITH_MYISAM_STORAGE_ENGINE=1 # Myisam 引擎支持
# -DWITH_INNOBASE_STORAGE_ENGINE=1 # innoDB 引擎支持
# -DWITH_XTRADB_STORAGE_ENGINE=1 # XTRADB 支持
# -DWITH_ARIA_STORAGE_ENGINE=1 # ARIA 引擎支持
# -DWITH_ARCHIVE_STORAGE_ENGINE=1 # ARCHIVE 引擎支持
# -DWITH_BLACKHOLE_STORAGE_ENGINE=1 # BLACKHOLE 引擎支持
# -DWITH_FEDERATEDX_STORAGE_ENGINE=1 # FEDERATEDX 引擎支持
# -DWITH_PARTITION_STORAGE_ENGINE=1 # PARTITION 引擎支持
# -DWITH_PERFSCHEMA_STORAGE_ENGINE=1 # PERFSCHEMA 引擎支持
# -DWITH_SPHINX_STORAGE_ENGINE=1 # SPHINX 引擎支持
# -DCMAKE_EXE_LINKER_FLAGS="-ljemalloc" -DWITH_SAFEMALLOC=OFF #Jemalloc内存管理库
[root@centos ~]# make
[root@centos ~]# make install
2.7 创建软连接
[root@centos ~]# ln -s /opt/mysql/lib/lib* /usr/lib/
[root@centos ~]# ln -s /opt/mysql/bin/mysql /bin
2.8 修改配置文件
[root@centos ~]# cd /opt/mysql
[root@centos ~]# cp ./support-files/my-large.cnf /etc/my.cnf
[root@centos ~]# vim /etc/my.cnf
在[client]下添加一行
default-character-set = utf8
在[mysqld]下添加一行
datadir = /data/mysql
character-set-server = utf8
保存退出
2.9 修改服务启动检测文件
[root@centos ~]# cp /usr/local/src/mariadb-10.0.15/packaging/rpm-oel/mysql-systemd-start /opt/mysql/bin/
[root@centos ~]# chmod 755 /opt/mysql/bin/mysql-systemd-start
[root@centos ~]# vim ./bin/mysql-systemd-start
找到以下内容
datadir=$(/usr/bin/my_print_defaults server mysqld | grep '^--datadir=' | sed -n 's/--datadir=//p')
修改为
datadir=$(/opt/mysql/bin/my_print_defaults server mysqld | grep '^--datadir=' | sed -n 's/--datadir=//p')
找到以下内容
/usr/bin/mysql_install_db --rpm --datadir="$datadir" --user=mysql
修改为
/opt/mysql/scripts/mysql_install_db --rpm --basedir=/opt/mysql --datadir="$datadir" --user=mysql
找到以下内容
mysqladmin ping >/dev/null 2>&1 && break
修改为
/opt/mysql/bin/mysqladmin ping >/dev/null 2>&1 && break
保存退出
2.10 设置mysql开机自动启动服务
[root@centos ~]# cp /usr/local/src/mariadb-10.0.15/packaging/rpm-oel/mysqld.service /lib/systemd/system
[root@centos ~]# systemctl enable mysqld.service
[root@centos ~]# systemctl list-unit-files|grep enabled|grep mysql
[root@centos ~]# vim /etc/systemd/system/mysql.service
找到以下内容
ExecStartPre=/usr/bin/mysql-systemd-start pre
修改为
ExecStartPre=/opt/mysql/bin/mysql-systemd-start pre
找到以下内容
ExecStart=/usr/bin/mysqld_safe
修改为
ExecStart=/opt/mysql/bin/mysqld_safe
找到以下内容
ExecStartPost=/usr/bin/mysql-systemd-start post
修改为
ExecStartPost=/opt/mysql/bin/mysql-systemd-start post
找到以下内容
TimeoutSec=600
修改为
TimeoutSec=30
保存退出
2.11 启动服务
[root@centos ~]# systemctl daemon-reload
[root@centos ~]# systemctl start mysqld.service
[root@centos ~]# systemctl status mysqld.service -l
[root@centos ~]# ps -ef|grep mysqld
[root@centos ~]# lsof -n | grep jemalloc
2.12 数据库初始化、登录客户端
[root@centos ~]# cd /opt/mysql
[root@centos ~]# ./bin/mysql_secure_installation
根据提示设置数据密码,及其它设置
[root@centos ~]# mysql -u root -p
Mysql [(none)]>status;
Mysql [(none)]>show engines;
Mysql [(none)]>exit;
2.13 增加远程访问用户,并且打开防火墙3306端口(不远程连接数据,可省略)
[root@centos ~]# mysql -u root -p
Mysql [(none)]> GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY '123456' WITH GRANT OPTION;
Mysql [(none)]> FLUSH PRIVILEGES;
Mysql [(none)]> exit;
(root是用户名,%是主机名或IP地址,这里的%代表任意主机或IP地址,也可指定唯一的IP地址;密码是MyPassword )
2.14 防火墙添加3306端口
[root@centos ~]# iptables -L|grep ACCEPT
[root@centos ~]# firewall-cmd --zone=public --add-port=3306/tcp --permanent
[root@centos ~]# firewall-cmd --reload
[root@centos ~]# iptables -L|grep ACCEPT
3.编译安装Nginx
3.1 下载包
[root@centos ~]# cd /usr/local/src/
[root@centos ~]# wget http://nginx.org/download/nginx-1.6.2.tar.gz
[root@centos ~]# wget ftp://ftp.csx.cam.ac.uk/pub/software/programming/pcre/pcre-8.36.tar.gz
[root@centos ~]# wget http://zlib.net/zlib-1.2.8.tar.gz
[root@centos ~]# wget http://www.openssl.org/source/openssl-1.0.1j.tar.gz
[root@centos ~]# wget http://www.canonware.com/download/jemalloc/jemalloc-3.6.0.tar.bz2
3.2 安装依赖
[root@centos ~]# yum install zlib-devel openssl-devel -y
3.3 安装Pcre
[root@centos ~]# cd /usr/local/src/
[root@centos ~]# tar zvxf pcre-8.36.tar.gz
[root@centos ~]# cd pcre-8.36
[root@centos ~]# ./configure
[root@centos ~]# make && make install
3.4 安装openssl
[root@centos ~]# cd /usr/local/src/
[root@centos ~]# tar zvxf openssl-1.0.1j.tar.gz
[root@centos ~]# cd openssl-1.0.1j
[root@centos ~]# ./config
[root@centos ~]# make && make install
3.5 安装zlib
[root@centos ~]# cd /usr/local/src/
[root@centos ~]# tar zvxf zlib-1.2.8.tar.gz
[root@centos ~]# cd zlib-1.2.8
[root@centos ~]# ./configure
[root@centos ~]# make && make install
3.6 创建www用户和组,创建www虚拟主机使用的目录,以及Nginx使用的日志目录,并且赋予他们适当的权限
[root@centos ~]# groupadd www
[root@centos ~]# useradd -g www www -s /sbin/nologin
[root@centos ~]# mkdir -p /data/www
[root@centos ~]# chmod +w /data/www
[root@centos ~]# chown -R www:www /data/www
***如果没法创建用户,需要检查SELinux状态是否关闭
3.7 安装nginx
[root@centos ~]# cd /usr/local/src/
[root@centos ~]# tar zvxf nginx-1.6.2.tar.gz
[root@centos ~]# cd nginx-1.6.2
[root@centos ~]# ./configure --prefix=/opt/nginx --user=www --group=www --with-http_stub_status_module --with-http_ssl_module --with-http_gzip_static_module --with-openssl=/usr/local/src/openssl-1.0.1j --with-zlib=/usr/local/src/zlib-1.2.8 --with-pcre=/usr/local/src/pcre-8.36 --with-ld-opt="-ljemalloc"
[root@centos ~]# make && make install
3.8 修改 nginx.conf
[root@centos ~]# vim /opt/nginx/conf/nginx.conf
修改前面几行为:
user www www;
worker_processes auto;
error_log logs/error.log crit;
pid logs/nginx.pid;
events{
use epoll;
worker_connections 65535;
}
找到,并修改 root 行的内容
location / {
root /data/www;
index index.html index.htm;
}
保存,退出
3.9 建立测试首页
[root@centos ~]# vim /data/www/index.html
<html>
<head><title>nginx index.html</title></head>
<body>
<h1>index.html</h1>
</body>
</html>
保存,退出
3.10 测试和运行
[root@centos ~]# cd /opt/nginx
[root@centos ~]# ldconfig
[root@centos ~]# ./sbin/nginx -c /opt/nginx/conf/nginx.conf -t
如果显示下面信息,即表示配置没问题
nginx: the configuration file /opt/nginx/conf/nginx.conf syntax is ok
nginx: configuration file /opt/nginx/conf/nginx.conf test is successful
查看jemalloc是否生效,需要先启动nginx
[root@centos ~]# ./sbin/nginx -c /opt/nginx/conf/nginx.conf
[root@centos ~]# lsof -n | grep jemalloc
ginx 2346 root mem REG 253,1 1824470 51571788 /usr/local/lib/libjemalloc.so.1
nginx 2347 www mem REG 253,1 1824470 51571788 /usr/local/lib/libjemalloc.so.1
nginx 2348 www mem REG 253,1 1824470 51571788 /usr/local/lib/libjemalloc.so.1
nginx 2349 www mem REG 253,1 1824470 51571788 /usr/local/lib/libjemalloc.so.1
nginx 2350 www mem REG 253,1 1824470 51571788 /usr/local/lib/libjemalloc.so.1
3.11 防火墙添加80端口
[root@centos ~]# iptables -L|grep ACCEPT
[root@centos ~]# firewall-cmd --zone=public --add-port=80/tcp --permanent
[root@centos ~]# firewall-cmd --reload
[root@centos ~]# iptables -L|grep ACCEPT
3.12 浏览器打开
http://192.168.1.10
显示出欢迎内容,则表示成功
3.13 作为服务,开机后启动
[root@centos ~]# vim /usr/lib/systemd/system/nginx.service
增加以下内容
[Unit]
Description=The nginx HTTP and reverse proxy server
After=syslog.target network.target remote-fs.target nss-lookup.target
[Service]
Type=forking
PIDFile=/opt/nginx/logs/nginx.pid
ExecStartPre=/opt/nginx/sbin/nginx -c /opt/nginx/conf/nginx.conf -t
ExecStart=/opt/nginx/sbin/nginx -c /opt/nginx/conf/nginx.conf
ExecReload=/bin/kill -s HUP $MAINPID
ExecStop=/bin/kill -s QUIT $MAINPID
PrivateTmp=true
[Install]
WantedBy=multi-user.target
:wq 保存退出
[root@centos ~]# systemctl enable nginx.service
[root@centos ~]# systemctl list-unit-files|grep enabled|grep nginx
3.14 启动服务
[root@centos ~]# ./sbin/nginx -s stop
[root@centos ~]# systemctl daemon-reload
[root@centos ~]# systemctl start nginx.service
[root@centos ~]# systemctl status nginx.service -l
[root@centos ~]# ps -ef|grep nginx
[root@centos ~]# lsof -n | grep jemalloc
4 安装PHP
4.1 准备安装
下载 php-5.5.19.tar.gz 到/usr/local/src
下载 libiconv-1.14.tar.gz 到/usr/local/src
下载 libmcrypt-2.5.8.tar.gz 到/usr/local/src
下载 mcrypt-2.6.8.tar.gz 到/usr/local/src
下载 mhash-0.9.9.9.tar.gz 到/usr/local/src
下载 memcache-3.0.8.tar.gz 到/usr/local/src
下载 zendopcache-7.0.3.tgz 到/usr/local/src
4.2 更新依赖
yum install 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 libXpm* gcc gcc-c++ -y
4.3 安装libiconv (加强系统对支持字符编码转换的功能)
[root@centos ~]# cd /usr/local/src
[root@centos ~]# tar zvxf libiconv-1.14.tar.gz
[root@centos ~]# cd libiconv-1.14
[root@centos ~]# ./configure --prefix=/usr/local
[root@centos ~]# cd srclib
[root@centos ~]# sed -i -e '/gets is a security/d' ./stdio.in.h
[root@centos ~]# cd ..
[root@centos ~]# make && make install
[root@centos ~]# ln -sf /usr/local/lib/libiconv.so.2 /usr/lib64/
[root@centos ~]# ldconfig
4.4 安装libmcrypt,libltdl(加密算法库,PHP扩展mcrypt功能对此库有依耐关系,要使用mcrypt必须先安装此库)
[root@centos ~]# cd /usr/local/src
[root@centos ~]# tar zvxf libmcrypt-2.5.8.tar.gz
[root@centos ~]# cd libmcrypt-2.5.8
[root@centos ~]# ./configure
[root@centos ~]# make && make install
[root@centos ~]# cd libltdl/
[root@centos ~]# ./configure --enable-ltdl-install
[root@centos ~]# make && make install
[root@centos ~]# ln -sf /usr/local/lib/libmcrypt.* /usr/lib64/
[root@centos ~]# ln -sf /usr/local/bin/libmcrypt-config /usr/lib64/
[root@centos ~]# ldconfig
4.5 安装mhash (hash加密算法库)
[root@centos ~]# cd /usr/local/src/
[root@centos ~]# tar zvxf mhash-0.9.9.9.tar.gz
[root@centos ~]# cd mhash-0.9.9.9
[root@centos ~]# ./configure
[root@centos ~]# make && make install
[root@centos ~]# ln -sf /usr/local/lib/libmhash.* /usr/lib64/
[root@centos ~]# ldconfig
4.6 安装mcrypt
[root@centos ~]# cd /usr/local/src/
[root@centos ~]# tar zvxf mcrypt-2.6.8.tar.gz
[root@centos ~]# cd mcrypt-2.6.8
[root@centos ~]# ./configure
[root@centos ~]# make && make install
4.7 安装php (已经安装mariadb,nginx,ldap)
4.7.1 创建mysql软连接、ldap软连接
[root@centos ~]# mkdir -p /opt/mysql/include/mysql
[root@centos ~]# ln -s /opt/mysql/include/* /opt/mysql/include/mysql/
[root@centos ~]# ln -s /usr/lib64/libldap* /usr/lib
[root@centos ~]# ln -s /usr/lib64/liblber* /usr/lib
4.7.2 安装
[root@centos ~]# cd /usr/local/src/
[root@centos ~]# tar zvxf php-5.5.19.tar.gz
[root@centos ~]# cd php-5.5.19
[root@centos ~]# ./configure --prefix=/opt/php --with-config-file-path=/opt/php/etc --with-mysql=/opt/mysql --with-mysqli=/opt/mysql/bin/mysql_config --with-iconv-dir=/usr/local --with-freetype-dir --with-jpeg-dir --with-png-dir --with-zlib --with-libxml-dir=/usr --enable-xml --disable-rpath --enable-bcmath --enable-shmop --enable-sysvsem --enable-inline-optimization --with-curl --enable-mbregex --enable-fpm --enable-mbstring --with-mcrypt --with-gd --enable-gd-native-ttf --with-openssl --with-mhash --enable-pcntl --enable-sockets --with-ldap --with-ldap-sasl --with-xmlrpc --enable-zip --enable-soap
[root@centos ~]# make ZEND_EXTRA_LIBS='-liconv'
[root@centos ~]# make install
4.7.3 复制配置文件
[root@centos ~]# cp php.ini-production /opt/php/etc/php.ini
4.7.4 安装memcache扩展(已经安装PHP)
[root@centos ~]# cd /usr/local/src/
[root@centos ~]# tar zvxf memcache-3.0.8.tgz
[root@centos ~]# cd memcache-3.0.8
[root@centos ~]# /opt/php/bin/phpize
[root@centos ~]# ldconfig
[root@centos ~]# ./configure --with-php-config=/opt/php/bin/php-config
[root@centos ~]# make && make install
修改php配置文件,支持memcache
[root@centos ~]# vim /opt/php/etc/php.ini
在文件中搜索; extension_dir = "./" ,并在下面添加以下两行内容
extension_dir = "/opt/php/lib/php/extensions/no-debug-non-zts-20121212/"
extension = "memcache.so"
4.7.5 安装ZendOpcache扩展(已经安装php)
[root@centos ~]# cd /usr/local/src/
[root@centos ~]# tar zvxf zendopcache-7.0.3.tgz
[root@centos ~]# cd zendopcache-7.0.3
[root@centos ~]# /opt/php/bin/phpize
[root@centos ~]# ./configure --with-php-config=/opt/php/bin/php-config
[root@centos ~]# make && make install
修改php配置文件,支持ZendOpcache
[root@centos ~]# vim /opt/php/etc/php.ini
在文件中搜索; extension_dir = "./" ,并在下面添加以下两行内容
zend_extension=/opt/php/lib/php/extensions/no-debug-non-zts-20121212/opcache.so
opcache.memory_consumption=128
opcache.interned_strings_buffer=8
opcache.max_accelerated_files=4000
opcache.revalidate_freq=60
opcache.fast_shutdown=1
opcache.enable_cli=1
4.7.6 安装pdo_mysql扩展(已经安装PHP)
[root@centos ~]# cd /usr/local/src/
[root@centos ~]# cd php-5.5.19/ext/pdo_mysql/
[root@centos ~]# /opt/php/bin/phpize
[root@centos ~]# ./configure --with-php-config=/opt/php/bin/php-config --with-pdo-mysql=/opt/mysql
[root@centos ~]# make && make install
修改php配置文件,支持pdo_mysql
[root@centos ~]# vim /opt/php/etc/php.ini
在文件中搜索; extension_dir = "./" ,并在下面添加以下两行内容(如果extension_dir已存在,只添加后面一行)
extension_dir = "/opt/php/lib/php/extensions/no-debug-non-zts-20121212/"
extension = "pdo_mysql.so"
4.7.7 安装php-fpm
[root@centos ~]# cp /opt/php/etc/php-fpm.conf.default /opt/php/etc/php-fpm.conf
[root@centos ~]# vim /opt/php/etc/php-fpm.conf
修改内容,并且让其它生效
[global]
pid = run/php-fpm.pid
error_log = log/php-fpm.log
emergency_restart_threshold = 10
emergency_restart_interval = 1m
process_control_timeout = 5s
user = www
group = www
pm.max_children = 35
pm.start_servers = 20
pm.min_spare_servers = 5
pm.max_spare_servers = 35
保存,退出
# php-fpm.conf 重要参数详解
# pid = run/php-fpm.pid
# pid设置,默认在安装目录中的var/run/php-fpm.pid,建议开启
# error_log = log/php-fpm.log
# 错误日志,默认在安装目录中的var/log/php-fpm.log
# log_level = notice
# 错误级别. 可用级别为: alert(必须立即处理), error(错误情况), warning(警告情况), notice(一般重要信息), debug(调试信息). 默认: notice.
# emergency_restart_threshold = 60
# emergency_restart_interval = 60s
# 表示在emergency_restart_interval所设值内出现SIGSEGV或者SIGBUS错误的php-cgi进程数如果超过 emergency_restart_threshold个,php-fpm就会优雅重启。这两个选项一般保持默认值。
# process_control_timeout = 0
# 设置子进程接受主进程复用信号的超时时间. 可用单位: s(秒), m(分), h(小时), 或者 d(天) 默认单位: s(秒). 默认值: 0.
# daemonize = yes
# 后台执行fpm,默认值为yes,如果为了调试可以改为no。在FPM中,可以使用不同的设置来运行多个进程池。 这些设置可以针对每个进程池单独设置。
# listen = 127.0.0.1:9000
# fpm监听端口,即nginx中php处理的地址,一般默认值即可。可用格式为: 'ip:port', 'port', '/path/to/unix/socket'. 每个进程池都需要设置.
# listen.backlog = -1
# backlog数,-1表示无限制,由操作系统决定,此行注释掉就行。backlog含义参考:http://www.3gyou.cc/?p=41
# listen.allowed_clients = 127.0.0.1
# 允许访问FastCGI进程的IP,设置any为不限制IP,如果要设置其他主机的nginx也能访问这台FPM进程,listen处要设置成本地可被访问的IP。默认值是any。每个地址是用逗号分隔. 如果没有设置或者为空,则允许任何服务器请求连接
# listen.owner = www
# listen.group = www
# listen.mode = 0666
# unix socket设置选项,如果使用tcp方式访问,这里注释即可。
# user = www
# group = www
# 启动进程的帐户和组
# pm = dynamic #对于专用服务器,pm可以设置为static。
# 如何控制子进程,选项有static和dynamic。如果选择static,则由pm.max_children指定固定的子进程数。如果选择dynamic,则由下开参数决定:
# pm.max_children #,子进程最大数
# pm.start_servers #,启动时的进程数
# pm.min_spare_servers #,保证空闲进程数最小值,如果空闲进程小于此值,则创建新的子进程
# pm.max_spare_servers #,保证空闲进程数最大值,如果空闲进程大于此值,此进行清理
# pm.max_requests = 1000
# 设置每个子进程重生之前服务的请求数. 对于可能存在内存泄漏的第三方模块来说是非常有用的. 如果设置为 '0' 则一直接受请求. 等同于 PHP_FCGI_MAX_REQUESTS 环境变量. 默认值: 0.
# pm.status_path = /status
# FPM状态页面的网址. 如果没有设置, 则无法访问状态页面. 默认值: none. munin监控会使用到
# ping.path = /ping
# FPM监控页面的ping网址. 如果没有设置, 则无法访问ping页面. 该页面用于外部检测FPM是否存活并且可以响应请求. 请注意必须以斜线开头 (/)。
# ping.response = pong
# 用于定义ping请求的返回相应. 返回为 HTTP 200 的 text/plain 格式文本. 默认值: pong.
# request_terminate_timeout = 0
# 设置单个请求的超时中止时间. 该选项可能会对php.ini设置中的'max_execution_time'因为某些特殊原因没有中止运行的脚本有用. 设置为 '0' 表示 'Off'.当经常出现502错误时可以尝试更改此选项。
# request_slowlog_timeout = 10s
# 当一个请求该设置的超时时间后,就会将对应的PHP调用堆栈信息完整写入到慢日志中. 设置为 '0' 表示 'Off'
# slowlog = log/$pool.log.slow
# 慢请求的记录日志,配合request_slowlog_timeout使用
# rlimit_files = 1024
# 设置文件打开描述符的rlimit限制. 默认值: 系统定义值默认可打开句柄是1024,可使用 ulimit -n查看,ulimit -n 2048修改。
# rlimit_core = 0
# 设置核心rlimit最大限制值. 可用值: 'unlimited' 、0或者正整数. 默认值: 系统定义值.
# chroot =
# 启动时的Chroot目录. 所定义的目录需要是绝对路径. 如果没有设置, 则chroot不被使用.
# chdir =
# 设置启动目录,启动时会自动Chdir到该目录. 所定义的目录需要是绝对路径. 默认值: 当前目录,或者/目录(chroot时)
# catch_workers_output = yes
# 重定向运行过程中的stdout和stderr到主要的错误日志文件中. 如果没有设置, stdout 和 stderr 将会根据FastCGI的规则被重定向到 /dev/null . 默认值: 空.
4.7.8 修改nginx,支持php
[root@centos ~]# vim /opt/nginx/conf/nginx.conf
找到并修改以下代码
location ~ \.php$ {
root /data/www;
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME /data/www$fastcgi_script_name;
include fastcgi_params;
}
4.7.9 将php-fpm服务加到开机启动服务
[root@centos ~]# cp /usr/local/src/php-5.5.19/sapi/fpm/php-fpm.service /lib/systemd/system/
[root@centos ~]# vim /lib/systemd/system/php-fpm.service
替换所有的${prefix}为/opt/php,${exec_prefix}为/opt/php,最终修改如下
[Unit]
Description=The PHP FastCGI Process Manager
After=syslog.target network.target
[Service]
Type=simple
PIDFile=/opt/php/var/run/php-fpm.pid
ExecStart=/opt/php/sbin/php-fpm --nodaemonize --fpm-config /opt/php/etc/php-fpm.conf
ExecReload=/bin/kill -USR2 $MAINPID
[Install]
WantedBy=multi-user.target
保存,退出
[root@centos ~]# systemctl enable php-fpm.service
[root@centos ~]# systemctl list-unit-files|grep enabled|grep php-fpm
[root@centos ~]# systemctl daemon-reload
[root@centos ~]# systemctl start php-fpm.service
[root@centos ~]# systemctl status php-fpm.service -l
4.7.10 编写测试页面
[root@centos ~]# vim /data/www/index.php
输入以下内容
<html>
<head><title>hello php</title></head>
<body>
<?php phpinfo();?>
</body>
</html>
保存,退出
(责任编辑:IT)
环境: 系统硬件:vmware vsphere (CPU:2*4核,内存2G,双网卡) 系统版本:CentOS-7.0-1406-x86_64-DVD.iso
1.准备
1.1 显示系统版本
[root@centos ~]# yum install vim wget lsof gcc gcc-c++ bzip2 -y [root@centos ~]# yum install net-tools bind-utils -y
[root@centos ~]# ifconfig|grep inet inet 192.168.1.10 netmask 255.255.255.0 broadcast 192.168.1.255
[root@centos ~]# vim /etc/selinux/config 屏蔽以下两行 #SELINUX=enforcing #SELINUXTYPE=targeted 添加以下一行 SELINUXTYPE=disabled 保存,退出
[root@centos ~]# shutdown -r now [root@centos ~]# getenforce Disabled
[root@centos ~]# cd /usr/local/src/ [root@centos ~]# tar zvxf cmake-3.0.0.tar.gz [root@centos ~]# cd cmake-3.0.0 [root@centos ~]# ./bootstrap [root@centos ~]# make && make install
[root@centos ~]# cd /usr/local/src/ [root@centos ~]# tar zvxf bison-3.0.tar.gz [root@centos ~]# cd bison-3.0 [root@centos ~]# ./configure [root@centos ~]# make && make install
[root@centos ~]# cd /usr/local/src/ [root@centos ~]# tar xjf jemalloc-3.6.0.tar.bz2 [root@centos ~]# cd jemalloc-3.6.0 [root@centos ~]# ./configure [root@centos ~]# make && make install [root@centos ~]# echo '/usr/local/lib' > /etc/ld.so.conf.d/local.conf [root@centos ~]# ldconfig
[root@centos ~]# groupadd mysql [root@centos ~]# useradd -g mysql mysql -s /sbin/nologin [root@centos ~]# mkdir -p /data/mysql [root@centos ~]# chown -R mysql:mysql /data/mysql
[root@centos ~]# cd /usr/local/src/ [root@centos ~]# tar zvxf mariadb-10.0.15.tar.gz [root@centos ~]# cd mariadb-10.0.15 [root@centos ~]# cmake -DMYSQL_UNIX_ADDR=/tmp/mysql.sock -DCMAKE_INSTALL_PREFIX=/opt/mysql -DMYSQL_DATADIR=/data/mysql -DMYSQL_TCP_PORT=3306 -DDEFAULT_CHARSET=utf8 -DDEFAULT_COLLATION=utf8_general_ci -DWITH_READLINE=1 -DWITH_EXTRA_CHARSETS=all -DEXTRA_CHARSETS=all -DWITH_SSL=system -DWITH_ZLIB=system -DWITH_LIBWRAP=0 -DENABLED_LOCAL_INFILE=1 -DEXTRA_CHARSETS=all
# 编译说明
[root@centos ~]# make install
[root@centos ~]# ln -s /opt/mysql/lib/lib* /usr/lib/ [root@centos ~]# ln -s /opt/mysql/bin/mysql /bin
[root@centos ~]# cd /opt/mysql [root@centos ~]# cp ./support-files/my-large.cnf /etc/my.cnf [root@centos ~]# vim /etc/my.cnf
在[client]下添加一行
在[mysqld]下添加一行 保存退出
[root@centos ~]# cp /usr/local/src/mariadb-10.0.15/packaging/rpm-oel/mysql-systemd-start /opt/mysql/bin/ [root@centos ~]# chmod 755 /opt/mysql/bin/mysql-systemd-start [root@centos ~]# vim ./bin/mysql-systemd-start
找到以下内容
保存退出 2.10 设置mysql开机自动启动服务
[root@centos ~]# systemctl enable mysqld.service [root@centos ~]# systemctl list-unit-files|grep enabled|grep mysql [root@centos ~]# vim /etc/systemd/system/mysql.service
找到以下内容
修改为
保存退出
[root@centos ~]# systemctl start mysqld.service [root@centos ~]# systemctl status mysqld.service -l [root@centos ~]# ps -ef|grep mysqld [root@centos ~]# lsof -n | grep jemalloc
2.12 数据库初始化、登录客户端 [root@centos ~]# cd /opt/mysql [root@centos ~]# ./bin/mysql_secure_installation 根据提示设置数据密码,及其它设置 [root@centos ~]# mysql -u root -p Mysql [(none)]>status; Mysql [(none)]>show engines; Mysql [(none)]>exit;
2.13 增加远程访问用户,并且打开防火墙3306端口(不远程连接数据,可省略) [root@centos ~]# mysql -u root -p Mysql [(none)]> GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY '123456' WITH GRANT OPTION; Mysql [(none)]> FLUSH PRIVILEGES; Mysql [(none)]> exit; (root是用户名,%是主机名或IP地址,这里的%代表任意主机或IP地址,也可指定唯一的IP地址;密码是MyPassword )
[root@centos ~]# iptables -L|grep ACCEPT [root@centos ~]# firewall-cmd --zone=public --add-port=3306/tcp --permanent [root@centos ~]# firewall-cmd --reload [root@centos ~]# iptables -L|grep ACCEPT
3.编译安装Nginx
3.1 下载包 [root@centos ~]# wget http://nginx.org/download/nginx-1.6.2.tar.gz [root@centos ~]# wget ftp://ftp.csx.cam.ac.uk/pub/software/programming/pcre/pcre-8.36.tar.gz [root@centos ~]# wget http://zlib.net/zlib-1.2.8.tar.gz [root@centos ~]# wget http://www.openssl.org/source/openssl-1.0.1j.tar.gz [root@centos ~]# wget http://www.canonware.com/download/jemalloc/jemalloc-3.6.0.tar.bz2
3.3 安装Pcre [root@centos ~]# cd /usr/local/src/ [root@centos ~]# tar zvxf pcre-8.36.tar.gz [root@centos ~]# cd pcre-8.36 [root@centos ~]# ./configure [root@centos ~]# make && make install
[root@centos ~]# cd /usr/local/src/ [root@centos ~]# tar zvxf openssl-1.0.1j.tar.gz [root@centos ~]# cd openssl-1.0.1j [root@centos ~]# ./config [root@centos ~]# make && make install
3.5 安装zlib [root@centos ~]# cd /usr/local/src/ [root@centos ~]# tar zvxf zlib-1.2.8.tar.gz [root@centos ~]# cd zlib-1.2.8 [root@centos ~]# ./configure [root@centos ~]# make && make install 3.6 创建www用户和组,创建www虚拟主机使用的目录,以及Nginx使用的日志目录,并且赋予他们适当的权限 [root@centos ~]# groupadd www [root@centos ~]# useradd -g www www -s /sbin/nologin [root@centos ~]# mkdir -p /data/www [root@centos ~]# chmod +w /data/www [root@centos ~]# chown -R www:www /data/www ***如果没法创建用户,需要检查SELinux状态是否关闭
3.7 安装nginx [root@centos ~]# cd /usr/local/src/ [root@centos ~]# tar zvxf nginx-1.6.2.tar.gz [root@centos ~]# cd nginx-1.6.2 [root@centos ~]# ./configure --prefix=/opt/nginx --user=www --group=www --with-http_stub_status_module --with-http_ssl_module --with-http_gzip_static_module --with-openssl=/usr/local/src/openssl-1.0.1j --with-zlib=/usr/local/src/zlib-1.2.8 --with-pcre=/usr/local/src/pcre-8.36 --with-ld-opt="-ljemalloc" [root@centos ~]# make && make install
[root@centos ~]# vim /opt/nginx/conf/nginx.conf 修改前面几行为: user www www; worker_processes auto; error_log logs/error.log crit; pid logs/nginx.pid;
events{
[root@centos ~]# vim /data/www/index.html
<html> 保存,退出
[root@centos ~]# cd /opt/nginx [root@centos ~]# ldconfig [root@centos ~]# ./sbin/nginx -c /opt/nginx/conf/nginx.conf -t 如果显示下面信息,即表示配置没问题
nginx: the configuration file /opt/nginx/conf/nginx.conf syntax is ok
[root@centos ~]# ./sbin/nginx -c /opt/nginx/conf/nginx.conf [root@centos ~]# lsof -n | grep jemalloc
ginx 2346 root mem REG 253,1 1824470 51571788 /usr/local/lib/libjemalloc.so.1
[root@centos ~]# iptables -L|grep ACCEPT [root@centos ~]# firewall-cmd --zone=public --add-port=80/tcp --permanent [root@centos ~]# firewall-cmd --reload [root@centos ~]# iptables -L|grep ACCEPT
3.12 浏览器打开 http://192.168.1.10 显示出欢迎内容,则表示成功
3.13 作为服务,开机后启动 [root@centos ~]# vim /usr/lib/systemd/system/nginx.service 增加以下内容
[Unit]
[Service]
[Install] :wq 保存退出
[root@centos ~]# systemctl list-unit-files|grep enabled|grep nginx
[root@centos ~]# ./sbin/nginx -s stop [root@centos ~]# systemctl daemon-reload [root@centos ~]# systemctl start nginx.service [root@centos ~]# systemctl status nginx.service -l [root@centos ~]# ps -ef|grep nginx [root@centos ~]# lsof -n | grep jemalloc
4 安装PHP 4.1 准备安装 下载 php-5.5.19.tar.gz 到/usr/local/src 下载 libiconv-1.14.tar.gz 到/usr/local/src 下载 libmcrypt-2.5.8.tar.gz 到/usr/local/src 下载 mcrypt-2.6.8.tar.gz 到/usr/local/src 下载 mhash-0.9.9.9.tar.gz 到/usr/local/src 下载 memcache-3.0.8.tar.gz 到/usr/local/src 下载 zendopcache-7.0.3.tgz 到/usr/local/src
yum install 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 libXpm* gcc gcc-c++ -y
[root@centos ~]# cd /usr/local/src [root@centos ~]# tar zvxf libiconv-1.14.tar.gz [root@centos ~]# cd libiconv-1.14 [root@centos ~]# ./configure --prefix=/usr/local [root@centos ~]# cd srclib [root@centos ~]# sed -i -e '/gets is a security/d' ./stdio.in.h [root@centos ~]# cd .. [root@centos ~]# make && make install [root@centos ~]# ln -sf /usr/local/lib/libiconv.so.2 /usr/lib64/ [root@centos ~]# ldconfig
4.4 安装libmcrypt,libltdl(加密算法库,PHP扩展mcrypt功能对此库有依耐关系,要使用mcrypt必须先安装此库) [root@centos ~]# cd /usr/local/src [root@centos ~]# tar zvxf libmcrypt-2.5.8.tar.gz [root@centos ~]# cd libmcrypt-2.5.8 [root@centos ~]# ./configure [root@centos ~]# make && make install [root@centos ~]# cd libltdl/ [root@centos ~]# ./configure --enable-ltdl-install [root@centos ~]# make && make install [root@centos ~]# ln -sf /usr/local/lib/libmcrypt.* /usr/lib64/ [root@centos ~]# ln -sf /usr/local/bin/libmcrypt-config /usr/lib64/ [root@centos ~]# ldconfig
[root@centos ~]# cd /usr/local/src/ [root@centos ~]# tar zvxf mhash-0.9.9.9.tar.gz [root@centos ~]# cd mhash-0.9.9.9 [root@centos ~]# ./configure [root@centos ~]# make && make install [root@centos ~]# ln -sf /usr/local/lib/libmhash.* /usr/lib64/ [root@centos ~]# ldconfig 4.6 安装mcrypt [root@centos ~]# cd /usr/local/src/ [root@centos ~]# tar zvxf mcrypt-2.6.8.tar.gz [root@centos ~]# cd mcrypt-2.6.8 [root@centos ~]# ./configure [root@centos ~]# make && make install
4.7 安装php (已经安装mariadb,nginx,ldap) 4.7.1 创建mysql软连接、ldap软连接 [root@centos ~]# mkdir -p /opt/mysql/include/mysql [root@centos ~]# ln -s /opt/mysql/include/* /opt/mysql/include/mysql/ [root@centos ~]# ln -s /usr/lib64/libldap* /usr/lib [root@centos ~]# ln -s /usr/lib64/liblber* /usr/lib
[root@centos ~]# cd /usr/local/src/ [root@centos ~]# tar zvxf php-5.5.19.tar.gz [root@centos ~]# cd php-5.5.19 [root@centos ~]# ./configure --prefix=/opt/php --with-config-file-path=/opt/php/etc --with-mysql=/opt/mysql --with-mysqli=/opt/mysql/bin/mysql_config --with-iconv-dir=/usr/local --with-freetype-dir --with-jpeg-dir --with-png-dir --with-zlib --with-libxml-dir=/usr --enable-xml --disable-rpath --enable-bcmath --enable-shmop --enable-sysvsem --enable-inline-optimization --with-curl --enable-mbregex --enable-fpm --enable-mbstring --with-mcrypt --with-gd --enable-gd-native-ttf --with-openssl --with-mhash --enable-pcntl --enable-sockets --with-ldap --with-ldap-sasl --with-xmlrpc --enable-zip --enable-soap [root@centos ~]# make ZEND_EXTRA_LIBS='-liconv' [root@centos ~]# make install
4.7.3 复制配置文件 [root@centos ~]# cp php.ini-production /opt/php/etc/php.ini
[root@centos ~]# cd /usr/local/src/ [root@centos ~]# tar zvxf memcache-3.0.8.tgz [root@centos ~]# cd memcache-3.0.8 [root@centos ~]# /opt/php/bin/phpize [root@centos ~]# ldconfig [root@centos ~]# ./configure --with-php-config=/opt/php/bin/php-config [root@centos ~]# make && make install
[root@centos ~]# vim /opt/php/etc/php.ini 在文件中搜索; extension_dir = "./" ,并在下面添加以下两行内容
extension_dir = "/opt/php/lib/php/extensions/no-debug-non-zts-20121212/"
4.7.5 安装ZendOpcache扩展(已经安装php) [root@centos ~]# cd /usr/local/src/ [root@centos ~]# tar zvxf zendopcache-7.0.3.tgz [root@centos ~]# cd zendopcache-7.0.3 [root@centos ~]# /opt/php/bin/phpize [root@centos ~]# ./configure --with-php-config=/opt/php/bin/php-config [root@centos ~]# make && make install
[root@centos ~]# vim /opt/php/etc/php.ini 在文件中搜索; extension_dir = "./" ,并在下面添加以下两行内容
zend_extension=/opt/php/lib/php/extensions/no-debug-non-zts-20121212/opcache.so
4.7.6 安装pdo_mysql扩展(已经安装PHP) [root@centos ~]# cd /usr/local/src/ [root@centos ~]# cd php-5.5.19/ext/pdo_mysql/ [root@centos ~]# /opt/php/bin/phpize [root@centos ~]# ./configure --with-php-config=/opt/php/bin/php-config --with-pdo-mysql=/opt/mysql [root@centos ~]# make && make install
[root@centos ~]# vim /opt/php/etc/php.ini 在文件中搜索; extension_dir = "./" ,并在下面添加以下两行内容(如果extension_dir已存在,只添加后面一行) extension_dir = "/opt/php/lib/php/extensions/no-debug-non-zts-20121212/" extension = "pdo_mysql.so"
4.7.7 安装php-fpm [root@centos ~]# cp /opt/php/etc/php-fpm.conf.default /opt/php/etc/php-fpm.conf [root@centos ~]# vim /opt/php/etc/php-fpm.conf
[global] 保存,退出 # php-fpm.conf 重要参数详解
# pid = run/php-fpm.pid
# error_log = log/php-fpm.log
# log_level = notice
[root@centos ~]# vim /opt/nginx/conf/nginx.conf 找到并修改以下代码
location ~ \.php$ {
[root@centos ~]# cp /usr/local/src/php-5.5.19/sapi/fpm/php-fpm.service /lib/systemd/system/ [root@centos ~]# vim /lib/systemd/system/php-fpm.service 替换所有的${prefix}为/opt/php,${exec_prefix}为/opt/php,最终修改如下
[Unit]
[Service]
[Install] 保存,退出
[root@centos ~]# systemctl list-unit-files|grep enabled|grep php-fpm [root@centos ~]# systemctl daemon-reload [root@centos ~]# systemctl start php-fpm.service [root@centos ~]# systemctl status php-fpm.service -l
[root@centos ~]# vim /data/www/index.php 输入以下内容
<html> 保存,退出 (责任编辑:IT) |