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就是很大的内存数。
1、Nginx安装配置
安装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/
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安装配置
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配置文件配置
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测试页面,如图
(1)Discuz PHP论坛安装
LAMP源码整合完毕之后,Dicuz官网下载Discuz开源PHP软件包,将软件包解压并发布在Nginx Htdocs发布目录,代码如下:
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
配置成功后可以看到如下
PHP安装模块
以下为php扩展openssl模块案例
1、我的源码在 /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下。
2、进入openssl的扩展目录 :/home/topsec/Documents/php-7.0.11/ext/openssl
3、运行phpize
/usr/local/php7/bin/phpize
使用phpize生产configure文件
4、执行安装
./configure --with-openssl --with-php-config=/usr/local/php7/bin/php-config
make&&make install
5、过程中可能出现libssl找不到,执行下面的命令再重新执行4、执行安装
yum install openssl
yum install openssl-devel
6、执行安装后,会提示在某个目录生成.so文件,我生成的位置在
/usr/local/php7/lib/php/extensions/no-debug-non-zts-20151012/ 下
7、打开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
8、重启php