文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

怎么用shell脚本一键部署LNMP架构

2023-06-09 11:43

关注

本篇内容介绍了“怎么用shell脚本一键部署LNMP架构”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!

LNMP架构介绍

LNMP:Linux系统下Nginx+MySQL+PHP这种网站服务器架构。Nginx是一个高性能的HTTP和反向代理服务器,也是一个IMAP/POP3/SMTP代理服务器。Mysql是一个小型关系型数据库管理系统。PHP是一种在服务器端执行的嵌入HTML文档的脚本语言。

原理:浏览器发送http request请求到服务器(Nginx),服务器响应并处理web请求,将一些静态资源(CSS,图片,视频等)保存服务器上,然后将php脚本通过接口传输协议(网关协议)PHP-FCGI(fast-cgi)传输给PHP-FPM(进程管理程序),PHP-FPM不做处理,然后PHP-FPM调用PHP解析器进程,PHP解析器解析php脚本信息。PHP解析器进程可以启动多个,进行并发执行。然后将解析后的脚本返回到PHP-FPM,PHP-FPM再通过fast-cgi的形式将脚本信息传送给Nginx.服务器再通过Http response的形式传送给浏览器。浏览器再进行解析与渲染然后进行呈现。

下面给大家介绍下使用shell脚本一键部署LNMP架构的方法,脚本如下所示:

#/bin/bash##将需要的安装包传到/opt目录下,并关闭防火墙systemctl stop firewalldsystemctl disable firewalld &>/dev/nullsetenforce 0###############Nginx#################先挂载,再安装依赖包df -h | grep /mntif [ $? -ne 0 ];thenmount /dev/cdrom /mnt &>/dev/nullfiyum -y install pcre-devel zlib-devel gcc gcc-c++ make##创建运行用户、组(Nginx服务程序默认以nobody身份运行,建议为其创建专门的用户账号,以便更准确的控制其访问权限)useradd -M -s /sbin/nologin nginx##编译安装cd /opttar zxvf nginx-1.12.0.tar.gzcd nginx-1.12.0/./configure \--prefix=/usr/local/nginx \--user=nginx \--group=nginx \--with-http_stub_status_modulemake -j 2 && make install##优化配置文件路径,并把nginx服务的可执行程序文件放入路径环境变量的目录中便于系统识别ln -s /usr/local/nginx/sbin/* /usr/local/sbin##添加Nginx系统服务cat > /lib/systemd/system/nginx.service <<EOF[Unit]Description=nginxAfter=network.target[Service]Type=forkingPIDFile=/usr/local/nginx/logs/nginx.pidExecStart=/usr/local/nginx/sbin/nginxExecReload=/bin/kill -1 $MAINPIDExecStop=/bin/kill -3 $MAINPIDPrivateTmp=true[Install]WantedBy=multi-user.targetEOF##修改文件权限chmod 754 /lib/systemd/system/nginx.servicesystemctl start nginx.servicesystemctl enable nginx.service &>/dev/null###############MySQL#################安装MySQL环境依赖包yum -y install ncurses ncurses-devel bison cmake##创建运行用户useradd -M -s /sbin/nologin mysql##编译安装cd /opttar zxvf mysql-boost-5.7.20.tar.gzcd /opt/mysql-5.7.20cmake \-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=boost \-DWITH_SYSTEMD=1make -j 2 && make install##修改mysql配置文件cat > /etc/my.cnf <<EOF[client]port = 3306socket=/usr/local/mysql/mysql.sock[mysqld]user = mysqlbasedir=/usr/local/mysqldatadir=/usr/local/mysql/dataport = 3306character-set-server=utf8pid-file = /usr/local/mysql/mysqld.pidsocket=/usr/local/mysql/mysql.sockbind-address = 0.0.0.0skip-name-resolvemax_connections=2048default-storage-engine=INNODBmax_allowed_packet=16Mserver-id = 1sql_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_QUOTESEOF##更改mysql安装目录和配置文件的属主属组chown -R mysql:mysql /usr/local/mysql/chown mysql:mysql /etc/my.cnf##设置路径环境变量echo 'export PATH=/usr/local/mysql/bin:/usr/local/mysql/lib:$PATH' >> /etc/profilesource /etc/profile##初始化数据化cd /usr/local/mysql/bin/./mysqld \--initialize-insecure \--user=mysql \--basedir=/usr/local/mysql \--datadir=/usr/local/mysql/data##添加mysqld系统服务cp /usr/local/mysql/usr/lib/systemd/system/mysqld.service /usr/lib/systemd/system/systemctl daemon-reloadsystemctl start mysqld.servicesystemctl enable mysqld &>/dev/null##添加mysql的登录密码function mima {passwd=$1/usr/bin/expect <<-EOFspawn mysqladmin -u root -p password $passwdexpect "Enter" {send "\n"}expect eofEOF}mima "abc123"##授权远程登录function qwe {/usr/bin/expect <<-EOFspawn mysql -u root -pexpect "Enter" {send "abc123\n"}expect "mysql" {send "grant all privileges on *.* to 'root'@'%' identified by 'abc123';\n"}expect "mysql" {send "flush privileges;\n"}expect "mysql" {send "show databases;\n"}expect "mysql" {send "quit\n"}expect eofEOF}qwe###############PHP#################安装环境依赖包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##编译安装cd /opttar jxvf php-7.1.10.tar.bz2cd ./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-zipmake -j 2 && make install##路径优化ln -s /usr/local/php/bin/* /usr/local/bin/ln -s /usr/local/php/sbin/* /usr/local/sbin/##调整PHP配置文件##PHP有三个配置文件##php.ini(主配置文件)cp /opt/php-7.1.10/php.ini-development /usr/local/php/lib/php.inised -i '1170c mysqli.default_socket = /usr/local/mysql/mysql.sock' /usr/local/php/lib/php.inised -i '939c date.timezone = Asia/Shanghai' /usr/local/php/lib/php.iniphp -m##php-fpm.conf(进程服务配置文件)cd /usr/local/php/etccp php-fpm.conf.default php-fpm.confsed -i '17c pid = run/php-fpm.pid' /usr/local/php/etc/php-fpm.conf##www.conf(扩展配置文件)cd /usr/local/php/etc/php-fpm.dcp www.conf.default www.conf##启动php-fpmcd /usr/local/php/sbin/php-fpm -c /usr/local/php/lib/php.ini##配置Nginx支持PHP解析sed -i '65c location ~ \.php$ {' /usr/local/nginx/conf/nginx.confsed -i '66c root html;' /usr/local/nginx/conf/nginx.confsed -i '67c fastcgi_pass 127.0.0.1:9000;' /usr/local/nginx/conf/nginx.confsed -i '68c fastcgi_index index.php;' /usr/local/nginx/conf/nginx.confsed -i '69c fastcgi_param SCRIPT_FILENAME /usr/local/nginx/html$fastcgi_script_name;' /usr/local/nginx/conf/nginx.confsed -i '70c include fastcgi_params;' /usr/local/nginx/conf/nginx.confsed -i '71c }' /usr/local/nginx/conf/nginx.conf##验证PHP测试页和验证数据库工作是否正常cat > /usr/local/nginx/html/index.php <<EOF<?phpphpinfo();?>EOF

“怎么用shell脚本一键部署LNMP架构”的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识可以关注编程网网站,小编将为大家输出更多高质量的实用文章!

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