从零开始搭建网站环境(php-yaf nginx mariadb)第二章

上一章我们讲了如何购买域名及与IP的绑定,这一章我打算说说服务器的环境配置

系统:CentOS 7

我的环境依赖于Docker,什么?不知道Docker?百度去……

注:
我这里开启 防火墙会导致 nginx 502错误,为了不影响后续的操作,建议先 关闭防火墙
操作防火墙状态后需要重启Docker服务

先从安装Docker开始:

  • 首先切到root用户下:

    [zeronofreya@vultr ~]$ su
    Password:
    [root@vultr zeronofreya]#
  • 安装 Docker

    yum -y install docker
  • 启动 Docker 服务

    systemctl start docker.service
  • 配置 Docker 开机自启动

    systemctl enable docker.service

至此,Docker已经安装完毕……但为了更好地玩耍,我建议一并安装docker-compose

  • 安装pip工具

    yum -y install epel-release
    yum install -y python-pip
  • 升级pip版本

    pip install --upgrade pip
  • 安装docker-compose

    pip install -U docker-compose

OK,准备工作做好了

安装环境

在根目录新建文件夹docker方便管理(当然你也可以在你喜欢的地方建立)

mkdir /docker && cd "$_"

安装php

  • 在docker文件夹下建立php文件夹并进入

    mkdir php && cd "$_"
  • 新建并编辑 docker-compose.yml 文件

    vi docker-compose.yml

    内容为:

version: "3.5"

networks:
  zf_site_network:
    name: zf_site_network

services:
  php:
    container_name: php
    image: php:7.2-fpm
    privileged: true
    ports:
      - "9000:9000"
    restart: always
    volumes:
      - /docker/www:/usr/share/nginx/www
    networks:
      - zf_site_network
    environment:
      - TZ=Asia/Shanghai
  • 启动php容器

    docker-compose up -d
  • 挂载配置文件(php.ini)

    • 新建conf文件夹

      mkdir conf
    • 复制php.ini到conf

      docker cp php:/usr/local/etc/php/php.ini /docker/php/conf
    • 挂载conf目录——编辑docker-compose.yml

      vi docker-compose.yml
volumes:
    - /docker/www:/usr/share/nginx/www

改为:

volumes:
  - /docker/www:/usr/share/nginx/www
  - /docker/php/conf:/usr/local/etc/php
  • 重新创建php容器

    docker-compose up -d

安装Nginx

  • 在docker文件夹下建立nginx文件夹并进入

    cd /docker
    mkdir nginx && cd "$_"
  • 新建并编辑 docker-compose.yml 文件

    vi docker-compose.yml

    内容为:

version: "3.5"

networks:
    zf_site_network:
        name: zf_site_network

services:
    nginx:
        container_name: nginx
        image: nginx
        privileged: true
        ports:
            - "80:80"
            - "443:443"
        restart: always
        volumes:
            - /docker/www:/usr/share/nginx/www
            - /docker/nginx/conf:/etc/nginx/conf.d
        networks:
            - zf_site_network
        environment:
            - TZ=Asia/Shanghai
  • 编辑nginx配置文件

    • 在nginx文件夹下建立conf文件夹并进入

      mkdir conf && cd "$_"
    • 新建配置文件

      vi 你的域名_80.conf
      比如 vi zeronofreya.online_80.conf, 文件名可以随意起,但为了查找方便,建议统一格式

      内容为:(注意修改)

server {
    listen        80;
    server_name  你的域名;
    root   网站根目录;
    location / {
        index index.php index.html;
    }
     if (!-e $request_filename) {
         rewrite ^/(.*)  /index.php/$1 last;
    }
    location ~ \.php(.*)$ {
        fastcgi_pass   php:9000;
        fastcgi_index  index.php;
        fastcgi_split_path_info  ^((?U).+\.php)(/?.+)$;
        fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;
        fastcgi_param  PATH_INFO  $fastcgi_path_info;
        fastcgi_param  PATH_TRANSLATED  $document_root$fastcgi_path_info;
        include        fastcgi_params;
    }
}
  • 建立网站目录

    cd /docker
    mkdir www && cd "$_"
    echo "" > info.php
    网站目录可以随意选位置
  • 启动nginx容器

    docker-compose up -d
注:php一定要先于nginx启动,因为nginx配置文件中用到了 fastcgi_pass php:9000;,这个php指的就是容器名(container_name)

不出意外的话,php及nginx应该都启动成功了,可以查看一下:

docker ps -a

09.png
STATUS的状态为Up即代表启动成功。

让我们到浏览器中看一下效果吧:
访问 http://你的域名地址
看到下图就表示成功了
10.png

安装Yaf扩展 (总归要有一个框架吧)

  • 进入php容器

    docker exec -it php /bin/bash
  • 安装Yaf

    pecl install yaf
  • 退出容器

    exit
  • 编辑php.ini 在最底部(头部)添加Yaf配置,注意格式

    vi /docker/php/conf/php.ini
    [Yaf] 
    extension=yaf.so 
    yaf.environ="product"
  • 重启php容器

    docker restart php

刷新下浏览器,按Ctrl+F查找yaf,如果显示下图,就说明成功了
11.png

安装mariadb

  • 在docker文件夹下建立mariadb文件夹并进入

    cd /docker
    mkdir mariadb && cd "$_"
    mkdir db
  • 新建并编辑 docker-compose.yml 文件

    vi docker-compose.yml

    内容为:(注意修改密码)

version: "3.5"

networks:
  zf_site_network:
    name: zf_site_network

services:
  mariadb:
    container_name: mariadb
    image: mariadb
    privileged: true
    ports:
      - "3306:3306"
    restart: always
    volumes:
      - /docker/mariadb/db:/var/lib/mysql
    networks:
      - zf_site_network
    environment:
      - MYSQL_ROOT_PASSWORD=密码
      - TZ=Asia/Shanghai
    command: --character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci
  • 启动mariadb容器

    docker-compose up -d

好了,环境大致上搭完了。

未完待续……

目录:
从零开始搭建网站环境(php-yaf nginx mariadb)第一章
从零开始搭建网站环境(php-yaf nginx mariadb)第二章
从零开始搭建网站环境(php-yaf nginx mariadb)第三章
从零开始搭建网站环境(php-yaf nginx mariadb)番外篇——跨域

你可能感兴趣的:(php,yaf,nginx,mariadb)