LNMP分离式部署

本文详细介绍了LNMP(Linux, Nginx, MySQL, PHP)分离式部署的步骤,包括安装nginx和MySQL,配置并启动MySQL数据库,安装PHP服务(fastcgi方式),以及配置nginx支持PHP程序请求访问,最后通过克隆服务器实现负载均衡。" 105014605,7366056,Python配置管理:ini与yaml文件操作指南,"['Python', '配置管理', 'yaml操作', 'ini文件', '数据动态转换']

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

安装nginx
[root@localhost ~]# tar xf nginx-1.10.2.tar.gz -C /usr/src/
[root@localhost ~]# cd /usr/src/nginx-1.10.2/
[root@localhost ~]# mount /dev/sr0 /media/cdrom
[root@localhost nginx-1.10.2]# yum -y install pcre-devel openssl-devel
[root@localhost nginx-1.10.2]# useradd -s /sbin/nologin -M www
[root@localhost nginx-1.10.2]# ./configure --user=www --group=www --prefix=/usr/local/nginx --with-http_stub_status_module --with-http_ssl_module 
[root@localhost nginx-1.10.2]# make && make install
[root@localhost nginx-1.10.2]# ln -s /usr/local/nginx/sbin/* /usr/local/sbin/
[root@localhost conf]# cd /usr/local/nginx/conf/
[root@localhost conf]# egrep -v "#|^$" nginx.conf.default > nginx.conf
[root@localhost conf]# vim nginx.conf
worker_processes  1;
events {
    worker_connections  1024;
}
http {
    include       mime.types;
    default_type  application/octet-stream;
    sendfile        on;
    keepalive_timeout  65;
    server {
        listen       80;
        server_name  localhost;
        location / { 
            root   html;
            index  index.html index.htm;
        }
    }
}
[root@localhost conf]# /usr/local/nginx/sbin/nginx 
[root@localhost conf]# netstat -antup | grep 80
tcp        0      0 0.0.0.0:80                  0.0.0.0:*                   LISTEN      4187/nginx                   
# nginx编译完毕
安装MySQL
[root@localhost ~]# ls
anaconda-ks.cfg  install.log.syslog
install.log      mysql-5.5.32-linux2.6-x86_64.tar.gz
[root@localhost ~]# tar xf mysql-5.5.32-linux2.6-x86_64.tar.gz -C /usr/local/
[root@localhost ~]# useradd -s /sbin/nologin -M mysql
[root@localhost ~]# echo "192.168.214.168 LNMP" >> /etc/hosts #MySQL服务器IP地址
[root@localhost ~]# ln -s /usr/local/mysql-5.5.32-linux2.6-x86_64/ /usr/local/mysql
# 初始化MySQL配置文件my.conf
[root@localhost ~]# cd /usr/local/mysql-5.5.32-linux2.6-x86_64/
[root@localhost mysql-5.5.32-linux2.6-x86_64]# /bin/cp support-files/my-small.cnf  /etc/my.cnf 
# 初始化mysql
[root@localhost mysql]# chown -R mysql.mysql /usr/local/mysql
[root@localhost mysql]# mount /dev/sr0 /media/cdrom
[root@localhost mysql]# yum -y install libaio
[root@localhost mysql]# /usr/local/mysql/scripts/mysql_install_db --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data/ --user=mysql
Installing MySQL system tables...
OK
Filling help tables...
OK

To start mysqld at boot time you have to copy
support-files/mysql.server to the right place for your system

PLEASE REMEMBER TO SET A PASSWORD FOR THE MySQL root USER !
To do so, start the server, then issue the following commands:

/usr/local/mysql/bin/mysqladmin -u root password 'new-password'
/usr/local/mysql/bin/mysqladmin -u root -h localhost.localdomain password 'new-password'

Alternatively you can run:
/usr/local/mysql/bin/mysql_secure_installation

which will also give you the option of removing the test
databases and anonymous user created by default.  This is
strongly recommended for production servers.

