> CentOS > CentOS教程 >

centos7 shell脚本一键安装php环境全家桶

一键安装的脚本在最下面,复制代码就能用,不着急的建议慢慢看,欢迎路过的朋友指点
 
 
1,yum install php 默认安装的是5.4几版本的php,后面的updates不知道干啥的,望路过的大神指点
 
  
 
2,因为yum 安装软件有两个软件源(目前我只知道俩,貌似还有个ius?)
 
    1),epel 安装软件默认就是走这个源,php,redis不是最新的
 
    2),remi 这里的php,redis都是最新的,但是这个得自己安装,
 
        官网地址 https://rpms.remirepo.net/wizard/
 
3,根据需求选择完,下面会自动告诉你该怎么安装remi和php,把命令挨个粘贴上去执行一遍就好了
 
  
 
4,其实,这条命令执行完,就可以 yum install -y php 直接安装php了,现在是7.3.12
 
yum-config-manager --enable remi-php73
   看下,php的版本已经变了,可以和文章最上面的截图对比一下,后面的源也变了(那应该是看源的地方吧,我猜的....)
 
  
 
5,说一下安装php之前的事,到这里,如果直接执行 yum install -y php 的话,安装超级慢,去替换一下centos的镜像就快了(我猜的)
 
用阿里云的就行 https://developer.aliyun.com/mirror/centos 把里面的命令挨个执行一遍,别忘了最后的 yum makecache
 
6,现在可以安装执行 yum install -y php 了,安装完看一下版本
 
 
7,常用的php扩展(只贴不默认安装的),路过的大神可以补充,感谢
 
php-bcmath       = 精确数值处理
php-pecl-inotify = 文件监控
php-mbstring     = 处理多字节字符串(中文)
mysqli           = mysql扩展的增强版, 与mysql交互的封装
php-mysqlnd      = 与mysql交互的驱动, 安装完这个mysqli自动就有了
openssl          = 对称/非对称加解密(这个默认有了,不用装)
php-pdo          = 与各种数据库的交互封装
pdo_mysql        = pdo操作mysql的驱动(安装完pdo,这个默认就有了)
pdo_sqlite       = pdo操作sqlite的驱动(安装完pdo,这个默认就有了)
php-pecl-redis5  = 操作reids的(现在最新的就是redis5)
php-pecl-zip     = 处理压缩文件
php-pecl-swoole4 = swoole,这个不常用,也贴上来了,目前最新的是4.4.12,直接 yum install -y php-pecl-swoole4
 
//命令整理好了,直接复制下面这个执行就行
yum install -y php php-bcmath php-pecl-inotify php-mbstring php-pecl-redis5 php-pecl-zip php-mysqlnd php-pdo


 
8,安装php-fpm,启动,并添加到开机自启
 
yum install -y php-fpm
systemctl start php-fpm
systemctl enable php-fpm


 
9,为了更方便,这些命令我整理了一下.随便一个目录下,比如home下新建一个install_php.sh文件,把下面的代码复制上去
 
   然后在文件目录下执行 ./install_php.sh 一键安装php,哈哈
 
mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup
wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
yum clean all
yum makecache
yum install -y https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm
yum install -y https://rpms.remirepo.net/enterprise/remi-release-7.rpm
yum install -y yum-utils
yum-config-manager --enable remi-php73
yum install -y php php-bcmath php-pecl-inotify php-mbstring php-pecl-redis5 php-pecl-zip php-mysqlnd php-pdo
yum install -y php-fpm
systemctl start php-fpm
systemctl enable php-fpm

 
10,可以运行 php --ri 扩展 查看扩展的详细信息 比如 php --ri redis
    
 
11,可以使用phpinfo()去看下了,也可以在命令行输入php -i 查看,更方便,或者执行php -m 只查看扩展信息
 
===============php的安装搞定,下面是安装redis的===================
 
1,默认的源,redis是3.2版本的,现在最新的是5.0
  
 
2,执行 yum --enablerepo=remi install -y redis 安装最新版的redis(不知道为啥yum list 看不到这个5.0版本的)
 
  
 
