LNMP架构及应用部署

挂载

[root@node1 ~]# mount /dev/cdrom /mnt/

在ftp 下载这几个软件包

cmake-2.8.6.tar.gz

mysql-5.6.36.tar.gz

php-5.5.38.tar.gz

zend-loader-php5.5-linux-x86_64_update1.tar.gz

Discuz_X3.3_SC_UTF8.zip

1.安装MySQL数据库

为了与Nginx、PHP环境保持一致,仍选择采用源代码编译的方式安装MySQL 组件.以5.5.22版本为例,安装过程如下所述。

(1}编译安装MySQL。

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

[root@node1 cmake-2.8.6]# tar zxvf cmake-2.8.6.tar.gz 
[root@node1 ~]# cd cmake-2.8.6/
[root@node1 cmake-2.8.6]# ./configure 
[root@node1 cmake-2.8.6]# gmake
[root@node1 cmake-2.8.6]# gmake install

创建用户

[root@node1 cmake-2.8.6]# cd
[root@node1 ~]# groupadd mysql
[root@node1 ~]# useradd -M -s /sbin/nologin mysql -g mysql

安装 MYSQL

[root@node1 ~]# tar zxf mysql-5.6.36.tar.gz 
[root@node1 ~]# cd mysql-5.6.36/

[root@node1 ~]#  cmake -DCMAKE_INSTALL_PREFIX=/usr/local/mysql -DDEFAULT_CHARSET=utf8 -DDEFAULT_COLLATION=utf8_general_ci -DWITH_EXTRA_CHARSETS=all -DSYSCONFDIR=/etc

[root@node1 ~]# make
[root@node1 ~]# make install

[root@node1 mysql-5.6.36]# chown -R mysql:mysql /usr/local/mysql/

[root@node1 mysql-5.6.36]# rm -rf /etc/my.cnf
[root@node1 mysql-5.6.36]# cp /usr/local/mysql/support-files/my-default.cnf /etc/my.cnf

[root@node1 mysql-5.6.36]# vim /etc/my.cnf




# *** upgrade to a newer version of MySQL.
[client]
default-character-set=utf8

[mysqld]
character_set_server=utf8
# Remove leading # and set to the amount of RAM for the most important data

初始化数据库

为了能够正常使用MySQL 数据库系统,应以运行用户mysql的身份执行初始化脚本mysql_instail_db,指定数据存放目录等。

[root@Linux01 mysql-5.6.36]# /usr/local/mysql/scripts/mysql_install_db --user=mysql --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data/

设置环境变量

为了方便在任何目录下使用mysql命令,需要在/etc / profile设置环境变量。

[root@Linux01 mysql-5.6.36]# echo "PATH=$PATH:/usr/local/mysql/bin" >> /etc/profile
[root@Linux01 mysql-5.6.36]# . /etc/profile
                                    //立即生效

添加系统服务

若希望添加mysqld系统服务.以便通过systemctl进行管理,可以直接使用源码包中提供的服务脚本。找到 support-files文件夹下的mysql , server脚本文件,将其复制到/usr /local/mysql/bin/目录下.并改名为mysqld ,.sh,然后创建mysql系统服务的配置文件/usr /lib/systernd/system/mysqld . service,将其添加为mysqld系统服务。

[root@Linux01 mysql-5.6.36]# cp support-files/mysql.server /usr/local/mysql/bin/mysqld.sh
 
[root@Linux01 mysql-5.6.36]# chmod +x /usr/local/mysql/bin/mysqld.sh

[root@Linux01 mysql-5.6.36]# vim /usr/lib/systemd/system/mysqld.service


[Unit]
Descrition=MySQL Server
After=network.taeget
 
[Service]
User=mysql
Group=mysql
 
Type=forking
PIDFile=/usr/local/mysql/data/Linux01.pid           //Linux01  是主机名
ExecStart=/usr/local/mysql/bin/mysqld.sh start
ExecStop=/usr/local/mysql/bin/mysqld.sh stop
 
