使用shell脚本一键部署LNMP架构的方法
(编辑:jimmy 日期: 2024/11/16 浏览:3 次 )
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 firewalld systemctl disable firewalld &>/dev/null setenforce 0 ###############Nginx############### ##先挂载,再安装依赖包 df -h | grep /mnt if [ $"Enter" {send "\n"} expect eof EOF } mima "abc123" ##授权远程登录 function qwe { /usr/bin/expect <<-EOF spawn mysql -u root -p expect "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 eof EOF } 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 /opt tar jxvf php-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 -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.ini sed -i '1170c mysqli.default_socket = /usr/local/mysql/mysql.sock' /usr/local/php/lib/php.ini sed -i '939c date.timezone = Asia/Shanghai' /usr/local/php/lib/php.ini php -m ##php-fpm.conf(进程服务配置文件) cd /usr/local/php/etc cp php-fpm.conf.default php-fpm.conf sed -i '17c pid = run/php-fpm.pid' /usr/local/php/etc/php-fpm.conf ##www.conf(扩展配置文件) cd /usr/local/php/etc/php-fpm.d cp www.conf.default www.conf ##启动php-fpm cd /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.conf sed -i '66c root html;' /usr/local/nginx/conf/nginx.conf sed -i '67c fastcgi_pass 127.0.0.1:9000;' /usr/local/nginx/conf/nginx.conf sed -i '68c fastcgi_index index.php;' /usr/local/nginx/conf/nginx.conf sed -i '69c fastcgi_param SCRIPT_FILENAME /usr/local/nginx/html$fastcgi_script_name;' /usr/local/nginx/conf/nginx.conf sed -i '70c include fastcgi_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 <?php phpinfo(); ?> EOF
下一篇:如何写出安全的、基本功能完善的Bash脚本