为PHP设置服务器(Apache/Nginx)环境变量

设置环境变量常见的地方为区分开发环境/生产环境,或者定义一些数据库的帐号密码

ssh登陆你的服务器

ssh 用户@主机

介绍

LNMP 是现在非常流行的 web 环境,
是Linux,Nginx,MySQL(使用MariaDB),PHP的缩写。数据存储在MySQL中,动态内容由
PHP 处理。 在本指南中,我们将演示如何在
CentOS 7 服务器上安装
LNMP 服务。

在本指南中,我们将在CentOS 7
VPS上安装一个LEMP堆栈。CentOS将满足我们的第一个要求:一个Linux操作系统。

设置Apache环境变量

创建用户,密码,加入wheel用户组

useradd newuser
passwd newuser
sudo gpasswd -a newuser wheel

返回:

Adding user newuser to group wheel

查看用户所属群组:

groups newuser

返回:

newuser : newuser wheel

登陆

su newuser

这样newuser就可以使用sudo命令了。

第一步 – 安装Nginx

为了向我们的网站访问者显示网页,我们将使用
Nginx,一种现代化的高效网页服务器。

要添加CentOS 7 EPEL存储库,请打开终端并使用以下命令:

sudo yum install epel-release

由于我们使用sudo命令,这些操作将以 root
用户权限执行。它会询问您的常规用户密码,以验证您是否有权利以 root
权限运行命令。

现在,您的服务器上安装了 Nginx 存储库,请使用以下 yum 命令安装 Nginx :

sudo yum install nginx

一旦安装,您可以在启动 Nginx:

sudo systemctl start nginx

您可以立即进行检查,通过访问您的网络浏览器中的服务器的公共IP地址或者域名来验证一切是否都按计划进行:

http://server_domain_name_or_IP/

您将看到默认的CentOS 7
Nginx网页,这是为了信息和测试目的。它应该看起来像这样:

澳门新浦京电子游戏 1澳门新浦京电子游戏
如果您看到此页面,则您的Web服务器现在已正确安装。

在继续之前,您将要做的是启动 Nginx 启动。使用以下命令执行此操作:

sudo systemctl enable nginx

第二步 – 安装 MySQL(MariaDB)

现在我们的Web服务器启动并运行了,现在是安装MariaDB的时候了,MariaDB
是开源版本的 MySQL
分支,在绝大多数方面是兼容的,对于开发者来说,几乎感觉不到任何不同。目前
MariaDB 是发展最快的 MySQL
分支版本,新版本发布速度已经超过了Oracle官方的MySQL版本。

再次,我们可以yum用来获取和安装我们的软件。这一次,我们还将安装一些其他“帮助”软件包,帮助我们使组件相互通信:

sudo yum install mariadb-server mariadb

安装完成后,我们需要使用以下命令启动 MariaDB:

sudo systemctl start mariadb

现在我们的 MySQL
数据库正在运行,我们希望运行一个简单的安全脚本,它将删除一些危险的默认值,并锁定对我们的数据库系统的访问。运行以下操作启动交互式脚本:

sudo mysql_secure_installation

提示将询问您当前的 root 密码。既然你刚刚安装了
MySQL,你很可能没有一个,所以按 Enter 键留空。然后提示将询问您是否要设置
root 密码。继续输入Y,并按照以下步骤进行:

Enter current password for root (enter for none):


OK, successfully used password, moving on...

Setting the root password ensures that nobody can log into the MariaDB root user without the proper authorisation.

New password: password Re-enter new password: password Password updated successfully! Reloading privilege tables.. ... Success!

对于其余的问题,您应该通过每个提示点击“ENTER”键接受默认值。这将删除一些示例用户和数据库,禁用远程
root 登录,并加载这些新规则,以便 MySQL 立即尊重我们所做的更改。

最后一件事就是让 MariaDB 开机启动。使用以下命令执行此操作:

sudo systemctl enable mariadb

在这一步,您的数据库系统现在已经建立起来,我们可以继续。

指令

设置当前环境变量为DEV

SetEnv RUNTIME_ENVIROMENT DEV

数据库帐号密码

SetEnv MYSQL_USERNAME root
SetEnv MYSQL_PASSWORD root

添加yum仓库

去安装 ius 仓库,它提供了不同的版本,我们需要安装适合用在 centos 7
上的仓库 ..

sudo yum install https://centos7.iuscommunity.org/ius-release.rpm -y

