LNMP分布式

LNMP分布式

共需要三台虚拟机,一台虚拟机安装nginx,一台虚拟机安装MySQL,一台安装php。

(一)安装nginx

在一台虚拟机上安装nginx

1.安装依赖环境

(1)更新yum源  [可选]

mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup

wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-6.repo

(2)安装依赖包

yum -y install pcre-devel  zlib-devel

yum  -y  install  gcc  gcc-c++

2.添加nginx用户

useradd  -M  -s  /sbin/nologin nginx

3.安装nginx

tar zxf  nginx-1.6.0.tar.gz   -C /usr/src

cd /usr/src/nginx-1.6.0/

./configure  --prefix=/usr/local/nginx --user=nginx  --group=nginx  --with-http_stub_status_module

执行完上一步,如果要判断是否成功的话,用(echo  $?),如果返回0,则表示无错,否则有错。

make  &&   make   install

4.优化执行方式

实现可全局执行,可通过建立软链接或在/etc/profile中添加路径。

ln   -s   /usr/local/nginx/sbin/nginx   /usr/local/sbin/

此时可通过nginx启动,通过killall -9  nginx关闭,查看进程netstat -atp

5.编写启动服务脚本

vim    /etc/init.d/nginx

# !/bin/bash

# chkconfig: - 99 20

# description:  for  nginx

PROG="/usr/local/nginx/sbin/nginx"           #启动执行文件

PIDF="/usr/local/nginx/logs/nginx.pid"                     #存储nginx的进程号的文件

case "$1" in                                                                       # $1表示第一个参数

        start)                                                                #第一个参数为start时,执行如下命令

                $PROG

                ;;

        stop)                                                                 #第一个参数为stop时,执行如下命令

                kill -s QUIT $(cat $PIDF)

                ;;

        restart)                                                            #第一个参数为restart时,执行如下命令

                kill -s QUIT $(cat $PIDF)

                $PROG

                ;;

        reload)                                                             #第一个参数为reload时,执行如下命令

                kill -s HUP $(cat $PIDF)

                ;;

        *)                                                                       #第一个参数为其他时,执行如下命令

                echo "Usage $0 ( start | stop | restart | reload )"

                exit 1

esac

exit 0

watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3lpbmdxaWFubWVuZw==,size_16,color_FFFFFF,t_70

给文件加执行权限

chmod  +x    /etc/init.d/nginx

6.添加到开机启动项

chkconfig --add nginx

chkconfig --level 35 nginx on

chkconfig --list  nginx                        #查看启动项

7.解读nginx配置文件部分内容 [可选]

执行程序的用户和工作进程的数量,其中工作进程的数量,官方推荐为不超过系统cpu的内核数。

20190928195417310.png

http服务器配置区域,此处的配置相当于全局配置。可在这里面配置多个服务器(虚拟主机)。

watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3lpbmdxaWFubWVuZw==,size_16,color_FFFFFF,t_70