See the manual for more instructions.

You can start the MySQL daemon with:
cd /usr/local/mysql ; /usr/local/mysql/bin/mysqld_safe &

You can test the MySQL daemon with mysql-test-run.pl
cd /usr/local/mysql/mysql-test ; perl mysql-test-run.pl

Please report any problems with the /usr/local/mysql/scripts/mysqlbug script!


配置并启动MySQL数据库
[root@localhost mysql]# cp support-files/mysql.server /etc/init.d/mysqld
[root@localhost mysql]# chmod +x /etc/init.d/mysqld 
[root@localhost mysql]# /etc/init.d/mysqld start
Starting MySQL.. SUCCESS! 
[root@localhost mysql]# netstat -antup | grep mysql
tcp        0      0 0.0.0.0:3306                0.0.0.0:*                   LISTEN      4688/mysqld         
# 设置MySQL开机自启动
[root@localhost mysql]# chkconfig --add mysqld
[root@localhost mysql]# chkconfig mysqld on
[root@localhost mysql]# chkconfig --list mysqld
mysqld         	0:off	1:off	2:on	3:on	4:on	5:on	6:off
[root@localhost mysql]# ln -s /usr/local/mysql/bin/* /usr/local/bin/
[root@localhost mysql]# which mysqladmin
/usr/local/bin/mysqladmin
[root@localhost mysql]# mysqladmin -uroot password '123456'
[root@localhost mysql]# mysql -uroot -p123456
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 2
Server version: 5.5.32 MySQL Community Server (GPL)

Copyright (c) 2000, 2013, Oracle and/or its affiliates. All rights reserved.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql> 

PHP(fastcgi方式)服务的安装和准备
[root@localhost ~]# mount /dev/sr0 /media/cdrom
mount: block device /dev/sr0 is write-protected, mounting read-only
[root@localhost mysql]# yum -y install openssl-devel openssl 
[root@localhost mysql]# yum -y install zlib-devel libxml2-devel libjpeg-devel libjpeg-turbo-devel libiconv-devel
[root@localhost mysql]# yum -y install freetype-devel libpng-devel gd libcurl-devel libxslt-devel
[root@localhost ~]# rpm -qa zlib-devel libxml2-devel libjpeg-devel libjpeg-turbo-devel libiconv-devel
zlib-devel-1.2.3-29.el6.x86_64
libxml2-devel-2.7.6-14.el6.x86_64
libjpeg-turbo-devel-1.2.1-1.el6.x86_64
#这里仅缺少libiconv-devel包
[root@localhost ~]# rpm -qa freetype-devel libpng-devel gd libcurl-devel libxslt-devel
freetype-devel-2.3.11-14.el6_3.1.x86_64
libpng-devel-1.2.49-1.el6_2.x86_64
libcurl-devel-7.19.7-37.el6_4.x86_64
libxslt-devel-1.1.26-2.el6_3.1.x86_64
gd-2.0.35-11.el6.x86_64
[root@localhost ~]# tar xf libiconv-1.14.tar.gz -C /usr/src/
[root@localhost ~]# cd /usr/src/libiconv-1.14/
[root@localhost libiconv-1.14]# ./configure --prefix=/usr/local/libiconv && make && make install

 [root@localhost ~]# rpm -ivh mhash-0.9.9.9-3.el6.x86_64.rpm 
warning: mhash-0.9.9.9-3.el6.x86_64.rpm: Header V3 RSA/SHA256 Signature, key ID 0608b895: NOKEY
Preparing...                ########################################### [100%]
   1:mhash                  ########################################### [100%]
[root@localhost ~]# rpm -ivh libmcrypt-2.5.8-9.el6.x86_64.rpm 
warning: libmcrypt-2.5.8-9.el6.x86_64.rpm: Header V3 RSA/SHA256 Signature, key ID 0608b895: NOKEY
Preparing...                ########################################### [100%]
   1:libmcrypt              ########################################### [100%]