3,redis默认是在前台执行的,要把 redis.conf 的 daemonize no 配置项 改成 daemonize yes,执行下面的命令就行
 
sed -i 's/daemonize no/daemonize yes/g' /etc/redis.conf

 
4,启动redis
 
redis-server /etc/redis.conf  //以指定配置文件启动redis
ps -aux | grep redis //启动完看下是否成功了
 
  
 
5,交互试一下,一切正常
       
 
6,设置开机自启,执行一条命令就可以了 systemctl enable redis,但是有个坑,我设置完之后,重启,redis 的启动会报错
 
   说打不开这个文件 /var/log/redis/redis.log,解决办法是,新建这个文件就可以了
 
   
 
执行这俩命令,执行完在重启系统,redis运行正常
 
touch /var/log/redis/redi.log
chmod 777 /var/log/redis/redis.log
7,设置redis可以远程访问,需要修改redis.conf文件,执行下面的命令就行,从上到下分别是
 
   注释掉 bind 127.0.0.1
 
   更改 protected-mode 的值为 no
 
   设置连接密码为walplpawxqxayjr ('我爱老婆老婆爱我相亲相爱一家人'的缩写,下面的mysql密码用的也是这个)
 
   这个密码太简单了,建议改成别的(一开始设置的123456,刚安装完就被黑客入侵了)
 
   ps:改完之后记得重启一下redis使配置生效 systemctl restart redis
 
sed -i 's/bind 127.0.0.1/# bind 127.0.0.1/g' /etc/redis.conf
sed -i 's/protected-mode yes/protected-mode no/g' /etc/redis.conf
sed -i 's/# requirepass foobared/requirepass 123456/g' /etc/redis.conf
8,为了方便,已经把上面这一套安装redis的命令整理好了,随便找个目录,比如home目录,新建一个install_redis.sh文件
 
   把下面的代码粘贴上去,然后执行 ./install_redis.sh 就可以了,又是一件安装,哈哈,下面的代码做了这几件事:
 
   设置redis为后台运行
 
   设置任何ip都可以访问
 
   关闭保护模式
 
   设置密码
 
   启动redis
 
   设置为开机自启
 
yum --enablerepo=remi install -y redis
sed -i 's/daemonize no/daemonize yes/g' /etc/redis.conf
sed -i 's/bind 127.0.0.1/# bind 127.0.0.1/g' /etc/redis.conf
sed -i 's/protected-mode yes/protected-mode no/g' /etc/redis.conf
sed -i 's/# requirepass foobared/requirepass walplpawxqxayjr/g' /etc/redis.conf
redis-server /etc/redis.conf
systemctl enable redis
touch /var/log/redis/redi.log
chmod 777 /var/log/redis/redis.log
==========redis的安装搞定,下面是安装composer的===============
 
1,composer 的 安装比较简单,命令已经整理好了,随便找个目录,比如home目录,新建一个install_composer.sh文件
 
   然后把下面的代码粘贴上去,执行 ./install_composer.sh 命令就行了,下面的命令依次做了这些事情
 
   安装composer 到当前目录
 
   配置composer 命令到全局
 
   替换composer的镜像源为阿里巴巴的
 
php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');"
php -r "if (hash_file('sha384', 'composer-setup.php') === 'a5c698ffe4b8e849a443b120cd5ba38043260d5c4023dbf93e1558871f1f07f58274fc6f4c93bcfd858c6bd0775cd8d1') { echo 'Installer verified'; } else { echo 'Installer corrupt'; unlink('composer-setup.php'); } echo PHP_EOL;"
php composer-setup.php
php -r "unlink('composer-setup.php');"
mv composer.phar /usr/local/bin/composer
composer config -g repo.packagist composer https://mirrors.aliyun.com/composer/

 
2,查看 composer 是否安装成功
 
  
 
==============composer的安装搞定,下面是安装git的=================
 
1,本来想安装最新版git的,搜了一圈,太麻烦了,yum 真香,但是默认安装是1.8版本的,现在最新的2.24
 
   yum install -y git
 
  
 
==============git的安装搞定,下面是安装nginx的==================
 
1,nginx 也直接用yum 安装,最新是1.17.6,默认安装是1.16.1,相对较新了.安装完添加到开机自启
 