查看一下仓库的列表 ..

yum repolist

你会看到刚才安装的 ius 这个仓库 .. 因它这个仓库会依赖 epel-release
仓库,所以安装它的时候也会自动去安装这个 epel 仓库 ..

第三步 – 安装 PHP

PHP是我们设置的组件,它将处理代码以显示动态内容。它可以运行脚本,连接到我们的MySQL数据库以获取信息,并将处理的内容交给我们的Web服务器进行显示。

我们可以再次利用yum系统来安装我们的组件。我们还将包括 php-mysql 和
php-fpm 包:

sudo yum install php php-mysql php-fpm

配置文件格式

<VirtualHost *:80>
    ServerAdmin admin@admin.com
    DocumentRoot "/var/www/"
    ServerName localhost
    SetEnv RUNTIME_ENVIROMENT DEV
    SetEnv MYSQL_USERNAME root
    SetEnv MYSQL_PASSWORD root
    ErrorLog "logs/error.log"
    CustomLog "logs/access.log" common
</VirtualHost>

安装NGINX

sudo yum install nginx -y

完成以后启动一下这个服务 ..

sudo systemctl start nginx

再让它可以开机自启动 ..

sudo systemctl enable nginx

下面我们可以测试一下看看 .. 打开浏览器 .. 直接输入服务器的 ip 地址 ..
你应该会看到一个 NGINX 的欢迎页面 .. 说明现在已经成功的安装了 NGINX ..
如果不能看到,需要防火墙打开80端口

sudo iptables -A INPUT -p tcp --dport 80 -j ACCEPT

配置PHP处理器

我们现在已经安装了我们的 PHP
组件,但是我们需要进行一些轻微的配置更改,使我们的安装更加安全。

使用 root 权限打开主 php-fpm 配置文件:

sudo vi /etc/php.ini

我们在这个文件中寻找的是设置cgi.fix_pathinfo的参数。这将被分号与分号(;),它默认值为“1”。

这是一个非常不安全的设置,因为它告诉PHP尝试执行最接近的文件,如果PHP文件不完全匹配,它可以找到。这基本上将允许用户以允许他们执行不应该被允许执行的脚本的方式来制作PHP请求。

我们将通过取消注释行并将其设置为“0”来更改这两个条件:

cgi.fix_pathinfo=0

完成后保存并关闭文件。

接下来,打开 php-fpm 配置文件 www.conf:

sudo vi /etc/php-fpm.d/www.conf

找到指定参数的行 listen,然后更改它,如下所示:

listen = /var/run/php-fpm/php-fpm.sock

接下来,找到设置的线条listen.ownerlisten.group并取消他们。他们应该是这样的:

isten.owner = nobody
listen.group = nobody

最后,找到 user 和 group 把 “apache” 改成 “nginx”:

user = nginx
group = nginx

然后保存并退出。

现在,我们只需要键入以下命令即可启动 PHP 处理器:

sudo systemctl start php-fpm

这将实施我们所做的改变。

接下来,设置 php-fpm 开机启动:

sudo systemctl enable php-fpm

设置Nginx环境变量

安装MariaDB

先删除Centos7自带的MariaDB

sudo yum remove mariadb-libs -y

然后搜索一下最新的包

sudo yum search mariadb

安装

sudo yum install mariadb101u-server -y

开启

sudo systemctl start mariadb

然后让它可以开机自启动

sudo systemctl enable mariadb

再执行一下安全相关的配置

mysql_secure_installation

这里要让我们回答一些问题 ..

输入当前 root 用户的密码, 直接回车 . 要设置 root 密码吗? 是的 …
再确认一次 … 是否要删除匿名用户吗? 是的 , 想要禁用 root
用户远程登录吗? 可以 ,要删除掉 test 这个数据库吗? 确定
,最后会提示,要重新加载权限吗? 再输入一个 Y,表示确定 …

这样我们就完成了 MariaDB 这个数据库的安装还有配置 … 可以测试一下 …

mysql -u root -p

意思是使用 root 用户登录到数据库的控制台, 输入密码 .. 注意这个 root
是数据库管理系统的那个 root 用户 …

这样会登录到数据库的控制台 … 显示数据库系统里所有的数据库 ,可以使用

show databases;

第四步 – 配置Nginx来处理PHP页面

现在,我们安装了所有必需的组件。我们仍然需要做的唯一配置更改是告诉 Nginx
使用我们的 PHP 处理器进行动态内容。

