服务器配置LNMP、LAMP

摘要:记录一下开发环境的配置(会有多种方法,之后会逐步的完善各种配置方法)

SCL 配置

PHP7.2 安装


CentOS上的PHP版本都十分古老,满足不了一些框架对PHP版本的要求。于是,出现了许多第三方软件库,如EPEL、RPM Fusion、Remi等,这些库提供了新版的PHP。让我们的系统能与时俱进。

但是,第三方软件库有几个缺点:第一,他们提供的软件没有经过CentOS官方测试,在安装软件的同时,可能会替换掉系统的一些核心文件,造成系统不稳定。第二,第三方库安装的软件可能不保证兼容性,也许对系统升个级就会导致某个软件没法使用。

这里使用SCL(Software Collections)软件库安装高版本的PHP。SCL属于CentOS官方的软件库,经过充分测试,安装软件时不会替换系统的核心文件,保证了系统的稳定性。

安装SCL

yum install centos-release-scl-rh

之后可以搜索相关的php信息(会把所有的php列出来,包括扩展以及php安装包)

yum search php

安装php7.2

yum install rh-php72
rh- 前缀是RedHat的意思,告诉你这是官方提供的PHP而不是第三方库提供的。
安装完之后,PHP实际会安装在/opt/rh目录下

查看SCL安装了哪些软件

scl -l

执行PHP -v

scl enable rh-php72 "php -v"   查看版本,但是太麻烦了,可以通过设置来使用
scl enable rh-php72 bash    执行后就可以直接正常使用 php -v查看信息
ps -ef|grep php    查看PHP是否启动

常用命令

Nginx 安装


添加EPEL包的仓库源

yum -y install epel-release

通过EPEL仓库来安装Nginx

yum -y install nginx

常用命令

  systemctl start nginx.service
  systemctl stop nginx.service
  systemctl reload nginx.service
  systemctl status nginx.service

以下是Nginx的默认路径:

(1) Nginx配置路径:/etc/nginx/
(2) PID目录:/var/run/nginx.pid
(3) 错误日志:/var/log/nginx/error.log
(4) 访问日志:/var/log/nginx/access.log
(5) 默认站点目录:/usr/share/nginx/html

MariaDB 安装


直接使用 yum 命令从 CentOS 默认远程仓库中安装 mariadb-server包

yum -y install mariadb mariadb-server
默认的账户密码为空

设置启动及链接

systemctl start mariadb
systemctl enable mariadb

编译安装(亲测可用)

准备编译环境

1 登陆服务器
2 关闭防火墙
输入~ systemctl status firewalld~命令查看当前防火墙的状态。
如果防火墙的状态参数是~inactive~,则防火墙为关闭状态, 可跳过此步骤。如果防火墙的状态参数是active,则防火墙为开启状态。如上图所示,此处防火墙为开启状态,需要运行如下命令关闭防火墙:

如果您想临时关闭防火墙,输入命令~systemctl stop firewalld~。
说明 这只是暂时关闭防火墙,下次重启Linux后,防火墙还会开启。
如果您想永久关闭防火墙,输入命令~systemctl disable firewalld~。 

3 关闭SELinux
运行·getenforce·命令查看SELinux的当前状态。

如果SELinux状态参数是~Disabled~, 则SELinux为关闭状态,可跳过此步骤。如果SELinux状态参数是Enforcing,则SELinux为开启状态。如上图所示,此处SELinux为开启状态,需要运行如下命令关闭SELinux:

如果您想临时关闭SELinux,输入命令~setenforce 0~。
说明 这只是暂时关闭SELinux,下次重启Linux后,SELinux还会开启。
如果您想永久关闭SELinux,输入命令~vi /etc/selinux/config~编辑SELinux配置文件。回车后,把光标移动到~SELINUX=enforcing~这一行,按下~i~键进入编辑模式,修改为~SELINUX=disabled~, 按下Esc键,然后输入:wq并回车以保存并关闭SELinux配置文件。 

PHP7.2

依次运行以下命令更新YUM源。