yum install -y nginx
systemctl enable nginx
  
=================git的安装搞定,下面是安装mysql的===================
 
1,首先特别感谢这篇博客,谢谢
 
https://www.cnblogs.com/xiaopotian/p/8196464.html
 
2,这个mysql 安装的是5.7.28的,够用了,依次执行下面的命令,或者可以搞一个.sh文件,把下面的代码粘贴上去
 
wget http://dev.mysql.com/get/mysql57-community-release-el7-11.noarch.rpm
yum install -y mysql57-community-release-el7-11.noarch.rpm
yum install -y mysql-community-server
systemctl start  mysqld.service

 
3,上面就已经安装完成,并启动了,可以执行命令查看一下运行状态
 
systemctl status mysqld.service
 
  
 
4,初始化密码
 
   先看下默认的密码,执行命令 grep "password" /var/log/mysqld.log,红线上面的就是默认密码
 
   
 
   登录,并修改密码规则(默认的密码规则比较复杂,是不允许walplpawxqxayjr这种密码的)
 
   mysql -uroot -p 
 
   粘贴上面红线标识的密码登录进去,依次执行下面三条命令,就可以用walplpawxqxayjr登录了
 
set global validate_password_length=6;
set global validate_password_policy=0; 
alter user root@"localhost" identified by "walplpawxqxayjr";
 

 
5,设置远程访问,需要登录进mysql,然后执行下面两条命令,就可以远程访问了,密码是123456,建议自己改一下
 
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'walplpawxqxayjr' WITH GRANT OPTION;
FLUSH PRIVILEGES;
  


 
6,加入到开机自启动
 
systemctl enable mysqld
7,为了方便,整理了一下命令,把下面的代码,随便找个目录,做个shell脚本,比如在home目录下,新建一个install_mysql.sh
 
   把下面的代码复制上去,然后执行 ./install_mysql.sh 就可以了,一键搞定,哈哈(这个有点复杂)
 
#!/bin/sh
 
#安装mysql的命令流程和上面讲的不太一样,是因为,要想设置远程登录,就得先本地登录进mysql
#但是上面的安装方式会自动生成一个密码,而我不知道怎么用shell脚本复制那个密码,
#并且在shell脚本执行到mysql的登录时自动把那个密码粘贴上去,
#所以用了一个取巧的方式,第一次先绕过密码输入,自定义一个
 
#安装mysql,添加到开机自动启动
wget http://dev.mysql.com/get/mysql57-community-release-el7-11.noarch.rpm
yum install -y mysql57-community-release-el7-11.noarch.rpm
yum install -y mysql-community-server
systemctl enable mysqld
 
#安装这个才能执行下面的expect命令
yum install -y expect
 
#先取消密码登录,为了更改为walplpawxqxayjr
sed -i '$a\skip-grant-tables=1' /etc/my.cnf
systemctl start  mysqld
expect -c "
set timeout -1
spawn mysql -uroot
expect \">\"
send \"use mysql;\r\"
send \"update user set authentication_string = password('walplpawxqxayjr'), password_expired = 'N', password_last_changed = now() where user = 'root';\r\"
send \"quit\r\"
expect eof
"
 
sed -i 's/skip-grant-tables=1/# skip-grant-tables=1/g' /etc/my.cnf
 
#然后重新启动mysql,再次重新登录,这次输入密码,并设置远程登录
systemctl restart mysqld
expect -c "
set timeout -1
spawn mysql -uroot -p
expect \"Enter password:\"
send \"walplpawxqxayjr\r\"
expect \">\"
send \"set global validate_password_length=6;\r\"
send \"set global validate_password_policy=0;\r\"
send \"GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'walplpawxqxayjr' WITH GRANT OPTION;\r\"
send \"FLUSH PRIVILEGES;\r\"
send \"quit\r\"
interact
"
8.如果想卸载这个mysql的话,执行下面的命令,或者先yum list | grep mysql 看一下也行,带 @ 号的就说明是安装了的
 
