• LNMP架构


    目录

    一、LNMP架构介绍

    二、准备工作

    1、将安装包传到/opt/目录下

    2、搭建本地yum仓库

    三、编译安装nginx服务

    四、编译安装mysql服务

    五、编译安装 PHP 解析环境

    六、 部署Discuz社区论坛

    七、装完后使用浏览器访问


    一、LNMP架构介绍

           LNMP代表的就是:Linux系统下Nginx+MySQL+PHP这种网站服务器架构。Nginx中的PHP是以fastcgi的方式结合Nginx的,可以理解为Nginx代理了PHP的fastcgi。和LAMP不同的是,提供web服务的是Nginx并且php是作为一个独立服务存在的,这个服务叫做php-fpm,Nginx直接处理静态请求,动态请求会转发给php-fpm。

    二、准备工作

    1、将安装包传到/opt/目录下

    nignx安装包:nginx-1.12.2.tar.gz

    mysql安装包:mysql-boost-5.7.20.tar.gz

    php安装包:php-7.1.10.tar.bz2

    Discuz论坛安装包:Discuz_X3.4_SC_UTF8.zip

    2、搭建本地yum仓库

    1. mount /dev/sr0 /mnt/
    2.  
    3. cd /etc/yum.repos.d/
    4. mkdir bak
    5. mv *.repo bak
    6. vim local.repo
    7. [local]
    8. name=local
    9. baseurl=file:///mnt
    10. gpgcheck=0
    11.  
    12. yum clean all && yum makecache

    三、编译安装nginx服务

    编译安装过程前一篇博客已详细写过,这里写一个一键安装nginx服务的脚本

    vim nginx.sh

    1. #!/bin/bash
    2. echo "请先将软件包上传到opt目录下(nginx-1.12.2.tar.gz)"
    3. read -p "请问安装包是否都上传到opt目录下(yes/no)" A
    4. if [ $A == yes ]
    5. then
    6. echo "开始部署"
    7. else
    8. echo "请将软件包先上传到opt目录下"
    9. exit
    10. fi
    11. ####防火墙核心防护关闭
    12. systemctl stop firewalld
    13. setenforce 0
    14. ####安装依赖环境
    15. yum -y install openssl openssl-devel gcc gcc-c++ pcre-devel zlib-devel make &> /dev/null
    16. if [ $? -eq 0 ]
    17. then
    18. echo "依赖环境安装完成"
    19. else
    20. echo "请检查网络环境"
    21. exit 0
    22. fi
    23. echo "创建运行用户、组"
    24. useradd -M -s /sbin/nologin nginx
    25. echo "编译安装Nginx"
    26. cd /opt
    27. tar zxvf nginx-1.12.2.tar.gz -C /opt/ &> /dev/null
    28. echo "解压完成"
    29. cd nginx-1.12.2/
    30. echo "wait..."
    31. ./configure \
    32. --prefix=/usr/local/nginx \
    33. --user=nginx \
    34. --group=nginx \
    35. --with-http_stub_status_module &> /dev/null
    36. echo "编译安装时间较长,请等待。。。"
    37. make -j2 && make install &> /dev/null
    38. echo "Nginx安装完成"
    39. echo "路径优化"
    40. ln -s /usr/local/nginx/sbin/nginx /usr/local/sbin/
    41. echo "检查配置文件"
    42. nginx -t
    43. echo "启动Nginx"
    44. nginx
    45. echo "查看版本"
    46. nginx -V
    47. echo "升级Nginx"
    48. echo "请稍等"
    49. cd /opt
    50. tar -zxvf nginx-1.22.1.tar.gz
    51. cd nginx-1.22.1/
    52. ./configure \
    53. --prefix=/usr/local/nginx \
    54. --user=nginx \
    55. --group=nginx \
    56. --with-http_stub_status_module \
    57. --with-http_ssl_module &> /dev/null
    58. make -j2
    59. mv /usr/local/nginx/sbin/nginx /usr/local/nginx/sbin/nginx_old
    60. cp -p /opt/nginx-1.22.1/objs/* /usr/local/nginx/sbin/
    61. echo "重启服务"
    62. systemctl restart nginx
    63. echo "查看版本"
    64. nginx -V

    四、编译安装mysql服务

    编译安装过程之前博客已详细写过,这里写一个一键安装mysql服务的脚本

    vim mysql.sh

    1. #!/bin/bash
    2. echo "安装MySQL服务"
    3. echo "wait..."
    4. yum -y install \
    5. ncurses \
    6. ncurses-devel \
    7. bison \
    8. cmake &> /dev/null
    9. #创建运行用户
    10. useradd -s /sbin/nologin mysql
    11. #编译安装
    12. cd /opt
    13. tar xzvf mysql-boost-5.7.20.tar.gz &> /dev/null
    14. cd /opt/mysql-5.7.20/
    15. echo "wait..."
    16. cmake \
    17. -DCMAKE_INSTALL_PREFIX=/usr/local/mysql \
    18. -DMYSQL_UNIX_ADDR=/usr/local/mysql/mysql.sock \
    19. -DSYSCONFDIR=/etc \
    20. -DSYSTEMD_PID_DIR=/usr/local/mysql \
    21. -DDEFAULT_CHARSET=utf8 \
    22. -DDEFAULT_COLLATION=utf8_general_ci \
    23. -DWITH_INNOBASE_STORAGE_ENGINE=1 \
    24. -DWITH_ARCHIVE_STORAGE_ENGINE=1 \
    25. -DWITH_BLACKHOLE_STORAGE_ENGINE=1 \
    26. -DWITH_PERFSCHEMA_STORAGE_ENGINE=1 \
    27. -DMYSQL_DATADIR=/usr/local/mysql/data \
    28. -DWITH_BOOST=boost \
    29. -DWITH_SYSTEMD=1 &> /dev/null
    30. echo "wait..."
    31. make -j2 && make install &> /dev/null
    32. #数据库目录进行权限调整
    33. chown -R mysql:mysql /usr/local/mysql/
    34. #调整配置文件
    35. echo '[client]
    36. port = 3306
    37. default-character-set=utf8
    38. socket = /usr/local/mysql/mysql.sock
    39. [mysql]
    40. port = 3306
    41. default-character-set=utf8
    42. socket = /usr/local/mysql/mysql.sock
    43. [mysqld]
    44. user = mysql
    45. basedir = /usr/local/mysql
    46. datadir = /usr/local/mysql/data
    47. port = 3306
    48. character_set_server=utf8
    49. pid-file = /usr/local/mysql/mysqld.pid
    50. socket = /usr/local/mysql/mysql.sock
    51. server-id = 1
    52. 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
    53. ' > /etc/my.cnf
    54. chown mysql:mysql /etc/my.cnf
    55. #设置环境变量
    56. echo "PATH=$PATH:/usr/local/mysql/bin" >> /etc/profile
    57. source /etc/profile
    58. #初始化数据库
    59. cd /usr/local/mysql/
    60. echo "wait..."
    61. bin/mysqld \
    62. --initialize-insecure \
    63. --user=mysql \
    64. --basedir=/usr/local/mysql \
    65. --datadir=/usr/local/mysql/data &> /dev/null
    66. cp usr/lib/systemd/system/mysqld.service /usr/lib/systemd/system/
    67. #数据库开启
    68. systemctl start mysqld
    69. systemctl enable mysqld
    70. netstat -anpt | grep 3306
    71. yum -y install expect &> /dev/null
    72. source /etc/profile
    73. #设置Mysql密码
    74. /usr/bin/expect <<-EOF
    75. spawn mysqladmin -u root -p password
    76. expect {
    77. "Enter password"
    78. {send "\r";exp_continue}
    79. "New password"
    80. {send "abc123\r";exp_continue}
    81. "Confirm new password"
    82. {send "abc123\r"}
    83. }
    84. expect eof
    85. EOF

    五、编译安装 PHP 解析环境

    编译安装过程之前博客已详细写过,这里写一个一键安装PHP解析的脚本

    vim php.sh

    1. #!/bin/bash
    2. yum -y install \
    3. gd \
    4. libjpeg libjpeg-devel \
    5. libpng libpng-devel \
    6. freetype freetype-devel \
    7. libxml2 libxml2-devel \
    8. zlib zlib-devel \
    9. curl curl-devel \
    10. openssl openssl-devel
    11. cd /opt
    12. tar jxvf php-7.1.10.tar.bz2
    13. cd /opt/php-7.1.10/
    14. ./configure \
    15. --prefix=/usr/local/php7 \
    16. --with-apxs2=/usr/local/httpd/bin/apxs \
    17. --with-mysql-sock=/usr/local/mysql/mysql.sock \
    18. --with-config-file-path=/usr/local/php7 \
    19. --with-mysqli \
    20. --with-zlib \
    21. --with-curl \
    22. --with-gd \
    23. --with-jpeg-dir \
    24. --with-png-dir \
    25. --with-freetype-dir \
    26. --with-openssl \
    27. --enable-mbstring \
    28. --enable-xml \
    29. --enable-session \
    30. --enable-ftp \
    31. --enable-pdo \
    32. --enable-tokenizer \
    33. --enable-zip
    34. make -j 4 && make install
    35. cp /opt/php-7.1.10/php.ini-development /usr/local/php7/php.ini
    36. #在测试环境时使用php.ini-development文件,而在生产环境时使用php.ini-production文件
    37. sed -i.bak -e "1170 s|.*|mysqli.default_socket = /usr/local/mysql/mysql.sock|" -e "939 s|.*|date.timezone = Asia/Shanghai|" /usr/local/php7/php.ini
    38. ln -s /usr/local/php7/bin/* /usr/local/bin/
    39. sed -i.bak -e "255 s/.*/DirectoryIndex index.html index.php/" -e "393c AddType application/x-httpd-php .php\nAddType application/x-httpd-php-source .phps" /etc/httpd.conf
    40. rm -rf /usr/local/httpd/htdocs/index.html
    41. echo "
    42. phpinfo();
    43. ?>" > /usr/local/httpd/htdocs/index.php
    44. systemctl restart httpd.service
    45. /usr/bin/expect <<EOF
    46. spawn mysql -u root -p
    47. expect "Enter password" {send "abc123\r"}
    48. expect "mysql" {send "CREATE DATABASE bbs;\r"}
    49. expect "mysql" {send "GRANT all ON bbs.* TO 'bbsuser'@'%' IDENTIFIED BY 'admin123';\r"}
    50. expect "mysql" {send "flush privileges;\r"}
    51. expect "mysql" {send "quit\r"}
    52. expect eof
    53. EOF
    54. unzip /opt/Discuz_X3.4_SC_UTF8.zip -d /opt/dis
    55. cd /opt/dis/dir_SC_UTF8/
    56. cp -r upload/ /usr/local/httpd/htdocs/bbs
    57. cd /usr/local/httpd/htdocs/bbs
    58. chown -R daemon ./config
    59. chown -R daemon ./data
    60. chown -R daemon ./uc_client
    61. chown -R daemon ./uc_server/data

    六、 部署Discuz社区论坛

    写一个一键部署Discuz社区论坛的脚本:

    vim discuz.sh

    1. #!/bin/bash
    2. cd /opt
    3. unzip Discuz_X3.4_SC_UTF8.zip -d /tmp
    4. cd /tmp/dir_SC_UTF8/
    5. cp -r upload/ /usr/local/nginx/html/bbs/
    6. cd /usr/local/nginx/html/bbs/
    7. chown -R root:nginx ./config/
    8. chown -R root:nginx ./data/
    9. chown -R root:nginx ./uc_client/
    10. chown -R root:nginx ./uc_server/
    11. chmod -R 777 ./config/
    12. chmod -R 777 ./data/
    13. chmod -R 777 ./uc_client/
    14. chmod -R 777 ./uc_server/

    七、装完后使用浏览器访问

    测试访问:192.168.80.3/index.php

  • 相关阅读:
    致远OA ajax.do 任意文件上传 (CNVD-2021-01627) 漏洞复现
    人员定位在安全生产管理中的应用
    fatedier/frp内网穿透详细安装及使用教程
    智能合约安全,著名的区块链漏洞:双花攻击
    python 脏话处理、特殊词汇过滤!
    M. 810975(容斥原理)
    Vue路由守卫有哪些,怎么设置,有哪些使用场景?
    Azure Function 时区设置
    scrapy爬虫实践(部分源代码)
    Linux 文本替换 字符串替换 221012笔记
  • 原文地址:https://blog.csdn.net/TTSuzuka/article/details/127791958