# yum install -y http://dl.iuscommunity.org/pub/ius/stable/CentOS/7/x86_64/ius-release-1.0-15.ius.centos7.noarch.rpm
# rpm -Uvh https://mirror.webtatic.com/yum/el7/webtatic-release.rpm

说明 本教程以 ius-release-1.0-15.ius.centos7.noarch.rpm版本为例。实际安装过程中,请您使用最新版本ius-release软件包。
运行以下命令安装PHP

yum -y install php72w-devel php72w.x86_64 php72w-cli.x86_64 php72w-common.x86_64 php72w-gd.x86_64 php72w-ldap.x86_64 php72w-mbstring.x86_64 php72w-mcrypt.x86_64  php72w-pdo.x86_64   php72w-mysqlnd  php72w-fpm php72w-opcache php72w-pecl-redis php72w-pecl-mongo

运行以下命令查看PHP版本。 
php -v
地址:https://webtatic.com/packages/php72/

配置PHP (重要)

在/usr/share/nginx/html/目录下新建phpinfo.php文件,用于展示phpinfo信息。具体步骤如下:

    运行vim /usr/share/nginx/html/phpinfo.php命令打开文件。
    按i进入编辑模式。
    输入下列内容。

    <?php echo phpinfo(); ?>

    按:wq保存并退出。

运行以下命令启动PHP-FPM。

systemctl start php-fpm

运行以下命令设置PHP-FPM开机自启动。

systemctl enable php-fpm

测试访问

打开浏览器。
在地址栏输入http://<ECS实例公网IP地址>/phpinfo.php。

Nginx

安装Nginx

运行以下命令安装Nginx。
yum -y install nginx
运行以下命令查看Nginx版本。
nginx -v                            
返回结果如下所示,表示Nginx安装成功。
nginx version: nginx/1.12.2

配置Nginx

运行以下命令备份Nginx配置文件。

cp /etc/nginx/nginx.conf /etc/nginx/nginx.conf.bak

运行以下命令打开Nginx配置文件。

vim /etc/nginx/nginx.conf
按i进入编辑模式。
在server大括号内,添加下列配置信息,使Nginx支持PHP请求。

        location / {
            index index.php index.html index.htm;
        }
        #配置Nginx通过fastcgi方式处理您的PHP请求
        location ~ .php$ {
            root /usr/share/nginx/html;
            fastcgi_pass 127.0.0.1:9000; #Nginx通过本机的9000端口将PHP请求转发给PHP-FPM进行处理。
            fastcgi_index index.php;
            fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;
            include fastcgi_params;  #Nginx调用fastcgi接口处理PHP请求
        }                

说明 若不添加此配置信息,则会导致Nginx无法处理您的PHP请求,即您请求的PHP页面将无法打开。
运行以下命令启动Nginx服务。

systemctl restart nginx

最后需要将防火墙在打开,并开启80端口

二:centos7.x用firewall打开80端口

1.关闭与开启防火墙

      启动:systemctl start firewalld

      关闭: systemctl stop firewalld

2.查看防火墙是否开启的状态,以及开放端口的情况

    systemctl status firewalld.service

    firewall-cmd --list-all 

3. 通过以下命令开放http  80 端口

    firewall-cmd  --add-port=80/tcp --permanent

    命令末尾的--permanent表示用久有效,不加这句的话重启后刚才开放的端口就又失效了 

4 .然后重启防火墙:

    sudo firewall-cmd --reload

5. 再次查看端口的开放情况:

     firewall-cmd --list-all

     ports:里出现了 80 端口

(同时阿里云的安全局也要增加个80规则,这里使用的Vultr)
评论
  • 2019-10-25 10:15:20 by Eric Guo
    rewrite ^/index.php/(.*)/(.*)/(.*)$ /index.php?p1=$1&p2=$2&p3=$3?; 其中$1 $2 $3分别表示匹配第一个第二个第三那个正则
  • 2019-08-01 17:20:04 by Eric Guo
    参考阿里云文档https://help.aliyun.com/document_detail/97251.html?spm=a2c4g.11174283.6.1027.37f452feEqFTIZ
  • 2019-08-01 17:19:48 by Eric Guo
    推荐使用编译安装 文档比较丰富