yum remove -y mysql-community-client
yum remove -y mysql-community-common
yum remove -y mysql-community-libs
yum remove -y mysql-community-libs-compat
yum remove -y mysql57-community-release
==============至此,php环境全家桶安装完毕================
 
最后的最后,把上面所有的安装脚本,汇总到了一起,建一个install.sh文件,并且把下面代码粘贴上去,执行 ./install.sh,上面的东西就都有了,并且已经设置好,下面的代码里有注释,也可以拿走根据情况修改着用
 
#!/bin/sh
 
#php,php-fpm,nginx,redis,composer 应该会自动同步最新,或较新的版本,全部执行完大概需要20分钟
#php 7.3.12
#php-fpm 7.3.12
#nginx 1.16.1
#redis 5.0.7
#git 1.8.3.1
#mysql 5.7.28
#composer 1.9.1  
 
#===============================install php start===============================
mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup
wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
yum clean all
yum makecache
yum install -y https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm
yum install -y https://rpms.remirepo.net/enterprise/remi-release-7.rpm
yum install -y yum-utils
yum-config-manager --enable remi-php73
yum install -y php php-bcmath php-pecl-inotify php-mbstring php-pecl-redis5 php-pecl-zip php-mysqlnd php-pdo php-fpm
# yum install -y php-pecl-swoole4
systemctl start php-fpm
systemctl enable php-fpm
 
#===============================install redis start=================================
yum --enablerepo=remi install -y redis
sed -i 's/daemonize no/daemonize yes/g' /etc/redis.conf
sed -i 's/bind 127.0.0.1/# bind 127.0.0.1/g' /etc/redis.conf
sed -i 's/protected-mode yes/protected-mode no/g' /etc/redis.conf
sed -i 's/# requirepass foobared/requirepass walplpawxqxayjr/g' /etc/redis.conf
redis-server /etc/redis.conf
systemctl enable redis
touch /var/log/redis/redi.log
chmod 777 /var/log/redis/redis.log
 
#===============================install composer start===============================
php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');"
php -r "if (hash_file('sha384', 'composer-setup.php') === 'a5c698ffe4b8e849a443b120cd5ba38043260d5c4023dbf93e1558871f1f07f58274fc6f4c93bcfd858c6bd0775cd8d1') { echo 'Installer verified'; } else { echo 'Installer corrupt'; unlink('composer-setup.php'); } echo PHP_EOL;"
php composer-setup.php
php -r "unlink('composer-setup.php');"
mv composer.phar /usr/local/bin/composer
composer config -g repo.packagist composer https://mirrors.aliyun.com/composer/
 
#===============================install git start====================================
yum install -y git
 
#===============================install nginx start==================================
yum install -y nginx
systemctl enable nginx
 
#===============================install mysql start==================================
#安装mysql,添加到开机自动启动
wget http://dev.mysql.com/get/mysql57-community-release-el7-11.noarch.rpm
yum install -y mysql57-community-release-el7-11.noarch.rpm
yum install -y mysql-community-server
systemctl enable mysqld
 
#安装这个才能执行下面的expect命令
yum install -y expect
 
#先取消密码登录,为了更改为walplpawxqxayjr
sed -i '$a\skip-grant-tables=1' /etc/my.cnf
systemctl start  mysqld
expect -c "
set timeout -1
spawn mysql -uroot
expect \">\"
send \"use mysql;\r\"
send \"update user set authentication_string = password('walplpawxqxayjr'), password_expired = 'N', password_last_changed = now() where user = 'root';\r\"
send \"quit\r\"
expect eof
"
 
sed -i 's/skip-grant-tables=1/# skip-grant-tables=1/g' /etc/my.cnf
 
#然后重新启动mysql,再次重新登录,这次输入密码,并设置远程登录
systemctl restart mysqld
expect -c "
set timeout -1
spawn mysql -uroot -p
expect \"Enter password:\"
send \"walplpawxqxayjr\r\"
expect \">\"
send \"set global validate_password_length=6;\r\"
send \"set global validate_password_policy=0;\r\"
send \"GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'walplpawxqxayjr' WITH GRANT OPTION;\r\"
send \"FLUSH PRIVILEGES;\r\"
send \"quit\r\"
interact
"
 



(责任编辑:IT)