• 师傅教你~LNMP源码搭建


    LNMP源码搭建

    一、安装 Nginx 服务

    见上篇

    二、安装 MySQL 服务

    1、安装Mysql环境依赖包

    yum -y install gcc gcc-c++ ncurses ncurses-devel bison cmake
    
    • 1

    yum -y install
    ncurses \ #字符终端下图形互动功能的动态库
    ncurses-devel \ #ncurses开发包
    bison \ #语法分析器
    cmake #mysql需要用cmake编译安装

    2、创建运行用户

    useradd -M -s /sbin/nologin mysql
    
    • 1

    image-20220720150905043

    3、编译安装

    tar zxvf mysql-5.7.17.tar.gz
    tar zxvf boost_1_59_0.tar.gz -C /usr/local/
    #移动解压的boost并改名
    mv /usr/local/boost_1_59_0 /usr/local/boost
    
    cd /opt/mysql-5.7.17/
    cmake . -DCMAKE_INSTALL_PREFIX=/usr/local/mysql \
    -DMYSQL_UNIX_ADDR=/usr/local/mysql/mysql.sock \
    -DSYSCONFDIR=/etc \
    -DSYSTEMD_PID_DIR=/usr/local/mysql \
    -DDEFAULT_CHARSET=utf8 \
    -DDEFAULT_COLLATION=utf8_general_ci \
    -DWITH_EXTRA_CHARSETS=all \
    -DWITH_INNOBASE_STORAGE_ENGINE=1 \
    -DWITH_ARCHIVE_STORAGE_ENGINE=1 \
    -DWITH_BLACKHOLE_STORAGE_ENGINE=1 \
    -DWITH_PERFSCHEMA_STORAGE_ENGINE=1 \
    -DMYSQL_DATADIR=/usr/local/mysql/data \
    -DWITH_BOOST=/usr/local/boost \
    -DWITH_SYSTEMD=1
    
    make && make install
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22

    image-20220720145143333

    image-20220720145256795

    image-20220720145402273

    image-20220720151557329

    4、修改mysql 配置文件

    vim /etc/my.cnf
    [client]
    port = 3306
    socket=/usr/local/mysql/mysql.sock
    
    [mysqld]
    user = mysql
    basedir=/usr/local/mysql
    datadir=/usr/local/mysql/data
    port = 3306
    character-set-server=utf8
    pid-file = /usr/local/mysql/mysqld.pid
    socket=/usr/local/mysql/mysql.sock
    bind-address = 0.0.0.0
    skip-name-resolve
    max_connections=2048
    default-storage-engine=INNODB
    max_allowed_packet=16M
    server-id = 1
    
    sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES,NO_AUTO_CREATE_USER,NO_AUTO_VALUE_ON_ZERO,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,PIPES_AS_CONCAT,ANSI_QUOTES
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21

    image-20220720152856613

    image-20220720153047598

    5、设置环境变量,申明/宣告mysql命令便于系统识别

    echo "PATH=$PATH:/usr/local/mysql/bin" >> /etc/profile
    source /etc/profile
    
    • 1
    • 2

    6、更改mysql安装目录和配置文件的属主属组

    chown -R mysql:mysql /usr/local/mysql/
    chown mysql:mysql /etc/my.cnf
    
    • 1
    • 2

    7、初始化数据库

    cd /usr/local/mysql/bin/
    ./mysqld \
    --initialize-insecure \
    --user=mysql \
    --basedir=/usr/local/mysql \
    --datadir=/usr/local/mysql/data
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    8、添加mysqld系统服务

    cp /usr/local/mysql/usr/lib/systemd/system/mysqld.service /usr/lib/systemd/system/
    systemctl daemon-reload
    systemctl start mysqld.service
    systemctl enable mysqld
    
    • 1
    • 2
    • 3
    • 4

    9、修改mysql 的登录密码

    mysqladmin -u root -p password "123456" ##直接回车
    
    • 1

    10、授权远程登录

    mysql -u root -p  #进去数据库
    
    • 1

    image-20220720160647604

    三、安装配置 PHP 解析环境

    1、安装工具包

    yum -y install \
    gd \
    libjpeg libjpeg-devel \
    libpng libpng-devel \
    freetype freetype-devel \
    libxml2 libxml2-devel \
    zlib zlib-devel \
    curl curl-devel \
    openssl openssl-devel
    安装GD库和GD库关联程序,用来处理和生成图片
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10

    2、编译安装、安装工具包

    cd /opt
    tar zxf php-7.1.10.tar.gz
    
    • 1
    • 2

    image-20220720170012618

    cd /opt/php-7.1.10/
    ./configure \
    --prefix=/usr/local/php \
    --with-mysql-sock=/usr/local/mysql/mysql.sock \
    --with-mysqli \
    --with-zlib \
    --with-curl \
    --with-gd \
    --with-jpeg-dir \
    --with-png-dir \
    --with-freetype-dir \
    --with-openssl \
    --enable-fpm \
    --enable-mbstring \
    --enable-xml \
    --enable-session \
    --enable-ftp \
    --enable-pdo \
    --enable-tokenizer \
    --enable-zip
    
    make -j 4 && make install
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22

    3、路径优化

    ln -s /usr/local/php/bin/* /usr/local/bin/
    ln -s /usr/local/php/sbin/* /usr/local/sbin/
    
    • 1
    • 2

    image-20220720162419276

    4、调整PHP配置文件
    php有三个配置文件:
    php.ini 主配置文件
    php-fpm.conf 进程服务配置文件
    www.conf 扩展配置文件

    #调整主配置文件:

    cp /opt/php-7.1.10/php.ini-development /usr/local/php/lib/php.ini	
    vim /usr/local/php/lib/php.ini
    --1170行--修改
    mysqli.default_socket = /usr/local/mysql/mysql.sock
    --939行--取消注释,修改
    date.timezone = Asia/Shanghai
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    image-20220720163228380
    image-20220720163256217

    #调整进程服务配置文件:

    cd /usr/local/php/etc/
    cp  php-fpm.conf.default php-fpm.conf
    vim php-fpm.conf
    --17行--去掉";"注释
    pid = run/php-fpm.pid
    
    • 1
    • 2
    • 3
    • 4
    • 5

    image-20220720173738922

    image-20220720173809335

    #调整扩展配置文件:

    cd /usr/local/php/etc/php-fpm.d/
    cp www.conf.default www.conf
    
    • 1
    • 2

    5、启动php-fpm
    /usr/local/php/sbin/php-fpm -c /usr/local/php/lib/php.ini 或者直接加在系统启动里

    #PHP-FPM(FastCGI Process Manager:FastCGI 进程管理器)是一个 PHPFastCGI 管理器, 由于Nginx服务器不能处理动态页面,需要由 Nginx 把动态请求交给 php-fpm 进程进行解析。

    #将服务加入系统服务

    cd /opt/php-7.1.10/sapi/fpm
    cp php-fpm.service /usr/lib/systemd/system/php-fpm.service
    systemctl restart php-fpm.service
    
    • 1
    • 2
    • 3

    image-20220720180200295

    netstat -anpt | grep 9000
    #查看端口
    
    • 1
    • 2

    image-20220720180302865

    6、配置 Nginx 支持 PHP 解析

    vim /usr/local/nginx/conf/nginx.conf
    
    • 1

    –65行–取消注释,修改
    location ~ .php$ {
    root html;
    fastcgi_pass 127.0.0.1:9000;
    fastcgi_index index.php;
    fastcgi_param SCRIPT_FILENAME /usr/local/nginx/html$fastcgi_script_name; #将 /scripts 修改为nginx的工作目录

    #fastcgi_param SCRIPT_FILENAME d o c u m e n t r o o t document_root documentrootfastcgi_script_name; #$document_root 代表当前请求在root指令中指定的值
    include fastcgi_params;
    }

    systemctl restart nginx.service
    
    • 1

    image-20220720190109304

    7、验证PHP 测试页
    vim /usr/local/nginx/html/index.php

    浏览器访问
    http://20.0.0.18/index.php

    image-20220720194209606

    8、验证数据库工作是否正常

    mysql -u root -p
    CREATE DATABASE bbs;
    GRANT all ON bbs.* TO ‘bbsuser’@‘%’ IDENTIFIED BY ‘admin123’;
    GRANT all ON bbs.* TO ‘bbsuser’@‘localhost’ IDENTIFIED BY ‘admin123’;
    flush privileges;

    image-20220720194546659

    四、部署 Discuz!社区论坛 Web 应用

    cd /opt
    unzip Discuz_X3.4_SC_UTF8.zip  -d /opt/dis
    cd /opt/dis/dir_SC_UTF8/
    cp -r upload/ /usr/local/nginx/html/bbs/
    
    • 1
    • 2
    • 3
    • 4

    image-20220720194915126

    调整论坛目录的权限:

    cd /usr/local/nginx/html/bbs/
    
    chmod -R 777 ./config/
    chmod -R 777 ./data/
    chmod -R 777 ./uc_client/
    chmod -R 777 ./uc_server/
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    论坛页面访问

    http://20.0.0.18/bbs/install/index.php

    image-20220720195050523

    数据库服务器:localhost ###本地架设就用localhost,如何不是在在本机上就要填写IP地址和端口号
    数据库名字:bbs
    数据库用户名:bbsuser
    数据库密码:admin123
    管理员账号:admin
    管理员密码:admin123

    image-20220720200956698

    image-20220720202746464

    访问论坛页面:
    http://20.0.0.18/bbs/index.php

    管理中心页面

    http://20.0.0.18/bbs/admin.php

    四、fpm参数优化

    vim /usr/local/php/etc/php-fpm.conf
    pid = run/php-fpm.pid

    image-20220720203026841

    vim /usr/local/php/etc/php-fpm.d/www.conf
    –96行–
    pm = dynamic #fpm进程启动方式,动态的
    –107行–
    pm.max_children=20 #fpm进程启动的最大进程数
    –112行–
    pm.start_servers = 5 #动态方式下启动时默认开启的进程数,在最小和最大之间
    –117行–
    pm.min_spare_servers = 2 #动态方式下最小空闲进程数
    –122行–
    pm.max_spare_servers = 8 #动态方式下最大空闲进程数

    kill -USR2 cat /usr/local/php/var/run/php-fpm.pid #重启php-fpm
    netstat -anpt | grep 9000
    ps -elf | grep php-fpm

    m.d/www.conf

    –96行–
    pm = dynamic #fpm进程启动方式,动态的
    –107行–
    pm.max_children=20 #fpm进程启动的最大进程数
    –112行–
    pm.start_servers = 5 #动态方式下启动时默认开启的进程数,在最小和最大之间
    –117行–
    pm.min_spare_servers = 2 #动态方式下最小空闲进程数
    –122行–
    pm.max_spare_servers = 8 #动态方式下最大空闲进程数

    kill -USR2 cat /usr/local/php/var/run/php-fpm.pid #重启php-fpm
    netstat -anpt | grep 9000
    ps -elf | grep php-fpm

  • 相关阅读:
    【C语言】浅谈代码运行效率及内存优化
    Android - 编译 openssl 踩坑之路
    【数据结构】二叉搜索树
    C语言的由来与发展历程
    如何提高表达能力?这五个方法要掌握
    CentOS 7搭建LittlePaimon原神机器人
    Nginx 重新编译添加新的模块
    22/6/27
    主板与品牌电脑启动快捷键
    CDN技术介绍
  • 原文地址:https://blog.csdn.net/weixin_68579466/article/details/125917216