LNMP一键部署脚本
LNMP代表的是:linux系统下 nginx+mysql+php 网站服务器架构
一键部署的意思是,执行脚本,解决所有依赖关系,没有报错。脚本执行完成,环境部署完成
所以在做一键部署脚本的时候需要考虑到基础环境和环境搭建两个方面
- 首先需要创建基础环境 创建基础环境比环境搭建重要 如果基础环境都没创建好 环境部署方面搭建的再好无法运行也没有用
不同的服务部署脚本需要创建的基础环境也不同 竟然咱们是lnmp脚本就需要考虑nginx mysql php三个服务 想要运行你脚本的机器如果安装过这些服务怎么办 如何解决冲突问题和依赖关系 能在各种情况下做到脚本执行完成,环境部署完成.
- 环境搭建
1.Mysql
首先将mysql安装包解压到/usr/local/src/目录中
tar -zxvf mysql-5.6.43-linux-glibc2.12-x86_64.tar.gz -C /usr/local/src/
挪动位置 方便之后调用
mv /usr/local/src/mysql-5.6.43-linux-glibc2.12-x86_64 /usr/local/mysql
cd /usr/local/mysql/
创建mysql用户 并检查该用户是否存在 若存在则删除并重新建立 创建datadir即/data/mysql 后续的数据库文件会放到此目录
useradd -s /sbin/nologin mysql
if [ $? -eq 0 ];then
rm -rf /data/mysql
mkdir -p /data/mysql
chown -R mysql:mysql /data/mysql/
else
userdel -r mysql
rm -rf /sbin/nologin
useradd -s /sbin/nologin mysql
rm -rf /data/mysql
mkdir -p /data/mysql
chown -R mysql:mysql /data/mysql/
fi
下载需要的软件包
yum install perl-Data-Dumper.x86_64 perl-XML-Dumper.noarch net-tools -y
--user=mysql : 定义数据库以mysql用户运行
--datadir=/data/mysql/ : 定义数据库的安装目录为/data/mysql/
./scripts/mysql_install_db --user=mysql --datadir=/data/mysql/
复制mysql安装包里配置文件至/etc/my.cnf
cp support-files/my-default.cnf /etc/my.cnf
复制mysql安装包里启动脚本文件并修改其权限
cp support-files/mysql.server /etc/init.d/mysqld
chmod 755 /etc/init.d/mysqld
修改启动脚本
sed -i '47c datadir=/data/mysql' /etc/init.d/mysqld
将mysqld服务加入到系统服务列表中并设置开机自启
chkconfig --add mysqld
chkconfig mysqld on
启动服务 查看是否启动成功(3306端口)
service mysqld start
netstat -ntpl
2.Nginx
将nginx压缩包解压到/usr/local/src/目录中
tar -zxvf nginx-1.12.2.tar.gz -C /usr/local/src/
下载nginx编译安装需要的软件包
yum install net-tools gcc gcc-c++ openssl-devel zlib-devel zlib pcre-devel -y
进入nginx解压后的目录,编译安装PHP服务
cd /usr/local/src/nginx-1.12.2
./configure --prefix=/usr/local/nginx --with-http_dav_module --with-http_stub_status_module --with-http_addition_module --with-http_sub_module --with-http_flv_module --with-http_mp4_module --with-http_ssl_module --with-http_gzip_static_module --user=nginx --group=nginx
make && make install
创建软链接斌启动nginx服务 查看nginx是否启动(80端口)
ln -s /usr/local/nginx/sbin/nginx /usr/local/sbin/
nginx -t
nginx
netstat -ntpl
3.php
将libmcrpt和php解压到/usr/local/src/目录下
tar -zxvf libmcrypt-2.5.8.tar.gz -C /usr/local/src/
tar -zxvf php-5.6.27.tar.gz -C /usr/local/src/
下载需要的安装包
yum -y install net-tools gcc gcc-c++ libxml2-devel libcurl-devel openssl-devel bzip2-devel
进入libmcryp解压后目录,编译安装该服务
cd /usr/local/src/libmcrypt-2.5.8
./configure --prefix=/usr/local/libmcrypt && make && make install
进入php解压后的目录,编译安装PHP服务
cd /usr/local/src/php-5.6.27
./configure --prefix=/usr/local/php5.6 --with-mysql=mysqlnd --with-pdo-mysql=mysqlnd --with-mysqli=mysqlnd --with-openssl --enable-fpm --enable-sockets --enable-sysvshm --enable-mbstring --with-freetype-dir --with-jpeg-dir --with-png-dir --with-zlib --with-libxml-dir=/usr --enable-xml --with-mhash --with-mcrypt=/usr/local/libmcrypt --with-config-file-path=/etc --with-config-file-scan-dir=/etc/php.d --with-bz2 --enable-maintainer-zts
make && make install
压缩包中提供了PHP环境需要用到的模板文件,需要对文件进行改名后才能使用,复制文件并改名
cp php.ini-production /etc/php.ini
cp sapi/fpm/init.d.php-fpm /etc/init.d/php-fpm
赋予文件执行权限
chmod +x /etc/init.d/php-fpm
添加PHP服务到启动列表,并设置开机启动
chkconfig --add php-fpm
chkconfig php-fpm on
修改PHP的主配置文件php-fpm.conf
cp /usr/local/php5.6/etc/php-fpm.conf.default /usr/local/php5.6/etc/php-fpm.conf
sed -i '149c user = nginx' /usr/local/php5.6/etc/php-fpm.conf
sed -i '150c group = nginx' /usr/local/php5.6/etc/php-fpm.conf
启动php服务并查看服务是否启动成功(9000端口)
service php-fpm start
netstat -ntpl
#目录位置
Nginx:/usr/local/nginx/
MySQL:/usr/local/mysql/
PHP:/usr/local/php5.6
#配置文件:
Nginx主配置文件:/usr/local/nginx/conf/nginx.conf
MySQL配置文件:/etc/my.cnf
PHP的主配置文件:/usr/local/php5.6/etc/php-fpm.conf
状态管理
Nginx状态管理:/usr/local/nginx/sbin/nginx (-t 启动 -s reload 重启 -s stop 关闭)
MySQL状态管理:/etc/init.d/mysqld (start 启动 stop 关闭)
PHP状态管理:/etc/init.d/php-fpm (start 启动 stop 关闭)