手记

Linux+Nginx+MariaDB+PHP

    在互联网服务器架构中,我们经常可以听到LAMP(Linux+Apache+Mysql+PHP/Perl+Python)的架构,用来指代Linux操作系统、Apache网络服务器、Mysql数据库和PHP(Python或Perl)脚本语言的组合。现

在由于Nginx拥有超越Apache的卓越性能,传统LAMP架构正在逐渐被LNMP架构所取代。因此以下介绍

Linux+Nginux+MariaDB+PHP架构的基于不同主机间的编译安装。

操作环境:

Linux操作系统: Centos6.6-2.6.32-504.el6.x86_64

Nginx :Nginx-1.6.2        主机IP地址为:192.16.1.3

MariaDB:mariadb-10.0.12  主机IP地址为:192.168.1.4

PHP:php-5.4.26            主机IP地址为:192.168.1.5

为了后面的编译,我在每个每台主机上都安装了以下的编译环境,后面有其他需要的在编译中再安装

12yum -y groupinstall "Development Tools"yum -y groupinstall "Server Platform Development"

由于在不同的主机上编译安装,因此安装的顺序没有先后之分。

一.编译安装MariaDB

 准备MariaDB源码包,可以去其官方网站www.mariadb.org 下载

 wget http://mirrors.neusoft.edu.cn/mariadb/mariadb-10.1.2/source/mariadb-10.1.2.tar.gz

此处是alpha版,不建议在生产环境中使用  

12[root@client1 data]# tar xf mariadb-10.0.12.tar.gz [root@client1 data]# cd mariadb-10.0.12

由于mariab是cmake编译安装,因此需要安装cmake工具,此处直接yum 安装

  yum -y install  cmake 

安装完成后,即可编译安装mariab了,如下:

首先创建mysql用户和要安装的目录,并改属主和属组为mysql


useradd  -M -s /sbin/nologin mysqlmkdir -p /application/mariadbchown  -R mysql:mysql /application/

cmake . -DCMAKE_INSTALL_PREFIX=/application/mariadb \     #MariaDB安装目录-DMYSQL_UNIX_ADDR=/application/mariadb/tmp/mysql.sock \   #MariaDBsock文件目录-DMYSQL_DATADIR=/application/mariadb/data \               #MariaDB数据保存目录-DSYSCONFDIR=/etc \                                       #配置文件目录-DMYSQL_USER=mysql \                                      #指定用户为mysql用户-DMYSQL_TCP_PORT=3306 \                                   #指定端口为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 /application/mariadbcp support-files/my-small.cnf /etc/my.conf    #可根据自己主机的内存选择my-large.cnf或                                              my-medium.cnf等cp support-files/mysql.server /etc/init.d/mysqldchmod +x /etc/init.d/mysqldchkconfig --add mysqldchkconfig mysqld on

初始化mysql


/application/mariadb/scripts/mysql_install_db --user=mysql --basedir=/application/mariadb --datadir=/application/mariadb/data

手动添加启动命令路径至/etc/profile


echo "export PATH=/application/mariadb/bin:$PATH" >>/etc/profile #追加至/etc/profilesource /etc/profile          #重写读取/etc/profile

至此MariaDB就编译安装完成了


二.编译安装PHP(Fastcgi模式)

   准备PHP源码包 php我是去搜狐镜像上下载的,地址为:http://mirror.sohu.com

 

开始编译安装:


 ./configure  \--prefix=/application/php/  \                 #指定php安装的目录--with-mysql=mysqlnd   \          #此项指定mysqlnd十分重要,由于mysql没有安装在此主机上                                    mysqlnd表示支持链接mysql。--with-pdo-mysql=mysqlnd \        #同上--with-mysqli=mysqlnd \--with-openssl  \                 #支持ssl功能--enable-mbstring \               #启动多字节字符串支持--with-freetype-dir \             #指定free type--with-jpeg-dir \                 #支持jpeg图片格式--with-png-dir \                  #支持png图片格式--with-zlib \                     #支持zlib压缩传输--with-libxml-dir=/usr \          #指定libxml2的目录--enable-xml \                    #支持xml扩展--enable-sockets \                #支持套接字--with-mcrypt \                   #支持mcrypt--with-config-file-path=/application/php/etc \      #配置文件的路径--with-config-file-scan-dir=/application/php/php.d  \ #支持扩展的模块的配置文件目录,php                                                      去此目录下扫描--with-bz2 \                                          #支持bzip2压缩--enable-fpm                      #此项十分重要,在不同的主机上安装mysql,nginx需开启,否                                   则无法支持Fastcgi,各主机无法通信makemake install

安装完成后,为php提供配置文件

[root@client2 php-5.4.26]# cp php.ini-production /application/php/etc/php.ini

为php提供sys启动控制脚本,并加入开机启动


[root@client2 php-5.4.26]# cp sapi/fpm/init.d.php-fpm /etc/init.d/php-fpm[root@client2 php-5.4.26]# chmod +x /etc/init.d/php-fpm[root@client2 php-5.4.26]# chkconfig --add php-fpm[root@client2 php-5.4.26]# chkconfig php-fpm on[root@client2 php-5.4.26]# chkconfig --list php-fpm  #查看php-fpmphp-fpm        0:off1:off2:on3:on4:on5:on6:off

为php-fpm提供配置文件php-fpm.conf,编译配置文件,修改监听端口为php主机IP地址


