首先简单介绍一下linux的两种安装方法,yum以及编译安装。yum是一个软件包管理器,使用yum指令安装,系统会自动下载软件包并安装,并且还能自动处理依赖,安装依赖包,优点是方便简单,缺点是管理器的软件包往往不是最新版的,甚至可能比较老旧。
而编译安装则需要自己找相关软件的代码源,下载的软件都是没有编译的代码,所以需要自己编译成可执行文件,所以叫做编译安装,它的优点是软件源自己寻找,可以是最新的,也可以是旧的,比较灵活,缺点是操作步骤多,安装繁琐,新手失败率大。
虽然yum安装的软件版本比较低,但我们可以通过配置第三方yum源的方式来安装较新版本的软件,下面我就整理介绍一下通过这种方式安装成功的步骤。
参考了下面教程
http://www.cnblogs.com/toughlife/p/5479271.html
http://www.cnblogs.com/xiaoit/p/3991037.html
http://www.2cto.com/os/201702/597890.html
准备工作
首先你需要一台装好centos系统的虚拟机或服务器,本机测试环境是CentOS Linux release 7.3.1611
1、配置第三方yum源
先看一下默认yum安装的php版本,会发现版本比较低
# yum list php
php.x86_64 5.4.16-42.el7 base
安装centos7的源(注意不是6.5,源要与系统大版本号对应,否则会出错)
# yum install epel-release
# rpm -ivh http://rpms.famillecollet.com/enterprise/remi-release-7.rpm
接下来使用扩展源搜索php的版本,我们发现能搜索到更高版本的软件源了
# yum list --enablerepo=remi --enablerepo=remi-php56 php
php.x86_64 5.6.30-1.el7.remi remi-php56
# yum list --enablerepo=remi --enablerepo=remi-php70 php
php.x86_64 7.0.17-1.el7.remi remi-php70
关于yum第三方源网上有很多资源,我们可以自行选择,以上是php的源,mysql的源网上也有,这里就不介绍了,道理都是一样的
2、安装php
使用扩展源yum安装php及一堆扩展,这里选择5.6版本的
# yum install --enablerepo=remi --enablerepo=remi-php56 php php-fpm php-opcache php-devel php-mbstring php-mcrypt php-mysqlnd php-phpunit-PHPUnit php-pecl-xdebug php-pecl-xhprof
使用下面两个指令,任选其一,查看是否安装成功,如果正确显示版本号或路径信息,则表示安装成功了
# php --version
# which php
顺便启动一下php-fpm,再设置一下这个服务的开机启动
# /bin/systemctl start php-fpm.service
# chkconfig php-fpm on
3、安装nginx
由于没有设置过nginx的yum源,默认安装就好
#yum install nginx
查看是否安装成功,成功显示版本号信息表示安装成功,或者在浏览器输入'localhost',看是否出现如下页面
# which nginx
/usr/sbin/nginx
# /usr/sbin/nginx -v
nginx version: nginx/1.10.2
启动nginx服务,并设置开机启动
# /bin/systemctl start nginx.service
# chkconfig nginx on
4、配置nginx支持php
nginx默认是不支持php脚本编译的,所以需要先配置
将配置文件改为备份文件
# mv /etc/nginx/nginx.conf /etc/nginx/nginx.confbak
将默认的配置文件作为配置文件
# cp /etc/nginx/nginx.conf.default /etc/nginx/nginx.conf
进入nginx配置文件进行修改
# vi /etc/nginx/nginx.conf
找到80端口的配置,加入index.php
index index.php index.html index.htm;
加入下面的配置代码,如果已经存在的,去掉注释,并修改,其中/usr/share/nginx/html是web根目录的地址,可以根据自己的喜好进行选择,我一般放在/var/www下
location ~ \.php$ { root /usr/share/nginx/html; fastcgi_pass 127.0.0.1:9000; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME /usr/share/nginx/html$fastcgi_script_name; include fastcgi_params; }
最后,编辑文件php.ini,在文件末尾添加cgi.fix_pathinfo = 1,已经存在的去掉注释就好了
# vi /etc/php.ini
重启nginx和php-fpm服务
# /bin/systemctl restart nginx.service
# /bin/systemctl restart php-fpm.service
然后新建一个php文件,写一个测试代码,最常见的就是输出phpinfo();
# vi /usr/share/nginx/html/test.php
在浏览器输入'localhost/test.php',如果如下图所示,表示配置成功
5、安装MySQL
同样,MySQL使用原生的yum安装,安装MySQL以及它的服务
# yum install mysql mysql-server mysql-devel
在安装过程中我们会发现没有可用软件包 mysql-server。这个提示,因为centos7默认的数据库不是MySQL,而是Mariadb。
Mariadb是MySQL的一个分支,但完全兼容MySQL,它对应的服务是Mariadb—server,其使用方法和MySQL几乎一致,实际上你执行‘yum install mysql’安装的就是Mariadb,如果不习惯还是想使用MySQL服务也是可以的,只要按下面步骤下载包安装即可。
# wget http://repo.mysql.com/mysql-community-release-el7-5.noarch.rpm
# rpm -ivh mysql-community-release-el7-5.noarch.rpm
# yum install mysql-server
值得注意的是安装mysql服务的时候,会安装一些依赖,原来的Mariadb将会被MySQL替代掉,最后,开启服务,如果没有报错表示安装成功,同时设置开机启动
# /bin/systemctl start mysqld.service
# chkconfig mysqld on
如果还想进一步验证,可以使用sql指令验证,输入‘mysql’指令就可以进入sql指令命令窗口
# mysql
6、总结
至此,lnmp的环境就算搭建好了,以上仅供参考,遇到问题多搜索,多探索,总会解决的。
扩展
1、安装phpmyadmin
去PHPmyadmin官网下载安装包到本地,然后使用ssh上传到centos上,上传后我的安装包目录是,/usr/local/src/phpMyAdmin.zip
然后解压安装
# unzip /usr/local/src/phpMyAdmin.zip
移动到web访问目录并重命名(注意解压安装之后的文件夹不是‘phpMyAdmin’,而是类似于‘phpMyAdmin-4.7.0-all-languages’这样的,我的默认安装之后是在‘home’文件夹下)
# mv phpMyAdmin-4.7.0-all-languages /usr/share/nginx/html/phpmyadmin
然后在浏览器访问‘localhost/phpmyadmin’,如下图所示就表示安装成功了
有些人可能会遇到 403 不能访问的错误,可以看一下是否关闭了selinux或者phpmyadmin文件夹设置了不能访问的权限
2、配置nginx支持thinkphp
在原有的配置文件nginx.conf下修改php解析的代码,修改下面注释的三个地方
location ~ \.php { #去掉$ root /var/www; fastcgi_pass 127.0.0.1:9000; fastcgi_index index.php; fastcgi_split_path_info ^(.+\.php)(.*)$; #增加这一句 fastcgi_param PATH_INFO $fastcgi_path_info; #增加这一句 fastcgi_param SCRIPT_FILENAME /var/www$fastcgi_script_name; include fastcgi_params; }
3、配置nginx隐藏thinkphp路径中的index.php
在原有的配置文件nginx.conf下修改代码,添加注释的这一段代码,其中user、tool是你项目文件夹的名称,含有public的是thinkphp5的默认路径
location / { root /var/www; index index.php index.html index.htm; if (!-e $request_filename) { #隐藏index.php rewrite ^/user/public/(.*)$ /user/public/index.php/$1 last; rewrite ^/tool/(.*)$ /tool/index.php/$1 last; } #隐藏index.php }