我们在服务器块级别(服务器块类似于Apache的虚拟主机)执行此操作。通过键入以下内容打开默认的
Nginx 服务器块配置文件:

sudo vi /etc/nginx/conf.d/default.conf

目前,删除注释后,Nginx默认服务器块如下所示:

server {
listen       80;
server_name  localhost;

location / {
    root   /usr/share/nginx/html;
    index  index.html index.htm;
}
error_page   500 502 503 504  /50x.html;
location = /50x.html {
    root   /usr/share/nginx/html;
}
}

我们需要对我们网站的这个文件进行一些修改。

  • 首先,我们需要添加一个 index.php
    选项作为我们的索引指令的第一个值,以允许在索引目录时提供 PHP
    索引文件
  • 我们还需要修改 server_name 指令以指向我们服务器的域名或公共 IP 地址
  • 实际的配置文件包括一些定义错误处理例程的注释行。我们将取消对那些包含该功能的注释
  • 对于实际的PHP处理,我们需要取消注释的一部分。我们还需要添加一个
    try_files 指令,以确保 Nginx 不会将错误的请求传递给我们的 PHP
    处理器

您需要做的更改在下面的文本中为红色。如果您愿意,您可以复制并粘贴所有内容,然后用server_name相应的域名或
IP 地址替换值:

server {
listen       80;
server_name  server_domain_name_or_IP;

# note that these lines are originally from the "location /" block
root   /usr/share/nginx/html;
index index.php index.html index.htm;

location / {
    try_files $uri $uri/ =404;
}
error_page 404 /404.html;
error_page 500 502 503 504 /50x.html;
location = /50x.html {
    root /usr/share/nginx/html;
}

location ~ .php$ {
    try_files $uri =404;
    fastcgi_pass unix:/var/run/php-fpm/php-fpm.sock;
    fastcgi_index index.php;
    fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
    include fastcgi_params;
}

}

进行上述更改后,可以保存并关闭文件。

重新启动Nginx进行必要的更改:

sudo systemctl restart nginx

指令

设置当前环境变量为DEV

fastcgi_param RUNTIME_ENVIROMENT 'DEV'

数据库帐号密码

fastcgi_param MYSQL_USERNAME 'root'
fastcgi_param MYSQL_PASSWORD 'root'

安装PHP-FPM

PHP-FPM,它可以把解释好的 PHP 交给 NGINX 服务器

sudo yum search php

先搜索一下 .. 这里会有一些 php72u 开头的包, 72表示 7.2 的 PHP .. 它们是
ius 仓库提供的包 ..

sudo yum install php72u-fpm -y

完成以后启动一下这个服务 ..

sudo systemctl start php-fpm

再让它可以开机自启动 ..

sudo systemctl enable php-fpm

另外还有一些常用的 php 扩展我们也可以再去安装一下 .. gd
提供了处理图像的功能 .. mysqlnd 还有 pdo 是跟数据库有关的扩展 .. mcrypt
是加密用的 .. mbstring 是处理多字节字符的扩展 .. 再加上一个 json ..
它可以处理 json 格式的数据 ..

sudo yum install php72u-gd php72u-mysqlnd php72u-pdo php72u-mcrypt php72u-mbstring php72u-json -y

完成以后我们可以重新加载一下 php-fpm ..

sudo systemctl reload php-fpm

第五步 – 在Web服务器上测试PHP处理

为了测试我们的系统正确配置PHP,我们可以创建一个非常基本的PHP脚本。

我们将调用这个脚本info.php。为了使 Nginx
能够找到文件并正确地提供该文件,它必须保存到一个特定的目录,称为“Web根目录”。

在 CentOS 7
中,此目录位于/usr/share/nginx/html/。我们可以通过键入以下内容在该位置创建文件:

sudo vi /usr/share/nginx/html/info.php

这将打开一个空白文件。我们想在文件中放入以下文本,这是有效的PHP代码:

<?php phpinfo(); ?>

完成后,保存并关闭文件。

现在我们可以测试我们的Web服务器是否可以正确显示PHP脚本生成的内容。要想这样做,我们只需要在我们的网络浏览器中访问这个页面。您将需要您的服务器的公共IP地址。

您要访问的地址将是:

http://your_server_IP_address/info.php

你所来的页面应该是这样的:

澳门新浦京电子游戏 2

