LNMP分离部署

 

环境:

Nginx+PHP:192.168.2.144

Mysql:192.168.2.151

【Nginx】

yum install -y pcre-devel openssl-deve popt-devel

tar zxvf nginx-1.11.2.tar.gz -C /usr/src/
cd /usr/src/
d /usr/src/nginx-1.11.2/
./configure --prefix=/usr/local/nginx --with-http_stub_status_module --with-http_ssl_module
 make
 make install
 ln -s /usr/local/nginx/sbin/nginx /usr/local/sbin/
nginx -t

[root@www ~]# cat /etc/init.d/nginx
#!/bin/bash
PRIF="/usr/local/nginx/sbin/nginx"
PROG="/usr/local/nginx/logs/nginx.pid"
case $1 in 
start)
    [[ `netstat -anput | grep nginx | wc -l` -eq 0 ]]
    $PRIF
    ([ `echo $?` -eq 0 ] && echo "This Start Secusses!") ||(echo "This Nginx Running,Please reload or restart")
;;
stop)
    [[ `netstat -anput | grep nginx | wc -l` > 0 ]]
     kill -s QUIT $(cat $PROG)
    ([ `echo $?` -eq 0 ] && echo "Nginx stop successfully!") || (echo "Failed stop nginx!")
;;
reload)
     if [[ `netstat -anput | grep nginx | wc -l` > 0 ]];then
     kill -s HUP $(cat $PROG)
  else
     $PRIF
     kill -s HUP $(cat $PROG)
     ([ `echo $?` -eq 0 ] && echo "This is Nginx reload Secussed!")|| (echo "This Nginx Reload failure!")
   fi
;;
restart)
    if [[ `netstat -anput | grep nginx | wc -l` == 0 ]];then
     echo "This Nginx Running..."
     $PRIF     
    ([ `echo $?` -eq 0 ] && echo "Nginx start successfully!")
 else
     echo Stopping Nginx...
    kill -s QUIT $(cat $PROG)
    $PRIF
    ([ `echo $?` -eq 0 ] && echo "This is Nginx Restart Secussed!") || (echo "This Nginx Restart Faulure!")
   fi
;;
*)
   echo -e "\033[41;36m Unages: $0 [start|stop|reload|restart]\033[0m"
   exit 1
;;
esac

【Mysql】

[root@DBserver ~]# yum install -y cmake ncurses-devel 

[root@DBserver ~]# tar zxvf mysql-5.5.38.tar.gz -C /usr/src/

[root@DBserver ~]# cd /usr/src/mysql-5.5.38/
[root@DBserver mysql-5.5.38]# cmake -DCMAKE_INSTALL_PREFIX=/usr/local/mysql -DSYSCONFDIR=/etc -DDEFAULT_CHARSET=utf8 -DDEFAULT_COLLATION=utff8_general_ci -DWITH_EXTRA_CHARSETS=all

[root@DBserver mysql-5.5.38]# make

[root@DBserver mysql-5.5.38]# make install

[root@DBserver mysql-5.5.38]# useradd -M -s /sbin/nologin mysql
[root@DBserver mysql-5.5.38]# chown -R mysql.mysql /usr/local/mysql/
[root@DBserver mysql-5.5.38]# cp /usr/local/mysql/support-files/my-medium.cnf /etc/my.cf
[root@DBserver mysql-5.5.38]# /usr/local/mysql/scripts/mysql_install_db --user=mysql --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data/

[root@DBserver mysql-5.5.38]# cp /usr/local/mysql/support-files/mysql.server /etc/init.d/mysqld
[root@DBserver mysql-5.5.38]# echo "PATH=$PATH:/usr/local/mysql/bin" >>/etc/profile
[root@DBserver mysql-5.5.38]# source /etc/profile

 [root@DBserver mysql-5.5.38]# chkconfig --add mysqld

[root@DBserver mysql-5.5.38]# systemctl  mysqld start 

[php]

[root@www ~]# yum install -y libxml2-devel bzip2-devel libcurl-devel libmcrypt-devel

[root@www ~]# tar -jxvf php-5.6.8.tar.bz2 -C /usr/src/

