阿里云 CentOS7 + Nginx + PHP7 环境安装及配置

新购阿里云ECS,使用 CentoOS 7.4 初始化,尝试编译安装 Nginx,失败,于是决定用 yum 安装,非常简单,继续使用 yum 安装 PHP 7。

登录

建议使用密钥对登录阿里云ECS,会更安全。

创建用户及目录

  1. 阿里云 centos 7.4 初始化服务器
  2. ssh 登录
  3. mkdir -p /web/www
  4. adduser www 这里会自动创建 www 用户组,可以使用 cat /etc/group 查看组列表,或使用 cat /etc/passwd 查看用户列表;如果要手动创建组,请使用 groupadd www 之后,useradd www -g www 注:adduser 等同于 useradd
  5. chown www:www /web/www

安装 nginx

使用 yum 安装预编译的 nginxhttp://nginx.org/en/linux_packages.html#stable

  1. 创建文件 /etc/yum.repos.d/nginx.repo 内容参考文档。
  2. yum install nginx
  3. complete!
  4. 启动 systemctl start nginx.serviceusr/sbin/nginx(可以使用 which nginx 查看安装路径)

配置 nginx

find / -name nginx 查找安装后的相关路径

默认 nginx 安装目录在 /etc/nginx/ 可以找到 nginx.confconf.d/default.conf,编辑 nginx.confuserwww(之前设置的用户,需要后面跟 php-fpm 一致,nginx.conf 默认为 nginxphp-fpm 默认为 apache);

nginx 日志文件在 var/log/nginx 可以在 /etc/nginx/nginx.conf 看到。

开启 gzip 及 缓存

vi /etc/nginx/nginx.conf 加入以下代码,/usr/sbin/nginx -s reload 重载

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
# 开启gzip
gzip on;

# 启用gzip压缩的最小文件,小于设置值的文件将不会压缩
gzip_min_length 1k;

# gzip 压缩级别,1-10,数字越大压缩的越好,也越占用CPU时间,后面会有详细说明
gzip_comp_level 2;

# 进行压缩的文件类型。javascript有多种形式。其中的值可以在 mime.types 文件中找到。
gzip_types text/plain application/javascript application/x-javascript text/css application/xml text/javascript application/x-httpd-php image/jpeg image/gif image/png font/ttf font/otf image/svg+xml;

# 是否在http header中添加Vary: Accept-Encoding,建议开启
gzip_vary on;

# 禁用IE 6 gzip
gzip_disable "MSIE [1-6]\.";

/etc/nginx/conf.d/default.conf 中加入以下代码,/usr/sbin/nginx -s reload 重载

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
# 缓存配置
location ~* ^.+\.(ico|gif|jpg|jpeg|png)$ {
access_log off;
expires 30d;
}

location ~* ^.+\.(css|js|txt|xml|swf|wav)$ {
access_log off;
expires 24h;
}

location ~* ^.+\.(html|htm)$ {
expires 1h;
}

location ~* ^.+\.(eot|ttf|otf|woff|svg)$ {
access_log off;
expires max;
}

安装 php

使用 https://webtatic.com/packages/php71/

设置 webtatic 仓库:

1
2
rpm -Uvh https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm
rpm -Uvh https://mirror.webtatic.com/yum/el7/webtatic-release.rpm

安装配置

  1. 安装 yum install php71w-fpm php71w-opcache php71w-common php71w-intl php71w-mbstring php71w-xml php71w-mysqlnd php71w-pecl-imagick php71w-pecl-memcached php71w-pecl-redis php71w-soap,具体对应的扩展参照 webtatic 页面。yum install php71w-gd to install more modules.
  2. 编辑 /etc/php-fpm.d/www.confusergroupwww
  3. 编辑 /etc/conf.d/default.conf
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
server {
...

root /web/www/default;
index index.php;

...

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

...

# pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
#
location ~ \.php$ {
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
...
}

注意:关于 fastcgi 配置部分 把 /scripts 改为 $document_root;

启动

systemctl start php-fpm.service/usr/sbin/php-fpm

创建 web 页面

1
2
3
4
5
su www
cd /web/www
mkdir default
cd default
vi index.php

填入

1
2
<?php
phpinfo();

浏览器输入你的 ip 地址,没意外应该会打印 phpinfo() 信息

参考:https://www.vultr.com/docs/how-to-install-php-7-x-on-centos-7
http://www.jianshu.com/p/b4631a899030

启动项

参考:http://www.jianshu.com/p/b5fa86d54685

1
2
3
4
systemctl start nginx.service
systemctl start php-fpm.service
systemctl enable nginx.service
systemctl enable php-fpm.service

即可完成添加启动命令,重启服务看看是否可以自动启动,如不行,可以尝试在 rc.local 中加入以下命令

1
2
systemctl start nginx.service
systemctl start php-fpm.service

安装 git

  1. yum install git
  2. git --version

安装 composer

  1. https://getcomposer.org/download/
  2. 全局可用mv composer.phar /usr/bin/composer
  3. which composer 可以看到 /usr/bin/composer
  4. composer self-update 测试正常