[root@localhost ~]# rpm -ivh libmcrypt-devel-2.5.8-9.el6.x86_64.rpm 
warning: libmcrypt-devel-2.5.8-9.el6.x86_64.rpm: Header V3 RSA/SHA256 Signature, key ID 0608b895: NOKEY
Preparing...                ########################################### [100%]
   1:libmcrypt-devel        ########################################### [100%]
[root@localhost ~]# rpm -ivh mcrypt-2.6.8-10.el6.x86_64.rpm 
warning: mcrypt-2.6.8-10.el6.x86_64.rpm: Header V3 RSA/SHA256 Signature, key ID 0608b895: NOKEY
Preparing...                ########################################### [100%]
   1:mcrypt                 ########################################### [100%]

  1. 开始安装PHP(fastcgi方式)服务
    (1)解压配置PHP
[root@localhost ~]# tar xf php-5.3.28.tar.gz -C /usr/src/
[root@localhost ~]# cd /usr/src/php-5.3.28/
[root@localhost php-5.3.28]# ./configure \
> --prefix=/usr/local/php5.3.28 \
> --with-mysql=mysqlnd \
> --with-iconv-dir=/usr/local/libiconv \
> --with-freetype-dir \
> --with-jpeg-dir \
> --with-png-dir \
> --with-zlib \
> --with-libxml-dir=/usr \
> --enable-xml \
> --disable-rpath \
> --enable-safe-mode \
> --enable-bcmath \
> --enable-shmop \
> --enable-sysvsem \
> --enable-inline-optimization \
> --with-curl \
> --with-curlwrappers \
> --enable-mbregex \
> --enable-fpm \
> --enable-mbstring \
> --with-mcrypt \
> --with-gd \
> --enable-gd-native-ttf \
> --with-openssl \
> --with-mhash \
> --enable-pcntl \
> --enable-sockets \
> --with-xmlrpc \
> --enable-zip \
> --enable-soap \
> --enable-short-tags \
> --enable-zend-multibyte \
> --enable-static \
> --with-xsl \
> --with-fpm-user=www \
> --with-fpm-group=www \
> --enable-ftp
+--------------------------------------------------------------------+
| License:                                                           |
| This software is subject to the PHP License, available in this     |
| distribution in the file LICENSE.  By continuing this installation |
| process, you are bound by the terms of this license agreement.     |
| If you do not agree with the terms of this license, you must abort |
| the installation process at this point.                            |
+--------------------------------------------------------------------+

Thank you for using PHP.
--------------------------------------------------------------
快捷方式:
[root@localhost php-5.3.28]# ./configure --prefix=/usr/local/php5.3.28  --with-mysql=mysqlnd --with-iconv-dir=/usr/local/libiconv --with-freetype-dir  --with-jpeg-dir  --with-png-dir --with-zlib --with-libxml-dir=/usr  --enable-xml --disable-rpath  --enable-safe-mode --enable-bcmath --enable-shmop --enable-sysvsem --enable-inline-optimization --with-curl --with-curlwrappers --enable-mbregex  --enable-fpm --enable-mbstring --with-mcrypt --with-gd --enable-gd-native-ttf --with-openssl --with-mhash --enable-pcntl --enable-sockets --with-xmlrpc --enable-zip --enable-soap --enable-short-tags --enable-zend-multibyte --enable-static --with-xsl  --with-fpm-user=www  --with-fpm-group=www  --enable-ftp



(2)编译安装PHP