声明一台服务器并配置相关参数,其中可以配置location访问根目录(如:http://192.168.8.116/)等

watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3lpbmdxaWFubWVuZw==,size_16,color_FFFFFF,t_70

配置访问/时,在服务器上对应的路径,首页

20190928195417359.png

配置访问php文件时,执行的参数。

20190928195417370.png

8.测试

关闭防火墙(service iptables  stop ),关闭selinux(setenforce  0)

开启服务

service   nginx  start

watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3lpbmdxaWFubWVuZw==,size_16,color_FFFFFF,t_70

 

(二)安装MySQL

在一台虚拟机上安装MySQL。

1.安装MySQL需要的编译环境

由于mysql是由c写的,所以要安装编译c的包,cmake就是用来编译c的包。

(1)安装编译cmake的环境

yum  -y  install  gcc  gcc-c++

(2)源码安装

tar zxf  cmake-2.8.6.tar.gz  -C /usr/src

cd   /usr/src/cmake-2.8.6

./configure

gmake  &&  gmake  install

2.安装MySQL的字符控制依赖包

ncurses是字符终端下屏幕控制的基本库,你在TTY下登录到主机上mysql需要的,所以依赖。

光盘安装

cd /media/CentOS_6.5_Final/Packages/

rpm -ivh ncurses-devel-5.7-3.20090208.el6.x86_64.rpm

3.安装MySQL

tar  zxf mysql-5.5.22.tar.gz -C /usr/src

cd   /usr/src/mysql-5.5.22

cmake  -DCMAK_INSTALL_PREFIX=/usr/local/mysql  -DSYSCONFDIR=/etc -DDEFAULT_CHARSET=utf8  -DDEFAULT_COLLATION=utf8_general_ci        -DWITH_EXTRA_CHARSETS=all

------*****说明---------------

上面这段参数一点也不能错!

-DCMAK_INSTALL_PREFIX=/usr/local/mysql  安装路径

-DSYSCONFDIR=/etc                  配置文件路径

-DDEFAULT_CHARSET=utf8            默认字符集

-DDEFAULT_COLLATION=uft8_general_ci                字符集比对方法

-DWITH_EXTRA_CHARSETS=all                多余的字符集

结果图:

20190928195417428.png

-----********--------------------------

make  &&  make  install

4.配置MySQL

(1)更新配置文件

删除原有配置文件

cd   /etc

rm  -f  my.cnf

从解压目录拷贝一份配置文件

cp /usr/src/mysql-5.5.22/support-files/my-medium.cnf   /etc/my.cnf

(2)查看配置文件

有兴趣的话,可以仔细读一下。

5.创建MySQL的本地账户

useradd  -s  /sbin/nologin   -M  mysql

chown  -R  mysql:mysql  /usr/local/mysql/

6.初始化数据库

cd  /usr/local/mysql/scripts

./mysql_install_db --user=mysql --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data

解读运行后的部分文字

WARNING: The host 'sutang' could not be looked up with resolveip.

This probably means that your libc libraries are not 100 % compatible

with this binary MySQL version. The MySQL daemon, mysqld, should work

normally with the exception that host name resolving will not work.

This means that you should use IP addresses instead of hostnames

when specifying MySQL privileges !

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:

#设置一个MySQL的root管理员的密码,例子如下:

 

/usr/local/mysql/bin/mysqladmin -u root password 'new-password'

/usr/local/mysql/bin/mysqladmin -u root -h sutang 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.

#建议你进入数据库之后,将test数据库删掉

 

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!

 

7.加入环境变量

这一步是为了在所有地方都可以直接通过mysql命令访问MySQL这个软件。也可以直接将/usr/local/mysql/bin下所有文件创建软链接到/usr/local/sbin

echo  “PATH=$PATH:/usr/local/mysql/bin”  >> /etc/profile

source  /etc/profile 

echo $PATH

如果报错如下:

20190928195417429.png

看一下/etc/profile文件的最后一行。正确的应该如下:

20190928195417434.png

8.生成服务脚本并加入开机启动项

cp /usr/src/mysql-5.5.22/support-files/mysql.server   /etc/rc.d/init.d/mysqld

chmod  +x /etc/rc.d/init.d/mysqld

chkconfig --add mysqld

chkconfig --level 35 mysqld on

chkconfig --list mysqld

mysqld            0:关闭      1:关闭      2:启用      3:启用      4:启用      5:启用      6:关闭

 

9.添加新的MySQL管理员账户

service mysqld start

[root@sutang etc]# mysqladmin -u root -p password 'Aa123456'

Enter password:                                  #此处直接回车

登录测试:

service mysqld restart

watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3lpbmdxaWFubWVuZw==,size_16,color_FFFFFF,t_70

10.添加远程访问MySQL的账户

本地登录数据库,然后如下操作!

grant all privileges on *.* to 'su'@'192.168.8.113' identified by '1234556';

su:为账户名、192.168.8.113远程访问的主机IP(即php服务器的IP)、123456为密码

2019092819541817.png

(三)安装php

1.安装依赖包和必要的编译环境

yum -y install gd libxml2-devel libjpeg-devel libpng-devel

yum -y install  mysql-devel 

yum -y install gcc gcc-c++

2.安装MySQL客户端

yum -y install mysql

ln -s /usr/lib64/mysql/libmysqlclient.so.16.0.0  /usr/lib/libmysqlclient.so                

3.登录测试

(1)登录命令格式:

mysql  -P  端口号  -h  MySQL主机/ip   -u  用户名  -p

端口号的选项为大写的P。

(2)测试

mysql  -P 3306 -h 192.168.8.115 -u su  -p

watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3lpbmdxaWFubWVuZw==,size_16,color_FFFFFF,t_70

4.安装php

tar zxf php-5.3.28.tar.gz  -C /usr/src/

cd /usr/src/php-5.3.28/

./configure  --prefix=/usr/local/php5  --with-gd  --with-zlib  --with-mysql=/usr  --with-config-file-path=/usr/local/php5 --enable-mbstring --enable-fpm  --with-jpeg-dir=/usr/lib

make  &&  make  install

5.修改配置文件

(1)复制一份配置文件

cp /usr/src/php-5.3.28/php.ini-development   /usr/local/php5/php.ini

(2)修改配置文件

vim /usr/local/php5/php.ini

修改部分如下:

2019092819541825.png

20190928195418500.png

20190928195418501.png

20190928195418566.png

6.php-fpm的配置

启动php-fpm进程,以便监听nginx传过来的PHP请求。

(1)添加一个php用户

useradd  -M  -s  /sbin/nologin  php

(2)复制一份php-fpm配置文件

cd  /usr/local/php5/etc

cp php-fpm.conf.default php-fpm.conf

(3)修改php-fpm的配置文件

vim  /usr/local/php5/etc/php-fpm.conf

修改部分如下:

20190928195418554.png

20190928195418554.png

下图中的IP为nginx服务器的IP

20190928195418561.png

下图中的IP为php服务器的IP(即本机的IP)

20190928195418556.png

(4)加入启动项

vim   /etc/init.d/php-fpm

watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3lpbmdxaWFubWVuZw==,size_16,color_FFFFFF,t_70

chmod +x /etc/init.d/php-fpm

[root@mao etc]# chkconfig --add php-fpm

[root@mao etc]# chkconfig --level 35 php-fpm on

[root@mao etc]# chkconfig --list php-fpm

php-fpm           0:关闭      1:关闭      2:关闭      3:启用      4:关闭      5:启用      6:关闭

service php-fpm start

[root@mao ~]# netstat -anpt | grep php-fpm                  #查看该进程

tcp     0      0 127.0.0.1:9000     0.0.0.0:*      LISTEN      103273/php-fpm  

(四)nginx与php互连

1.修改nginx配置文件

vim /usr/local/nginx/conf/nginx.conf

20190928195418682.png

第一个红框为php那台服务器的IP地址

第二个红框为php那台服务器上存放网页的目录。(路径为绝对路径)

2.测试php

(1)编写一个php页面

在php服务器的网页目录编写一个php文件

cd  /www/html

vim test.php

内容如下:

<?php

phpinfo()

?>

(2)访问结果

注意:每一台服务器的iptables和selinux都是关闭的。

关闭iptables  :  service  iptables  stop

临时关闭selinux:  setenforce  0

watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3lpbmdxaWFubWVuZw==,size_16,color_FFFFFF,t_70

3.测试php连接MySQL

(1)编写一个php页面

在php服务器的网页目录编写一个php文件

cd  /www/html

vim sql.php

内容如下:

<?php

$link=mysql_connect('192.168.8.115','su','123456');  

if($link) echo "数据库连接成功";

mysql_close();

?>

(2)访问结果

注意:每一台服务器的iptables和selinux都是关闭的。

关闭iptables  :  service  iptables  stop

临时关闭selinux:  setenforce  0

watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3lpbmdxaWFubWVuZw==,size_16,color_FFFFFF,t_70

4.php网页源码测试

(1)必要知识

php服务器解析动态页面,nginx解析静态页面。但是php页面中有很多地方采用了静态解析图片,为了让浏览器显示的php页面中有图片,必须在nginx服务器中放网页源码包来提供图片。

nginx的配置文件中内容如下:

worker_processes  1;

events { … }

http{..

                   server { …

                                               location /{…}

                                               location ~\.php$ {…}

                            }

                   server {…

                            }

}

其中location /{…}是解析静态页面的相关配置;location ~\.php${…}是解析动态页面的相关配置。为了让php页面正常显示图片,需要在location /{…}中设置的网页默认目录下存放源码包。为了让php页面正常显示,需要在location ~\.php${…}中设置的网页默认目录下存放源码包。

(2)分别在nginx和php服务器上存放源码包

1)nginx服务器:

mkdir -p  /www/html

cd  /www/html

在/www/html目录下存放源码包

2)php服务器:

mkdir -p  /www/html

cd  /www/html

在/www/html目录下存放源码包

(3)修改nginx配置文件

20190928195419682.png

20190928195419745.png

图中红框内$document_root和root的参数值等同。如果不这样写的话,可以直接写/www/html。

(4)重启服务并测试

nginx服务器上:            service  nginx  restart

php服务器上:               service  php-fpm  restart

关闭防火墙(service  iptables   stop)与selinux(gentenforce  0)

测试结果如下:

watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3lpbmdxaWFubWVuZw==,size_16,color_FFFFFF,t_70 

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值