使用shell脚本一键部署LNMP架构的方法
LNMP架构介绍
LNMP:Linux系统下Nginx+MySQL+PHP这种网站服务器架构。Nginx是一个高性能的HTTP和反向代理服务器,也是一个IMAP/POP3/SMTP代理服务器。Mysql是一个小型关系型数据库管理系统。PHP是一种在服务器端执行的嵌入HTML文档的脚本语言。
原理:浏览器发送httprequest请求到服务器(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.服务器再通过Httpresponse的形式传送给浏览器。浏览器再进行解析与渲染然后进行呈现。
下面给大家介绍下使用shell脚本一键部署LNMP架构的方法,脚本如下所示:
#/bin/bash ##将需要的安装包传到/opt目录下,并关闭防火墙 systemctlstopfirewalld systemctldisablefirewalld&>/dev/null setenforce0 ###############Nginx############### ##先挂载,再安装依赖包 df-h|grep/mnt if[$?-ne0];then mount/dev/cdrom/mnt&>/dev/null fi yum-yinstallpcre-develzlib-develgccgcc-c++make ##创建运行用户、组(Nginx服务程序默认以nobody身份运行,建议为其创建专门的用户账号,以便更准确的控制其访问权限) useradd-M-s/sbin/nologinnginx ##编译安装 cd/opt tarzxvfnginx-1.12.0.tar.gz cdnginx-1.12.0/ ./configure\ --prefix=/usr/local/nginx\ --user=nginx\ --group=nginx\ --with-http_stub_status_module make-j2&&makeinstall ##优化配置文件路径,并把nginx服务的可执行程序文件放入路径环境变量的目录中便于系统识别 ln-s/usr/local/nginx/sbin/*/usr/local/sbin ##添加Nginx系统服务 cat>/lib/systemd/system/nginx.service</dev/null ###############MySQL############### ##安装MySQL环境依赖包 yum-yinstallncursesncurses-develbisoncmake ##创建运行用户 useradd-M-s/sbin/nologinmysql ##编译安装 cd/opt tarzxvfmysql-boost-5.7.20.tar.gz cd/opt/mysql-5.7.20 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=boost\ -DWITH_SYSTEMD=1 make-j2&&makeinstall ##修改mysql配置文件 cat>/etc/my.cnf< >/etc/profile source/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/ systemctldaemon-reload systemctlstartmysqld.service systemctlenablemysqld&>/dev/null ##添加mysql的登录密码 functionmima{ passwd=$1 /usr/bin/expect<<-EOF spawnmysqladmin-uroot-ppassword$passwd expect"Enter"{send"\n"} expecteof EOF } mima"abc123" ##授权远程登录 functionqwe{ /usr/bin/expect<<-EOF spawnmysql-uroot-p expect"Enter"{send"abc123\n"} expect"mysql"{send"grantallprivilegeson*.*to'root'@'%'identifiedby'abc123';\n"} expect"mysql"{send"flushprivileges;\n"} expect"mysql"{send"showdatabases;\n"} expect"mysql"{send"quit\n"} expecteof EOF } qwe ###############PHP############### ##安装环境依赖包 yum-yinstallgd\ libjpeglibjpeg-devel\ libpnglibpng-devel\ freetypefreetype-devel\ libxml2libxml2-devel\ zlibzlib-devel\ curlcurl-devel\ opensslopenssl-devel ##编译安装 cd/opt tarjxvfphp-7.1.10.tar.bz2 cd./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-j2&&makeinstall ##路径优化 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.ini sed-i'1170cmysqli.default_socket=/usr/local/mysql/mysql.sock'/usr/local/php/lib/php.ini sed-i'939cdate.timezone=Asia/Shanghai'/usr/local/php/lib/php.ini php-m ##php-fpm.conf(进程服务配置文件) cd/usr/local/php/etc cpphp-fpm.conf.defaultphp-fpm.conf sed-i'17cpid=run/php-fpm.pid'/usr/local/php/etc/php-fpm.conf ##www.conf(扩展配置文件) cd/usr/local/php/etc/php-fpm.d cpwww.conf.defaultwww.conf ##启动php-fpm cd/usr/local/php/sbin/ php-fpm-c/usr/local/php/lib/php.ini ##配置Nginx支持PHP解析 sed-i'65clocation~\.php${'/usr/local/nginx/conf/nginx.conf sed-i'66croothtml;'/usr/local/nginx/conf/nginx.conf sed-i'67cfastcgi_pass127.0.0.1:9000;'/usr/local/nginx/conf/nginx.conf sed-i'68cfastcgi_indexindex.php;'/usr/local/nginx/conf/nginx.conf sed-i'69cfastcgi_paramSCRIPT_FILENAME/usr/local/nginx/html$fastcgi_script_name;'/usr/local/nginx/conf/nginx.conf sed-i'70cincludefastcgi_params;'/usr/local/nginx/conf/nginx.conf sed-i'71c}'/usr/local/nginx/conf/nginx.conf ##验证PHP测试页和验证数据库工作是否正常 cat>/usr/local/nginx/html/index.php< EOF
到此这篇关于使用shell脚本一键部署LNMP架构的方法的文章就介绍到这了,更多相关shell脚本部署LNMP架构内容请搜索毛票票以前的文章或继续浏览下面的相关文章希望大家以后多多支持毛票票!