[root@localhost php-5.3.28]# touch ext/phar/phar.phar
[root@localhost php-5.3.28]# make
[root@localhost php-5.3.28]# make install
[root@localhost php-5.3.28]#  ln -s /usr/local/php5.3.28/ /usr/local/php
[root@localhost php-5.3.28]# cd /usr/local/php
[root@localhost php]# cd /usr/src/php-5.3.28/
[root@localhost php-5.3.28]# ls php.ini*
php.ini-development  php.ini-production
[root@localhost php-5.3.28]# cp php.ini-production /usr/local/php/lib/php.ini
[root@localhost php-5.3.28]# cd /usr/local/php/etc/
[root@localhost etc]# ls 
pear.conf  php-fpm.conf.default
[root@localhost etc]# cp php-fpm.conf.default php-fpm.conf
[root@localhost etc]#  /usr/local/php/sbin/php-fpm
[root@localhost etc]# netstat -antup | grep 9000
tcp        0      0 127.0.0.1:9000              0.0.0.0:*                   LISTEN      129604/php-fpm      
[root@localhost etc]# vim php-fpm.conf
151 listen = 192.168.214.167:9000  #分离式部署,改为PHP服务器IP地址

配置nginx支持PHP程序请求访问
[root@localhost etc]# cd /usr/local/nginx/conf/
[root@localhost conf]# cp nginx.conf nginx.conf.bak
[root@localhost conf]# vim nginx.conf
worker_processes  1;
error_log logs/error.log;
events {
    worker_connections  1024;
}
http {
    include       mime.types;
    default_type  application/octet-stream;
    sendfile        on;
    keepalive_timeout  65;
    server {
        listen       80;
        server_name  www.yunjisuan.com;
       		  root   /www;
          location / {
        	 index  index.php index.html index.htm;
        }
        location ~ .*\.(php|php5)?$ {
                fastcgi_pass192.168.214.167:9000;
                fastcgi_index index.php;
                include fastcgi.conf;
        }
    }
}
 # 配置nginx.conf配置文件并启动nginx
[root@localhost ~]# vim /usr/local/nginx/conf/nginx.conf
worker_processes  1;
events {
    worker_connections  1024;
}
http {
    include       mime.types;
    default_type  application/octet-stream;
    sendfile        on;
    keepalive_timeout  65;
    server {
        listen       80;
        server_name  www.yunjisuan.com;
        root   /www;
        location / {
            index index.php index.html index.htm;  #添加一个动态文件
        }
        location ~ .*\.(php|php5)?$ {
                fastcgi_pass 192.168.214.167:9000;  #PHPIP地址
                fastcgi_index index.php;
                include fastcgi.conf;
        }
    }
}
[root@localhost ~]# /usr/local/nginx/sbin/nginx -s reload
[root@localhost ~]# vim /etc/hosts
127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
::1         localhost localhost.localdomain localhost6 localhost6.localdomain6
192.168.214.169  www.yunjisuan.com
[root@localhost /]# mkdir -p www
[root@localhost /]# chown -R www.www /www/
[root@localhost /]# echo "123456" > index.php  # index.php文件的位置必须与PHP服务器的一致,同时存在
 #本机/我的电脑/磁盘C/Windows/system32/drivers/etc/hosts
 192.168.214.169		www.yunjisuan.com                                   

配置PHP服务器的配置文件

[root@localhost ~]# vim /usr/local/php/etc/php-fpm.conf

;       will be used.
user = www
group = www

; The address on which to accept FastCGI requests.
; Valid syntaxes are:
;   'ip.add.re.ss:port'    - to listen on a TCP socket to a specific address on
;                            a specific port;
;   'port'                 - to listen on a TCP socket to all addresses on a
;                            specific port;
;   '/path/to/unix/socket' - to listen on a unix socket.
; Note: This value is mandatory.
listen = 192.168.214.167:9000

; Set listen(2) backlog. A value of '-1' means unlimited.
; Default Value: 128 (-1 on FreeBSD and OpenBSD)
;listen.backlog = -1

[root@localhost ~]# mkdir -p /www
[root@localhost ~]# cd /www/
[root@localhost www]# chown -R www.www /www/
[root@localhost www]# echo "daisy" > index.php
[root@localhost www]# vim test_mysql.php 
<?php
        //$link_id=mysql_connect('主机名','用户','密码');
        $link_id=mysql_connect('192.168.214.168','yunjisuan','123456');  # IP地址为MySQLIP地址
        if($link_id){
                echo "mysql successful by daisy\n";
        }else{
                echo mysql_error();
        }