[Install]
WantedBy=multi-user.target

启动 mysqld

[root@node1 mysql-5.6.36]# systemctl start nginx    //启动 nginx

[root@node1 mysql-5.6.36]# systemctl start mysqld    //启动 mysqld

[root@node1 mysql-5.6.36]# systemctl status mysqld   //查看启动状态


[root@node1 mysql-5.6.36]# mysqladmin -u root password 'pwd123'

登录 mysql

2.安装PHP解析环境

较新版本(如5.5)的PHP已经自带FPM ((FastCGl Process Manager ,FastCGl进程管理器)模块.用来对PHP解析实例进行管理.优化解析效率.单服务器的LNMP架构通常使用这种方式,因此在配置PIP编译选项时应添加"------enable一fpm"以启用此模块。

以源码包php-5.5.38为例.具体安装过程如下。为了提高PHP解析效率,建议将相应版本的ZendGuardLoader也装上.

(1)编译安装PIP.

[root@node1 ~]# yum -y install gd libxml2-devel libjpeg-devel libpng-devel
[root@node1 ~]# tar zxvf php-5.5.38.tar.gz 
[root@node1 ~]# cd php-5.5.38/

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


[root@node1 ~]# make
[root@node1 ~]# make install

(2)安装后的调整。

[root@node1 php-5.5.38]# cp php.ini-development /usr/local/php5/php.ini
[root@node1 php-5.5.38]# ln -s /usr/local/php5/bin/* /usr/local/bin/
[root@node1 php-5.5.38]# ln -s /usr/local/php5/sbin/* /usr/local/sbin/

{3〉安装ZendGuardL_oader 。

[root@node1 php-5.5.38]# cd

[root@node1 ~]# tar zxvf zend-loader-php5.5-linux-x86_64_update1.tar.gz zend-loader-php5.5-linux-x86_64


[root@node1 ~]# cd zend-loader-php5.5-linux-x86_64/
[root@node1 zend-loader-php5.5-linux-x86_64]# cp ZendGuardLoader.so /usr/local/php5/lib/php/


[root@node1 zend-loader-php5.5-linux-x86_64]# vim /usr/local/php5/php.ini

zend_extension=/usr/local/php5/lib/php/ZendGuardLoader.so    //增加这两行
zend_loader.enable=1

3.配置Nginx支持PHP环境

若要让Nginx能够解析PHP网页.有两种方法可以选择:其一,充当中介.将访问PHP页面的Web请求转交给其他服务器(LAMP)去处理,其二,通过使用PHP的FPM模块来调用本机的PHP环境。

1〕启用php-fpm 进程

如果选用FPM方式.则需要先启动php-fpm进程,以便监听PHP解析请求。参考范例建立php-fprm , conf配置文件.并修改其中的PID文件、运行用户.服务数〔进程数量)等相关设置,然后启动php一fpm程序即可(默认监听本机的9000端口).

[root@node1 zend-loader-php5.5-linux-x86_64]# cd
[root@node1 ~]# cd /usr/local/php5/etc/
[root@node1 etc]# cp php-fpm.conf.default php-fpm.conf
[root@node1 etc]# useradd -M -s /sbin/nologin php
[root@node1 etc]# vim php-fpm.conf

user = php    // 全部更改面的值
group = php
pm.start_servers = 20
pm.min_spare_servers = 5
pm.max_spare_servers = 35
pm.max_children = 50


[root@node1 etc]# /usr/local/sbin/php-fpm 
[root@node1 etc]# netstat -anpt | grep php-fpm

在php-fpm.conf文件中, pid 配置行指出了PID信息的存放位置,对应的实际路径为/usr/local/php5/var /run/php-fpm .pid。根据上述信息,可以修改Nginx服务脚本.以便在启动/停止Nginx服务器时将php-fpm进程也自动启动/停止。

[root@localhost ~]# vim /etc/init.d/nginx 
#!/bin/bash
# chkconfig: - 99 20
# description: Nginx Service Control Script
PROG="/usr/local/nginx/sbin/nginx"
PIDF="/usr/local/nginx/logs/nginx.pid"
PROG_FPM="/usr/local/sbin/php-fpm"
PIDF_FPM="/usr/local/php5/var/run/php-fpm.pid"
case "$1" in
    start)
        $PROG
        $PROG_FPM
        ;;
    stop)
        kill -s QUIT $(cat $PIDF)
        kill -s QUIT $(cat $PIDF_FPM)
        ;;
    restart)
        $0 stop
        $0 start
        ;;
    reload)
        kill -s HUP $(cat $PIDF)
        kill -s HUP $(cat $PIDF_FPM)
        ;;
    *)
        echo "Usage: $0 {start|stop|restart|reload}"
        exit 1