[root@client2 php]# cd /application/php/etc/   #切换至php安装目录下的配置文件目录/etc[root@client2 etc]# ls                         #查看当前目录下的文件内容pear.conf  php-fpm.conf.default  php.ini[root@client2 etc]# mv php-fpm.conf.default php-fpm.conf #将 php-fpm.conf.default重命名                                               为php-fpm.conf作为php-fpm的配置文件listen = 192.168.1.5:9000       #默认为127.0.0.1

启动php-fpm并且查看其信息


[root@client2 etc]# service php-fpm startStarting php-fpm  done               #如果没有done信息,可以查看/var/log/message日志文件                                     查看其错误信息[root@client2 etc]# ss -lnt |grep 9000LISTEN     0      128             192.168.1.5:9000                     *:*

至此PHP编译安装完成了,接下来我们编译Nginx


三.编译安装Nginx

 首先准备源码包:


 wget http://mirrors.sohu.com/nginx/nginx-1.6.2.tar.gz useradd -M -s /sbin/nologin nginx      #创建一个nginx用户,以nginx用户的身份运行                                        worker process进程 mkdir -p /application/nginx            # 创建nginx安装目录

 开始编译


tar xf nginx-1.6.2.tar.gz cd nginx-1.6.2  ./configure \--prefix=/application/nginx   \  #指定安装目录  --user=nginx \         #在nginx.conf中没有指定user指定情况下使用nginx用户         默认为nobody--group=nginx  \--with-http_ssl_module  \         #启用ssl模块 --with-http_flv_module   \        #启用flv模块--with-http_gzip_static_module \  #启用 gzip模块--with-http_stub_status_module    #启用stub模块makemake install

安装完成后,启动nginx并且查看其信息


cd /application/nginx//application/nginx/sbin/nginx              #启动nginx后不需要任何参数[root@bogon nginx]# ss -lnt |grep 80LISTEN     0      128                       *:80                       *:*     [root@bogon nginx]# ps -ef |grep nginxroot      36742      1  0 Dec27 ?      00:00:00 nginx: master process ../sbin/nginxnginx     36743  36742  0 Dec27 ?      00:00:01 nginx: worker process

此时在打开网页输入192.168.1.3 即可看到welcom to nginx的信息,表明nginx已经启动成功,下面

介绍如何将nginx与php以fastcgi方式结合起来,配置nginx.conf文件


[root@bogon conf]# cat nginx.confuser nginx nginx;                  #以nginx用户身份运行worker process进程worker_processes  3;               #启动3个worker进程error_log logs/error.log;          #错误日志保存位置pid       logs/nginx.pid;worker_rlimit_nofile 51200;        #用于指明一个worker进程所能打开的最大文件数events {    use epoll;    worker_connections  51200;}http {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相关参数--------->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.1;gzip_comp_level 3;gzip_types  text/plain application/x-javascript text/css application/xml;gzip_vary on;server {listen 80;server_name www.v1.com;access_log logs/access.log combined;index index.html index.htm index.php;root /web/www/;   location ~ .*\.(php|php5)?$ {          #此处是配置nginx于php交互的,在nginx下所有的php                                        脚本都转交给192.168.1.5的9000端口接收fastcgi_pass 192.168.1.5:9000;fastcgi_index index.php;include /application/nginx/conf/fastcgi.conf;}location ~ .*\.(js|css)?$ {expires 1h;}location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)$ {expires 30d;}      }}

此时在php主机(即192.168.1.5)上创建一个/web/www的目录,创建一个配置文件index.php,文件内

容为


<?phpphpinfo();?>

在Ninux主机上,浏览器输入www.v1.com (前天需要修改hosts文件,内容为192.168.1.5 www.v1.com)

即可看到如下内容

则表明Nginx与PHP交互成功

下面我们通过wordpress来结合Nginx和PHP,回到mariab数据库的主机,授权一个用户wdadmin

MariaDB [(none)]> create database wpdb;     #创建一个wpdb数据库,用户保存wordpress数据

MariaDB [(none)]> grant all privileges on wpdb.* to "wpadmin"@"192.168.1.%" identified by 'test';  #授权给wpadmin用户,密码是test

转到php主机,在/web/下创建一个wordpress目录,用于保存wordpress代码


mkdir /web/wordpresscd /web/wordpressunzip wordpress-3.3.1-zh_CN.zip mv /web/wordpress/wordpress//web/wordpresscp wp-config-sample.php wp-config.phpvim wp-config.php            #编译wp-config.php修改下面的几行define('DB_NAME''wpdb');    #添加在mariab数据库的数据库名define('DB_USER''wpadmin'); #添加授权的用户define('DB_PASSWORD''test'); #密码define('DB_HOST''192.168.1.4'); #指定mariab数据库的主机IP

在nginx主机上,添加一个虚拟主机,内容如下:


server {                listen 80;                server_name www.wordpress.com;                access_log logs/access.log combined;                index index.html index.htm index.php;                root /web/wordpress/;                location ~ .*\.(php|php5)?$ {                        fastcgi_pass 192.168.1.5:9000;                        fastcgi_index index.php;                        include /application/nginx/conf/fastcgi.conf;                }                location ~ .*\.(js|css)?$ {                        expires 1h;                }                location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)$ {                        expires 30d;                }              }

配置好后,网页访问www.wordpress.com(前提是要修改hosts文件)


看到此界面则说明三者交互成功,安装后,可能看不到图片,是因为没有做动静分离,可以放Nginx的

/web/wordpress目录下放置同样一份就可以看到了。


至此LNMP的编译安装完成,以上只是个人的浅显认识,错误之处在所难免,望各位同仁批评指正谢谢!





 

0人推荐
随时随地看视频
慕课网APP