企业级LNMP(Nginx+PHP(FastCGI)+MySQL)主流架构配置php
Apache web服务器,发布web静态页面,Nginx web服务器,发布静态页面; 静态页面:与数据库没有交互代码,不更新,html、css、js、xml、png、jpg、 jpeg、txt; 动态页面:与数据库有交互,随着数据库变化而更新,php、jsp、do、cgi、 asp、aspx; PHP,一门语言,解释型语言,PHP模块直接解析.php结尾的文件; MySQL数据库,关系型数据库,由各类表格组成,每张表由不一样的列,不一样的行组 成;(Redis内存数据库,nosql,高键值对Key-Values); LNMP用于企业发布PHP动态网站+静态网站,而且链接数据库服务器,必要的数据 (员工姓名、密码、工资条、订单)存入数据库; 公共网关接口”(Common Gateway Interface,CGI),是HTTP服务器与本机或者 其它机器上的程序进行通讯的一种工具,其程序须运行在网络服务器上。 CGI能够用任何一种语言编写,只要这种语言具备标准输入、输出和环境变量,如 php、perl、tcl等。 FAST-CGI:WEB服务器与处理程序之间通讯的一种协议(App server 和Web server 之间的通讯协议),是CGI的改进方案。CGI程序反复加载是CGI性能低下的主要原 因,若是CGI程序保持在内存中并接受FastCGI进程管理器调度,则能够提供良好的 性能、伸缩性、Fail-Over特性等。FastCGI是常驻型的CGI,它能够一直运行,在请 求到达时,不会花费时间去fork一个进程来处理。 FastCGI是语言无关的、可伸缩架构的CGI开放扩展,将CGI解释器进程保持在内存 中,以此得到较高的性能。FastCGI是一个协议,php-fpm实现了这个协议,php-fpm 的FastCGI协议须要有进程池,php-fpm实现的FastCGI进程叫php-cgi,因此php-fpm 实际上是他自身的FastCGI或php-cgi进程管理器,php-cgi是CGI协议的实现,由于以前 没有更新Fastcgi,而是使用原有的通用网关接口,而衍生出的进程。 CGI 就是一个接口,它定义好了本身的输入和输出, php-cgi 则是对这个接口的一种 实现, Fastcgi 则是对 cgi 实现的一个性能优化版本。 PHP-CGI是PHP自带的CGI管理器。 如图14-5所示: 对于CGI来讲,每个Web请求PHP都必须从新解析php.ini、从新载入所有扩展, 并重初始化所有数据结构。而使用FastCGI,全部这些都只在进程启动时发生一 次。一个额外的好处是,持续数据库链接(Persistent database connection)能够工做。 因为FastCGI是多进程,因此比CGI多线程消耗更多的服务器内存,php-cgi解释器每 进程消耗7至25兆内存,将这个数字乘以50或100就是很大的内存数。
一、Nginx安装配置css
安装PCRE库和基础库支持: yum install pcre-devel pcre gcc-c++ openssl openssl-devel -y cd /usr/src 下载Nginx源码包: http://nginx.org/download/nginx-1.19.2.tar.gz tar -xzf nginx-1.19.2.tar.gz cd nginx-1.19.2 预编译Nginx: useradd www ./configure --user=www --group=www --prefix=/usr/local/nginx --with-http_stub_status_module --with-http_ssl_module 编译成功后,执行make命令进行编译 make make 执行成功后,执行make install正式安装 make install 检查nginx配置文件是否正确,返回OK即正确。 /usr/local/nginx/sbin/nginx -t 回车便可。查看进程是否已启动: 而后启动nginx,/usr/local/nginx/sbin/nginx
MySQL安装(搭着玩就用MySQL5了、有须要能够下载新版本)
其余版本下载地址:https://downloads.mysql.com/archives/community/html
yum install cmake ncurses-devel ncurses libaio bison git -y cd /usr/src wget https://downloads.mysql.com/archives/get/p/23/file/mysql-5.5.20.tar.gz tar -xzf mysql-5.5.20.tar.gz cd mysql-5-5.20 cmake . -DCMAKE_INSTALL_PREFIX=/usr/local/mysql \ -DMYSQL_UNIX_ADDR=/tmp/mysql.sock \ -DMYSQL_DATADIR=/data/mysql \ -DSYSCONFDIR=/etc \ -DMYSQL_USER=mysql \ -DMYSQL_TCP_PORT=3306 \ -DWITH_XTRADB_STORAGE_ENGINE=1 \ -DWITH_INNOBASE_STORAGE_ENGINE=1 \ -DWITH_PARTITION_STORAGE_ENGINE=1 \ -DWITH_BLACKHOLE_STORAGE_ENGINE=1 \ -DWITH_MYISAM_STORAGE_ENGINE=1 \ -DWITH_READLINE=1 \ -DENABLED_LOCAL_INFILE=1 \ -DWITH_EXTRA_CHARSETS=1 \ -DDEFAULT_CHARSET=utf8 \ -DDEFAULT_COLLATION=utf8_general_ci \ -DEXTRA_CHARSETS=all \ -DWITH_BIG_TABLES=1 \ -DWITH_DEBUG=0 make && make install cd /usr/local/mysql/ \cp -f support-files/my-large.cnf /etc/my.cnf \cp -f support-files/mysql.server /etc/init.d/mysqld chkconfig --add mysqld chkconfig --level 35 mysqld on mkdir -p /data/mysql useradd mysql /usr/local/mysql/scripts/mysql_install_db --user=mysql --datadir=/data/mysql/ --basedir=/usr/local/mysql/ ln -s /usr/local/mysql/bin/* /usr/bin/ service mysqld restart
(3) PHP安装配置mysql
wget http://museum.php.net/php5/php-5.6.9.tar.gz yum -y install gd curl curl-devel libjpeg libjpeg-devel libpng libpng-devel freetype freetype-devel libxml2 libxml2-devel tar -xzf php-5.6.9.tar.gz cd php-5.6.9 ./configure --prefix=/usr/local/php5 --enable-fpm --enable-debug --with-gd --with-jpeg-dir --with-png-dir --with-freetype-dir --enable-mbstring --with-curl --with-mysql=/usr/local/mysql/ --with-mysqli=/usr/local/mysql/bin/mysql_config --disable-fileinfo make make install cp php.ini-development /usr/local/php5/lib/php.ini cp /usr/local/php5/etc/php-fpm.conf.default /usr/local/php5/etc/php-fpm.conf cp /usr/src/php-5.6.9/sapi/fpm/init.d.php-fpm /etc/init.d/php-fpm chmod 755 /etc/init.d/php-fpm chkconfig --add php-fpm chkconfig php-fpm on php-fpm.conf是php服务程序重要的配置文件之一,咱们须要启用该配置文件中第 25行左右的pid文件保存目录,而后分别将第148和149行的user与group参数分别 修改成www帐户和用户组名称: # vim /usr/local/php5/etc/php-fpm.conf 1 ;;;;;;;;;;;;;;;;;;;;; 2 ; FPM Configuration ; 3 ;;;;;;;;;;;;;;;;;;;;; 23 ; Note: the default prefix is /usr/local/php/var 24 ; Default Value: none 25 pid = run/php-fpm.pid ………………省略部分输出信息……………… 145 ; Unix user/group of processes 146 ; Note: The user is mandatory. If the group is not set, the default user's g roup 147 ; will be used. 148 user = www 149 group = www ………………省略部分输出信息………………
(4) Nginx配置文件配置nginx
cat >/usr/local/nginx/conf/nginx.conf events { worker_connections 1024; } http { include mime.types; default_type application/octet-stream; server { listen 80; server_name localhost; location / { root /usr/local/nginx/html; index index.html index.php; } location ~ \.php$ { root html; } location ~ \.php$ { root html; fastcgi_pass 127.0.0.1:9000;# 指定了fastcgi进程侦听的端口,nginx就是经过这里与php交互的 fastcgi_index index.php;#脚本请求的前缀名 fastcgi_param SCRIPT_FILENAME /usr/local/nginx/html$fastcgi_script_name; #脚本文件请求的路径 include fastcgi_params; } } } cat >/usr/local/nginx/html/index.php<<EOF <?php phpinfo(); ?> EOF 重启php服务 service php-fpm restart 检测Nginx服务参数 /usr/local/nginx/sbin/nginx –t 启动nginx服务参数 /usr/local/nginx/sbin/nginx
测试LNMP架构测试,建立index.php测试页面,如图c++
(1)Discuz PHP论坛安装
LAMP源码整合完毕以后,Dicuz官网下载Discuz开源PHP软件包,将软件包解压并发布在Nginx Htdocs发布目录,代码以下:git
cd /usr/src ; wget http://download.comsenz.com/DiscuzX/3.1/Discuz_X3.1_SC_UTF8.zip unzip Discuz_X3.1_SC_UTF8.zip -d /usr/local/nginx/html cd /usr/local/nginx/html mv upload/* /usr/local/nginx/html chmod 757 -R data/ uc_server/ config/ uc_client/ 从新启动nginx MYSQL数据库命令行中建立PHP链接MYSQL的用户及密码,命令以下: create database discuz charset=utf8; grant all on discuz.* to root@'localhost' identified by "123456"; flush privileges; 访问IP地址 进行论坛的访问,配置discuz论坛设置数据库。 数据库服务器地址填写本机的地址 数据库名字填写在主数据库建立的discuz 用户名填写数据库用户名root 数据库密码123456
配置成功后能够看到以下web
PHP安装模块
如下为php扩展openssl模块案例sql
一、个人源码在 /home/topsec/Documents/php-7.0.11 安装位置在 /usr/local/php7 php.ini 在/ usr/local/php7/lib 下。若是没有php.ini须要把源码中的配置文件 php.ini-development 或php.ini-production更名成php.ini并放在lib下。 二、进入openssl的扩展目录 :/home/topsec/Documents/php-7.0.11/ext/openssl 三、运行phpize /usr/local/php7/bin/phpize 使用phpize生产configure文件 四、执行安装 ./configure --with-openssl --with-php-config=/usr/local/php7/bin/php-config make&&make install 五、过程当中可能出现libssl找不到,执行下面的命令再从新执行四、执行安装 yum install openssl yum install openssl-devel 六、执行安装后,会提示在某个目录生成.so文件,我生成的位置在 /usr/local/php7/lib/php/extensions/no-debug-non-zts-20151012/ 下 七、打开php.ini vim /usr/local/php7/lib/php.ini extension_dir = "/usr/local/php7/lib/php/extensions/no-debug-non-zts-20151012/" extension=openssl.so 八、重启php