[root@www php-5.6.8]# ./configure --prefix=/usr/local/php --with-mysql --with-pdo-mysql --with-mysqli --with-openssl --enable-fpm --enable-sockts --enable-mbstring --with-jpeg-dir --with-png-dir --with-libxml-dir=/usr/ --with-config-file-path=/etc/ --with-config-file-scan-dir=/etc/php.d --with-curl

[root@www php-5.6.8]# make 

[root@www php-5.6.8]# make install

[root@www php-5.6.8]# cp php.ini-production /etc/php.ini
[root@www php-5.6.8]# cp sapi/fpm/init.d.php-fpm /etc/init.d/php-fpm
[root@www php-5.6.8]# chmod +x /etc/init.d/php-fpm
[root@www php-5.6.8]# chkconfig --add php-fpm
[root@www php-5.6.8]# chkconfig php-fpm on
[root@www php-5.6.8]# cp /usr/local/php/etc/php-fpm.conf.default /usr/local/php/etc/php-fpm.conf

[root@www etc]# sed -i '235s#pm.max_children = 5#pm.max_children = 150#;s#pm.start_servers = 2#pm.start_servers = 8#;s#pm.min_spare_servers = 1#pm.min_spare_servers = 8#;s#pm.max_spare_servers = 3#pm.max_spare_servers = 10#g' /usr/local/php/etc/php-fpm.conf

配置php-fpm的 Pid文件路径

[root@www etc]# sed -i 's#;pid = run/php-fpm.pid#pid = /usr/local/php/var/run/php-fpm.pid#g' /usr/local/php/etc/php-fpm.conf

在php-fpm配置文件配置用户名为nginx,用nginx用户来启用php-fpm程序,而监听地址为本地IP用来调用

[root@www etc]# sed -i 's#user = nobody#user = nginx#;s#group = nobody#group = nginx#;s#listen = 127.0.0.1:9000#listen = 192.168.2.144:9000#g' /usr/local/php/etc/php-fpm.conf

【整合Nginx与PHP】

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   /www/webapp/;
            index index.php index.html index.htm;
        }
           location ~ \.php$ {
             root           /www/webapp;
               fastcgi_pass   192.168.2.144:9000;
               fastcgi_index  index.php;
               fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;
               include        fastcgi_params;
           }
        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }
    }
}

[root@www etc]# mkdir /www/webapp -p 

[root@www etc]# useradd -M -s /sbin/nologin  nginx 

[root@www etc]# systemctl start php-fpm

netstat -anput | grep php-fpm
tcp 0 0 192.168.2.144:9000 0.0.0.0:* LISTEN 126357/php-fpm: mas

[root@www ~]# cat /www/webapp/index.php
<?php
phpinfo();
?>

Ps:如果PHP单独在一个服务独立运行的话。可以用nfs共享,指定php-fpm的本地IP进行挂载

1 mkdir /www
2 chown -R nginx:nginx /www
3 vim /etc/exports
4 ---------------------------------------------
5 /www    192.168.2.0/24(rw,no_root_squash)
6 ---------------------------------------------
7 service nfs start

8 mount -t nfs 192.168.2.144:/www /www
【Discuz论坛】

[root@www ~]# unzip Discuz_X3.1_SC_UTF8.zip -d /www/webapp

[root@www ~]# cd /www/webapp
[root@www webapp]# mv upload/* .

[root@www webapp]# chmod 777 -R data/ config/ uc_client/ uc_server/ 

【数据库授权】

[root@DBserver mysql-5.5.38]# mysql -u root -p123.com

mysql> create database Discuzdb default charset=utf8;

mysql> grant all on Discuzdb.* to root@'mysql> grant all on Discuzdb.* to root@'192.168.2.144' identified by '123456';

mysql> flush privileges;

【Mysql数据库错误问题汇总】

错误1:预编译报错:

CMake Error: CMAKE_CXX_COMPILER not set, after EnableLanguage
CMake Error: Internal CMake error, TryCompile configure of cmake failed

错误2:解决方法:

make clean    #清楚上次编译生成的object文件以及二进制文件
rm -rf CMakeCache.txt  
rm -rf /etc/my.cnf

make[2]: *** [sql/CMakeFiles/sql.dir/mysqld.cc.o] 错误 1
make[1]: *** [sql/CMakeFiles/sql.dir/all] 错误 2

 

posted @ 2018-08-08 09:47  Mr&Yu  阅读(704)  评论(0编辑  收藏  举报