?>

配置MySQL基本数据

[root@lnmp ~]# mysql -uroot -p123456
mysql> grant all on *.* to 'yunjisuan'@'%' identified by '123456';
Query OK, 0 rows affected (0.00 sec)

mysql> flush privileges;
Query OK, 0 rows affected (0.00 sec)

mysql> select user,host from mysql.user;
+-----------+-----------------------+
| user      | host                  |
+-----------+-----------------------+
| yunjisuan | %                     |
| root      | 127.0.0.1             |
| root      | ::1                   |
|           | localhost             |
| root      | localhost             |
|           | localhost.localdomain |
| root      | localhost.localdomain |
+-----------+-----------------------+
7 rows in set (0.00 sec)

mysql> exit
Bye

查看nginx与PHP的动态数据连接情况
在这里插入图片描述
查看mysql与PHP连接情况
在这里插入图片描述

用fastcgi方式实现负载均衡

  1. 克隆服务器PHP2(用PHP服务器克隆)
    (PHP2端)
[root@localhost ~]# vim /usr/local/php/etc/php-fpm.conf

;       will be used.
user = www
group = www

; The address on which to accept FastCGI requests.
; Valid syntaxes are:
;   'ip.add.re.ss:port'    - to listen on a TCP socket to a specific address on
;                            a specific port;
;   'port'                 - to listen on a TCP socket to all addresses on a
;                            specific port;
;   '/path/to/unix/socket' - to listen on a unix socket.
; Note: This value is mandatory.
listen = 192.168.214.170:9000   #修改为本服务器IP地址

; Set listen(2) backlog. A value of '-1' means unlimited.
; Default Value: 128 (-1 on FreeBSD and OpenBSD)
;listen.backlog = -1
[root@localhost ~]# /usr/local/php/sbin/php-fpm 
[root@localhost ~]# ss -antup | grep 9000
tcp    LISTEN     0      128      192.168.214.170:9000                  *:*      users:(("php-fpm",1518,7),("php-fpm",1519,0),("php-fpm",1520,0))
[root@localhost www]# vim index.php 
daisy 2


(nginx端)

[root@blog ~]# vim /usr/local/nginx/conf/nginx.conf
worker_processes  1;
events {
    worker_connections  1024;
}
http {
    include       mime.types;
    default_type  application/octet-stream;
    sendfile        on;
    keepalive_timeout  65;
    upstream www{
        server 192.168.214.167:9000;  #反向代理的IP地址
        server 192.168.214.170:9000;

        }
    server {
        listen       80;
        server_name  www.yunjisuan.com;
        root   /www;
        location / {
            index index.php index.html index.htm;
        }
        location ~ .*\.(php|php5)?$ {
                fastcgi_pass www;  # 目录名
                fastcgi_index index.php;
                include fastcgi.conf;
        }
    }
}
[root@blog ~]# /usr/local/nginx/sbin/nginx -s reload

测试PHP访问MySQL
(PHP端)

[root@localhost www]# vim test_mysql.php 
<?php
        //$link_id=mysql_connect('主机名','用户','密码');
        $link_id=mysql_connect('192.168.214.168','yunjisuan','123456');  # IP地址为MySQLIP地址
        if($link_id){
                echo "mysql successful by daisy\n";
        }else{
                echo mysql_error();
        }
?>

(PHP2端)

[root@localhost www]# vim test_mysql.php 
<?php
        //$link_id=mysql_connect('主机名','用户','密码');
        $link_id=mysql_connect('192.168.214.168','yunjisuan','123456');  # IP地址为MySQLIP地址
        if($link_id){
                echo "mysql successful by daisy\n";
        }else{
                echo mysql_error();
        }
?>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值