多应用+插件架构,代码干净,二开方便,首家独创一键云编译技术,文档视频完善,免费商用码云13.8K 广告
**centos7.5 + nginx-1.9.9+mysql-5.6+php-7.2.16** ~~~ 配置文件位置: nginx:/data/apps/nginx/conf/nginx.conf mysql:/etc/my.cnf php7:/data/apps/php7/etc/php.ini ~~~ ~~~ 服务启动: nginx:/data/apps/nginx/sbin/nginx -s reload mysql:service mysql start php7:/data/apps/php7/sbin/php-fpm ~~~ ~~~ PHP-FPM(PHP FastCGI Process Manager)意:PHP FastCGI 进程管理器,用于管理PHP 进程池的软件,用于接受web服务器的请求。 PHP-FPM提供了更好的PHP进程管理方式,可以有效控制内存和进程、可以平滑重载PHP配置。 (1). 为什么会出现php-fpm fpm的出现全部因为php-fastcgi出现。为了很好的管理php-fastcgi而实现的一个程序 (2). 什么是php-fastcgi php-fastcgi 只是一个cgi程序,只会解析php请求,并且返回结果,不会管理(因此才出现的php-fpm)。 (3)为什么不叫php-cgi 其实在php-fastcgi出现之前是有一个php-cgi存在的,只是它的执行效率低下,因此被php-fastcgi取代。 (4)那fastcgi和cgi有什么区别呢? 亲们,这区别就大了,当一个服务web-server(nginx)分发过来请求的时候,通过匹配后缀知道该请求是个动态的php请求,会把这个请求转给php。 在cgi的年代,思想比较保守,总是一个请求过来后,去读取php.ini里的基础配置信息,初始化执行环境,每次都要不停的去创建一个进程,读取配置,初始化环境,返回数据,退出进程,久而久之,启动进程的工作变的乏味无趣特别累。 当php来到了5的时代,大家对这种工作方式特别反感,想偷懒的人就拼命的想,我可不可以让cgi一次启动一个主进程(master),让他只读取一次配置,然后在启动多个工作进程(worker),当一个请求来的时候,通过master传递给worker这样就可以避免重复劳动了。于是就产生了fastcgi。 (5)fastcgi这么好,启动的worker用完怎么办? 当worker不够的时候,master会通过配置里的信息,动态启动worker,等空闲的时候可以收回worker (6)到现在还是没明白php-fpm 是个什么东西? 就是来管理启动一个master进程和多个worker进程的程序. PHP-FPM 会创建一个主进程,控制何时以及如何将HTTP请求转发给一个或多个子进程处理。PHP-FPM主进程还控制着什 么时候创建(处理Web应用更多的流量)和销毁(子进程运行时间太久或不再需要了) PHP子进程。PHP-FPM进程池中的每个进程存在的时间都比单个HTTP请求长,可以处 理10、50、100、500或更多的HTTP请求。 ~~~ #### 1.准备 1)把所有的软件安装在/data/apps/,源码包放在/data/tgz/,数据放在/data/data,日志文件放在/data/logs,项目放在/data/webapps, ~~~ mkdir -p /data/apps/ mkdir -p /data/tgz/ mkdir -p /data/data/ mkdir -p /data/logs/ mkdir -p /data/webapps/ ~~~ 2)安装源码包所需要的依赖包 ~~~ yum -y install wget openssl* 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 make gd gd2 gd-devel gd2-devel libaio ~~~ 3)创建www所属组及用户 ~~~ /usr/sbin/groupadd www /usr/sbin/useradd -g www www ~~~ 4)设置系统资源限制 ~~~ ulimit -SHn 65535 ~~~ #### 2.Nginx安装: 1)pcre源码安装 ~~~ cd /Data/tgz/ wget ftp://ftp.csx.cam.ac.uk/pub/software/programming/pcre/pcre-8.38.tar.gz tar zxvf pcre-8.38.tar.gz cd pcre-8.38 ./configure --prefix=/Data/apps/pcre-8.38 ~~~ ~~~ make && make install ~~~ 2)nginx源码安装, 注意with-pcre,使用的是解压目录,--with-pcre=/Data/tgz/pcre-8.38: ~~~ cd /Data/tgz/ wget http://nginx.org/download/nginx-1.9.9.tar.gz tar zxvf nginx-1.9.9.tar.gz cd nginx-1.9.9 ./configure --user=www --group=www --prefix=/Data/apps/nginx --with-http_stub_status_module --with-http_ssl_module --with-pcre=/Data/tgz/pcre-8.38 --with-http_realip_module --with-http_image_filter_module make && make install ~~~ 3)nginx启动 ~~~ cd /data/apps/nginx/sbin/ ./nginx -t ./nginx -c /data/apps/nginx/conf/nginx.conf ./nginx -s reload ~~~ #### 3.Mysql安装: 1)mysql源码安装: ~~~ cd /data/tgz/ wget http://downloads.mysql.com/archives/mysql-5.6/mysql-5.6.12-linux-glibc2.5-x86_64.tar.gz tar zxvf mysql-5.6.12-linux-glibc2.5-x86_64.tar.gz mv mysql-5.6.12-linux-glibc2.5-x86_64 /data/apps/mysql ~~~ 2)创建mysql所属组及用户: ~~~ groupadd mysql useradd -r -g mysql mysql ~~~ 3)改变mysql软件所属组: ~~~ cd /data/apps chown -R mysql:mysql mysql ~~~ 4)初始化数据库: ~~~ mkdir -p /data/data/mysql/data cd /data/data chown -R mysql:mysql mysql su mysql /data/apps/mysql/scripts/mysql_install_db --user=mysql --basedir=/data/apps/mysql --datadir=/data/data/mysql/data exit ~~~ 5)数据库配置文件: ~~~ cp /data/apps/mysql/support-files/my-default.cnf /etc/my.cnf cp /data/apps/mysql/support-files/mysql.server /etc/init.d/mysql vi /etc/init.d/mysql #修改文件中的两个变更值 basedir=/data/apps/mysql datadir=/data/data/mysql/data ~~~ 6)添加mysql环境变量 ~~~ vi /etc/profile #最后一行添加以下两行: export MYSQL_HOME="/data/apps/mysql" export PATH="$PATH:$MYSQL_HOME/bin" #保存退出 source /etc/profile ~~~ 7)添加自启动服务 ~~~ chkconfig --add mysql chkconfig mysql on ~~~ 8)启动mysql ~~~ service mysql start #会提示:Starting MySQL.. SUCCESS! #查看mysql服务: ps aux|grep mysql ~~~ 9)登录mysql及改密码与配置远程访问 ~~~ #修改root用户密码 /data/apps/mysql/bin/mysqladmin -u root password 'tuoyueweb@123' #登录mysql,需要输入密码 /data/apps/mysql/bin/mysql -u root -p #允许root用户远程访问 mysql>GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'tuoyueweb@123' WITH GRANT OPTION; mysql>FLUSH PRIVILEGES;#刷新权限 mysql>exit ~~~ 10)忘记root密码后,如何找回密码 ~~~ /Data/apps/mysql/bin/bin/mysqld_safe --basedir=/Data/apps/mysql --datadir=/Data/data/mysql/data --skip-grant-tables & /Data/apps/mysql/bin/bin/mysql -u root mysql UPDATE user SET password=PASSWORD("new_password") WHERE user='root'; FLUSH PRIVILEGES; ~~~ #### 4.Php安装: 1)php依赖安装,顺序执行: a)创建目录 ~~~ mkdir -p /data/apps/libs/ ~~~ b)jpeg源码安装 ~~~ cd /data/tgz/ wget http://www.ijg.org/files/jpegsrc.v9.tar.gz tar zxvf jpegsrc.v9.tar.gz cd jpeg-9/ ./configure --prefix=/data/apps/libs --enable-shared --enable-static make && make install ~~~ c)libpng源码安装 ~~~ cd /data/tgz/ wget http://prdownloads.sourceforge.net/libpng/libpng-1.6.2.tar.gz tar zxvf libpng-1.6.2.tar.gz cd libpng-1.6.2/ ./configure --prefix=/data/apps/libs make && make install ~~~ d)freetype源码安装 ~~~ cd /data/tgz/ wget http://download.savannah.gnu.org/releases/freetype/freetype-2.4.12.tar.gz tar zxvf freetype-2.4.12.tar.gz cd freetype-2.4.12/ ./configure --prefix=/data/apps/libs make && make install ~~~ e)libmcrypt源码安装 ~~~ cd /data/tgz/ wget http://downloads.sourceforge.net/mcrypt/libmcrypt-2.5.8.tar.gz tar zxvf libmcrypt-2.5.8.tar.gz cd libmcrypt-2.5.8/ ./configure --prefix=/data/apps/libs make && make install cd libltdl/ ./configure --prefix=/data/apps/libs --enable-ltdl-install make && make install ~~~ f)mhash源码安装 ~~~ cd /data/tgz/ wget http://downloads.sourceforge.net/mhash/mhash-0.9.9.9.tar.gz tar zxvf mhash-0.9.9.9.tar.gz cd mhash-0.9.9.9/ ./configure --prefix=/data/apps/libs make && make install ~~~ g)libiconv源码安装 ~~~ cd /data/tgz/ wget http://ftp.gnu.org/pub/gnu/libiconv/libiconv-1.14.tar.gz tar -zxvf libiconv-1.14.tar.gz cd libiconv-1.14 ./configure --prefix=/data/apps/libs make && make install #解决./stdio.h:1010:1: 错误:‘gets’未声明(不在函数内) 的问题 cd srclib/ sed -i -e '/gets is a security/d' ./stdio.in.h cd ../ make && make install ~~~ h)添加编译时使用的动态链接库的路径 ~~~ vi /etc/ld.so.conf #添加一行 /data/apps/libs/lib #生效 ldconfig ~~~ i)mcrypt源码安装 ~~~ cd /data/tgz/ wget http://downloads.sourceforge.net/mcrypt/mcrypt-2.6.8.tar.gz tar zxvf mcrypt-2.6.8.tar.gz cd mcrypt-2.6.8/ export LDFLAGS="-L/data/apps/libs/lib -L/usr/lib" export CFLAGS="-I/data/apps/libs/include -I/usr/include" touch malloc.h ./configure --prefix=/data/apps/libs --with-libmcrypt-prefix=/data/apps/libs make && make install ~~~ 2)php编译安装: a)php7源码安装 ~~~ cd /data/tgz wget http://cn2.php.net/distributions/php-7.2.16.tar.gz tar xzvf php-7.2.16.tar.gz cd php-7.2.16 #./configure --help ./configure --prefix=/data/apps/php7 --with-config-file-path=/data/apps/php7/etc --with-mysqli=/data/apps/mysql/bin/mysql_config --with-iconv=/data/apps/libs/ --with-freetype-dir=/data/apps/libs --with-jpeg-dir=/data/apps/libs --with-png-dir=/data/apps/libs --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=/data/apps/libs --with-gd --enable-gd-native-ttf --with-openssl --with-mhash --enable-pcntl --enable-sockets --with-xmlrpc --enable-zip --with-bz2 --enable-soap --enable-opcache --with-pdo-mysql --enable-maintainer-zts --enable-pcntl --enable-shmop --enable-sysvmsg --enable-sysvsem --enable-sysvshm --without-pear --with-gettext --enable-fpm --enable-opcache=no #备注:较之前的版本,去除的选项(不全) --with-mysql --with-mime-magic --enable-fastcgi --enable-force-CGI-redirect make && make install cp php.ini-development /data/apps/php7/etc/php.ini cp ./sapi/fpm/php-fpm.conf /data/apps/php7/etc/php-fpm.conf cp /data/apps/php7/etc/php-fpm.d/www.conf.default /data/apps/php7/etc/php-fpm.d/www.conf #下面是为了php-fpm随系统自启动。 cp ./sapi/fpm/init.d.php-fpm /etc/init.d/php-fpm #更改php-fpm启动用户 vi /data/apps/php7/etc/php-fpm.d/www.conf #把下面两行 user = nobody group = nobody #改为: user = www group = www #启动php /data/apps/php7/sbin/php-fpm #查看进程 ps aux|grep php-fpm ~~~ ~~~bash ~~~ 3)php扩展安装: a)redis扩展安装redis.so ~~~ cd /data/tgz wget https://github.com/edtechd/phpredis/archive/php7.zip unzip php7.zip cd phpredis-php7 /data/apps/php7/bin/phpize ./configure --with-php-config=/data/apps/php7/bin/php-config make && make install ~~~ b)swoole扩展安装swoole.so ~~~ swoole扩展安装swoole.so cd /data/tgz wget http://pecl.php.net/get/swoole-4.3.1.tgz tar zxvf swoole-4.3.1.tgz cd swoole-4.3.1 /data/apps/php7/bin/phpize ./configure --with-php-config=/data/apps/php7/bin/php-config make && make install ~~~ c)使扩展生效: ~~~ vi /data/apps/php7/etc/php.ini #打开 /data/apps/php7/etc/php.ini 查找 ; extension_dir = "ext" #更改extension_dir的值,此值视具体情况而定 extension_dir = "/data/apps/php7/lib/php/extensions/no-debug-zts-20170718/" #在其后增加一行: extension = swoole.so extension = redis.so ~~~