这个页面基本上是从PHP的角度给出你关于你的服务器的信息。它对调试非常有用,并确保正确应用您的设置。

如果这是成功的,那么您的PHP正在按预期工作。

您可能希望在此测试后删除此文件,因为它可以向未经授权的用户实际提供有关您的服务器的信息。为此,您可以键入以下内容:

sudo rm /usr/share/nginx/html/info.php

如果您以后再次访问该信息,您可以随时重新创建此页面。

配置文件格式

在fastcgi_params文件中配置

fastcgi_param RUNTIME_ENVIROMENT 'DEV';
fastcgi_param MYSQL_USERNAME 'root';
fastcgi_param MYSQL_PASSWORD 'root';

在nginx.conf中配置

server {
    listen   80; 
    root /var/www;
    index index.php;
    server_name localhost;
    location /
    {   
         index index.php;
    }   

    location ~ .*.(php|php5)?$ {
        fastcgi_pass 127.0.0.1:9000;
        fastcgi_index index.php;
        include fastcgi_params;
    }   
}

NGINX 配置

下面创建一个基本的可以运行 php 应用的 NGINX 配置文件,把它放到
/etc/nginx/conf.d 这个目录的下面吗,名字可以是 php.basic.conf

sudo vi /etc/nginx/conf.d/php.basic.conf

server {
  listen        80;
  server_name   IPADDRESS DOMAIN;
  root          /home/www/default;
  index         index.php index.html;

  location / {
    try_files $uri $uri/ /index.php?$query_string;
  }

  location ~ .php$ {
    fastcgi_pass 127.0.0.1:9000;
    fastcgi_index index.php;
    include fastcgi.conf;
  }
}

先添加一个 server 区块 .. 然后用一个 listen 指令设置一下监听的端口号 ..
另起一行 .. 再用一个 server_name , 先用一下服务器的 ip 地址 ..
,因为我们还没有特别想要使用的主机名 ..

再用 root 指令设置一下这个网站应用的根目录 .. 比如放在 /home/www/default
这个目录的下面 ..

index 指定可以设置一些默认打开的文件 .. 再这个 server 区块里,再定义一个
location 区块 ..

里面添加一行指令 try_files $uri $uri/ /index.php?$query_string;
它可以实现网站的地址重写功能 ..

然后我们需要让这个网站应用可以处理 php 脚本 … 再添加一个 location
,它匹配的是对 php 文件的请求 ..

在它里面再添加几行指令 .. 主要就是告诉 NGINX 怎么样处理 PHP 脚本 。

fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
include fastcgi.conf;

完成以后保存一下这个配置文件 .. 再去创建需要的目录 .. sudo mkdir -p
/home/www/default

修改一下目录的拥有者,把拥有者改成当前登录的用户

sudo chown -R newuser /home

在创建的这个 default 目录的下面再去添加一个 php 文件

vi /home/www/default/phpinfo.php 

在这个文件里用一个 phpinfo() 函数

<?php phpinfo();?>

保存一下 ,然后重新加载一下 NGINX

sudo systemctl reload nginx 

在浏览器里直接打开服务器的 IP 地址 ,后面加上 phpinfo.php ,会显示 PHP
相关的信息

http://IPADDRESS/phpinfo.php

说明已经可以处理 PHP 脚本了
到这里为止一个LEMP环境就搭建好了。

结论

现在您已经安装了LEMP堆栈,您可以选择下一步做什么。基本上,您已经安装了一个平台,您可以在服务器上安装大多数网站和网络软件。

本文永久更新链接地址:http://www.linuxidc.com/Linux/2017-05/143867.htm

澳门新浦京电子游戏 3

为PHP脚本设置环境变量

为当前用户临时设置

临时设置只需要执行

export KEY=VALUE

为当前用户永久设置

~/.bashrc(不同系统各有不同)中写

为所有用户(不包括root)设置

创建文件/etc/profile.d/test.sh,写入

KEY=VALUE

为所有用户(包括root)设置

/etc/environment中写入

KEY=VALUE

注意,这个文件的生效时间是用户登录时,所以对于root来说,需要重启机器

在Supervisor中设置

有的时候PHP脚本是用Supervisor来控制的,所以记得设置supervisor配置中的environment项

在PHP中调用服务器环境变量

在PHP中有两个调用方式:

$env = getenv('RUNTIME_ENVIROMENT');

还有超全局变量方式:

$env = $_SERVER['RUNTIME_ENVIROMENT'];

发表评论

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