centos7 LNMP环境一键部署脚本

之前的文章中有centos7环境下LNMP环境的详细部署情况,但是最近觉得每次都这样配置一遍很浪费时间,所以花时间整理成了一个脚本用来一键部署,再也不用一个个配置了。

脚本文件及注释

#!/bin/sh
#nginx安装
yum install -y nginx
systemctl enable nginx
##添加配置文件目录
sed -i "58i include vhost/*.conf;" /etc/nginx/nginx.conf
mkdir /etc/nginx/vhost
## 添加php配置
sed -i '57i # 这里新加的\n# PHP 脚本请求全部转发到 FastCGI处理. 使用FastCGI协议默认配置.\n# Fastcgi服务器和程序(PHP,Python)沟通的协议.\nlocation ~ \.php$ {\n# 设置监听端口\r\nfastcgi_pass   127.0.0.1:9000;\n# 设置nginx的默认首页文件(上面已经设置过了,可以删除)\nfastcgi_index  index.php;\n# 设置脚本文件请求的路径\nfastcgi_param  SCRIPT_FILENAME $document_root$fastcgi_script_name;\n# 引入fastcgi的配置文件\ninclude        fastcgi_params;\n}\n' /etc/nginx/nginx.conf
## 添加php文件配置
systemctl restart nginx
## php安装
rpm -Uvh https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm
rpm -Uvh https://mirror.webtatic.com/yum/el7/webtatic-release.rpm

yum install -y php70w
yum install -y  php70w-mysql.x86_64   php70w-gd.x86_64   php70w-ldap.x86_64   php70w-mbstring.x86_64  php70w-mcrypt.x86_64
yum install -y php70w-fpm
systemctl start php-fpm
systemctl enable php-fpm
## mysql安装
wget https://dev.mysql.com/get/Downloads/MySQL-5.6/mysql-5.6.37-linux-glibc2.12-x86_64.tar.gz
tar -xvf mysql-5.6.37-linux-glibc2.12-x86_64.tar.gz
rm -f *.gz
mv mysql-5.6.37-linux-glibc2.12-x86_64 /usr/local/mysql 
cp /usr/local/mysql/support-files/my-default.cnf /etc/my.cnf -y
## 安装mysql依赖
yum -y install autoconf 
yum install -y libaio
## 安装mysql
/usr/local/mysql/scripts/mysql_install_db --user=root --basedir=/usr/local/mysql/ --datadir=/usr/local/mysql/data/ 
#清空配置文件
cat /dev/null >/etc/my.cnf
#填写配置
echo -e "[client]\nsocket=/tmp/mysql.sock\n[mysql]\n# 设置mysql客户端默认字符集\ndefault-character-set=utf8\n[mysqld]\nskip-name-resolve\nuser = root\n#设置3306端口\nport = 3306\nsocket=/tmp/mysql.sock\n# 设置mysql的安装目录\nbasedir=/usr/local/mysql\n# 设置mysql数据库的数据的存放目录\ndatadir=/usr/local/mysql/data\n# 允许最大连接数\nmax_connections=200\n# 服务端使用的字符集默认 为8比特编码的latin1字符集\ncharacter-set-server=utf8\n# 创建新表时将使用的默认存储引擎\ndefault-storage-engine=INNODB\nlower_case_table_name=1\nmax_allowed_packet=16M\nlog-error = /usr/local/mysql/data/error.log\npid-file = /usr/local/mysql/data/mysql.pid\n " >> /etc/my.cnf
chown -R 777 /etc/my.cnf 
#复制服务脚本,进系统环境
cp /usr/local/mysql/support-files/mysql.server /etc/rc.d/init.d/mysqld
#赋予服务控制执行脚本的权利
chmod +x /etc/rc.d/init.d/mysqld
#配置环境变量
echo "export PATH=$PATH:/usr/local/mysql/bin" >>  ~/.bash_profile
#使环境变量生效
source  ~/.bash_profile
#添加服务进系统服务
chkconfig --add mysqld  
systemctl start mysqld
#backspace正常使用
echo "stty erase ^H" >>  ~/.bash_profile
source  ~/.bash_profile
#安装lrzsz实现上传下载
yum install -y man man-pages man-pages-overrides
yum install -y lrzsz
#网络工具安装
yum install -y net-tools
# 安装vim
yum -y install vim
#关闭防火墙和开机自启
systemctl stop firewalld.service
systemctl disable firewalld.service
#重启服务器
#reboot

nginx配置文件路径

/etc/nginx/nginx.conf

nginx虚拟主机配置文件夹,将每个配置文件都放在vhost下

/etc/nginx/vhost

网站默认部署位置

 /usr/share/nginx/html

php配置文件路径

/etc/php.ini

php安装路径

/etc/php.d

mysql安装目录

/usr/local/mysql

mysql配置文件路径

/etc/my.cnf

mysql数据存贮位置

/usr/local/mysql/data

mysql密码权限配置

mysql
>set password = password('520140');
>exit;

开启root访问权限示
输入密码回车即可
mysql -u root -p 输入密码即可登陆

>grant all privileges on *.* to 'root'@'%' identified by '520140(改成自己的密码)' with grant option;
> flush privileges;
刷新一下权限,不用重启MySql服务。

脚本使用方法

方法1

如果使用的服务器是vultr的话非常简单,添加一个Startup Script即可,再新建服务器时选择Startup Script即可。

方法2

可以建立一个脚本文件lnmp.sh,将以上内容复制进去
通过. lnmp.sh来执行或者source lnmp.sh执行

linux中Shell执行脚本的方法

方法1

bash script-name或者sh script-name

这是当脚本文件本身没有可执行权限(即文件权限属性x位为-号)时常使用的方法,或者脚本文件开头没有指定解释器时需要使用的方法。推荐使用这种方法。

方法2

path/script-name或者./script-name

指在当前路径下执行脚本(脚本需要有执行权限),需要将脚本文件的权限改为可执行(即文件权限属性为x位)。具体方法为:chmod a+x script-name。然后通过执行脚本绝对路径或者相对路径就可以执行脚本了。
注意:在生产环境中,运维人员由于忘记为该脚本设置可执行权限,然后直接使用,导致出错。因此,推荐第一种 bashscript-name。

方法3

source script-name或者. script-name

source或者“.”命令的功能是:读入脚本并执行脚本,即在当前Shell中执行source或“.”加载并执行的相关脚本文件的命令及语句,而不是产生一个子Shell来执行文件中的命令。
以上两种都是子shell执行,如果脚本中定义了变量,当前shell是无法使用的。

总体而言方法3最方便,而方法1最规范

shll脚本的规范

一个规范的Shell脚本在第一行会指出由哪个程序(解释器)来执行脚本中的内容

#!/bin/bash
或
#!/bin/sh

以上内容只有在第一行才不是注释,且sh是bash的软链,所以使用#! /bin/bash更规范

点赞

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注