esac
exit 0

2〉配置Nginx支持P·P解析

无论是将PHP页面交给LAMP服务器去解析.还是调用本机的php-fpm进程进行解析.都需要在"server { }"配置段中添加 location设置,以便指定当访问.php网页时采取何种操作。

[root@localhost ~]# vim /usr/local/nginx/conf/nginx.conf


#pid        logs/nginx.pid;


events {
       worker_connections  1024;
}


http {
    include       mime.types;
    default_type  application/octet-stream;

    log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
                      '$status $body_bytes_sent "$http_referer" '
                      '"$http_user_agent" "$http_x_forwarded_for"';

    #access_log  logs/access.log  main;

    sendfile        on;
    #tcp_nopush     on;

    #keepalive_timeout  0;
    keepalive_timeout  65;

    #gzip  on;

    server {
        listen       80;
        server_name  localhost;

        charset utf-8;

        #access_log  logs/host.access.log  main;

        location / {
            root   html;
            index  index.html index.php;
        }


        location ~ \.php$ {
           root /var/www/bdqn;
           fastcgi_pass 127.0.0.1:9000;
           fastcgi_index index.php;
           include fastcgi.conf;
        }

        #error_page  404              /404.html;



[root@localhost ~]# systemctl restart nginx

3)PHP页面访问测试

以调用php-fpm 解析为例.可以在PHP文档根目录下创建一个测试网页.用以测试PHP语句能否正常解析.以及能否连接MySQL数据库.

[root@localhost ~]# vim /var/www/bdqn/test.php 


<?php
$link=mysqli_connect('localhost','root','pwd123');
if($link) echo "<h1>恭喜你,数据库连接成功啦!!</h1>";
mysqli_close($link);
?>
相关推荐
群联云防护小杜10 分钟前
服务器被挂马怎么办?——解决服务器被挂马的方法和步骤
运维·服务器·网络协议·tcp/ip·安全·ddos
明志致远淡泊宁静15 分钟前
记录一次服务器redis被入侵
运维·服务器·redis
Jtti16 分钟前
Jtti:服务器总是自动重启怎么办?
运维·服务器
我是黄大仙17 分钟前
利用飞书多维表格自动发布版本
运维·服务器·数据库·飞书
7yewh25 分钟前
嵌入式硬件实战提升篇(一)-泰山派RK3566制作多功能小手机
linux·arm开发·驱动开发·嵌入式硬件·物联网·智能手机·硬件架构
YRr YRr1 小时前
ubuntu ros 解决建完图后 保存的地图非常小的问题
linux·运维·ubuntu
汤米粥1 小时前
怎么样绑定域名到AWS(亚马逊云)服务器
服务器·云计算·aws
脸ル粉嘟嘟1 小时前
常用命令之Linux&Oracle&Hive&Python
linux·hive·oracle
Wils0nEdwards1 小时前
Leetcode 整数转罗马数字
linux·python·leetcode