资讯专栏INFORMATION COLUMN

一步一步搭建 PHP 服务器环境

genedna / 2875人阅读

摘要:这两天翻了翻之前的技术文档,发现有一篇值得拿出来和大家分享如何给一台全新的阿里云服务器,搭建环境来部署项目,项目等。

这两天翻了翻之前的技术文档,发现有一篇值得拿出来和大家分享:如何给一台全新的阿里云服务器,搭建环境 —— 来部署 PHP 项目,Node.js 项目等。

让我们开始吧:

1. 利用 Docker 制作 Centos 服务器
2. 安装 Nginx
3. 安装 PHP 7
4. 安装 composer
5. 安装Node.js
6. 安装 git 和 svn

利用 Docker 制作 Centos 服务器

因为我自己没有阿里云服务器,所以没法在真实的服务器上搭建环境;但我们可以利用 Docker 来模拟。

首先需要一个 systemd 整合的 Centos 镜像。

Dockerfile 内容如下所示:

FROM daocloud.io/centos:7

MAINTAINER "yemeishu" 
ENV container docker
RUN (cd /lib/systemd/system/sysinit.target.wants/; for i in *; do [ $i == 
systemd-tmpfiles-setup.service ] || rm -f $i; done); 
rm -f /lib/systemd/system/multi-user.target.wants/*;
rm -f /etc/systemd/system/*.wants/*;
rm -f /lib/systemd/system/local-fs.target.wants/*; 
rm -f /lib/systemd/system/sockets.target.wants/*udev*; 
rm -f /lib/systemd/system/sockets.target.wants/*initctl*; 
rm -f /lib/systemd/system/basic.target.wants/*;
rm -f /lib/systemd/system/anaconda.target.wants/*;
VOLUME [ "/sys/fs/cgroup" ]
CMD ["/usr/sbin/init"]

然后就可以启动容器了,但这里要避免「运行Docker 使用systemctl报错」的问题,解决方案是:挂载 /sys/fs/cgroup 目录到容器的 /sys/fs/cgroup 目录并配置只读权限,但是docker run 命令只能使用-d参数,不能使用-it参数,使用-it参数仍然会卡死。

docker run -d -v /sys/fs/cgroup:/sys/fs/cgroup:ro local/centos7-systemd

参考: https://github.com/docker-library/docs/tree/master/centos

运行容器:

当我们运行 vim 想打开编辑某个文件时,发现 vim 并没有安装,这时候我们可以直接在容器中安装,但为了模拟的更彻底,我们再修改修改 Dockerfile 文件,让镜像带上 vim:

FROM daocloud.io/centos:7

MAINTAINER "yemeishu" 
ENV container docker
RUN yum -y install vim-enhanced

RUN yum -y install vim*

RUN (cd /lib/systemd/system/sysinit.target.wants/; for i in *; do [ $i == 
systemd-tmpfiles-setup.service ] || rm -f $i; done); 
rm -f /lib/systemd/system/multi-user.target.wants/*;
rm -f /etc/systemd/system/*.wants/*;
rm -f /lib/systemd/system/local-fs.target.wants/*; 
rm -f /lib/systemd/system/sockets.target.wants/*udev*; 
rm -f /lib/systemd/system/sockets.target.wants/*initctl*; 
rm -f /lib/systemd/system/basic.target.wants/*;
rm -f /lib/systemd/system/anaconda.target.wants/*;
VOLUME [ "/sys/fs/cgroup" ]
CMD ["/usr/sbin/init"]

制作镜像,生成容器,运行容器,验证 vim 是否安装成功,直接看图:

安装工具

有了 「centos 服务器」了,我们开始配置 PHP (Laravel / Lumen) 环境了。

安装 Nginx

安装 Nginx 之前,我们需要修改 yum 源镜像,我们使用阿里云的,

首先安装 wget:

yum install wget -y
# CentOS 5
wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-5.repo

# CentOS 6
wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-6.repo

# CentOS 7
wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo

yum clean all
yum -y install epel-release
yum install nginx -y
systemctl start nginx
systemctl enable nginx // 开机自启动

安装 PHP 7

添加源:

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

安装:

yum  install  php70w -y

安装常规需要使用的 php 插件:

yum install php70w-json php70w-xml php70w-mbstring php70w-mysqlnd php70w-fpm -y
安装 composer

Composer 是 PHP 的一个依赖管理工具。它允许你申明项目所依赖的代码库,它会在你的项目中为你安装他们。
Composer 不是一个包管理器。是的,它涉及 "packages" 和 "libraries",但它在每个项目的基础上进行管理,在你项目的某个目录中(例如 vendor)进行安装。默认情况下它不会在全局安装任何东西。因此,这仅仅是一个依赖管理。

这种想法并不新鲜,Composer 受到了 node"s npm 和 ruby"s bundler 的强烈启发。而当时 PHP 下并没有类似的工具。

Composer 将这样为你解决问题:

a) 你有一个项目依赖于若干个库。

b) 其中一些库依赖于其他库。

c) 你声明你所依赖的东西。

d) Composer 会找出哪个版本的包需要安装,并安装它们(将它们下载到你的项目中)。
参考:http://docs.phpcomposer.com/00-intro.html

1.使用 php 命令安装

# 下载安装脚本 - composer-setup.php - 到当前目录。
php -r "copy("https://install.phpcomposer.com/installer", "composer-setup.php");"

# 执行安装过程。
php composer-setup.php

# 删除安装脚本。
php -r "unlink("composer-setup.php");"

# 打开命令行窗口并执行如下命令将前面下载的 composer.phar 文件移动到 /usr/local/bin/ 目录下面
mv composer.phar /usr/local/bin/composer

更多查看:https://getcomposer.org/download/

2.使用 Packagist / Composer 中国全量镜像加速

修改 composer 的全局配置文件(推荐方式)

composer config -g repo.packagist composer https://packagist.phpcomposer.com

更多查看:https://pkg.phpcomposer.com/

3.并行 composer install,让下载如有神助

composer global require hirak/prestissimo

4.实时更新

提示:不要忘了经常执行 composer selfupdate 以保持 Composer 一直是最新版本哦!

安装 Node.js
yum -y install nodejs npm --enablerepo=epel

安装国内镜像:

npm install -g cnpm --registry=https://registry.npm.taobao.org

安装 n 来管理和选择nodejs版本 // 保持和现有服务器版本一致

cnpm install -g n

安装最新的stable版:

n stable

或者安装指定版本:如 n 0.8.20

安装 git 和 svn
yum -y install git
yum -y install subversion

测试

现在基础的工具和环境已经有了,那我们开始试试效果,安装一个 Lumen 项目试试:


配置 nginx。在/etc/nginx/conf.d/ 路径下创建 blog.conf

server {
    listen       80;
    server_name  blog.xxx.com;
    #index index.php index.html;

    location / {
        root /www/html/blog/public;
        try_files $uri $uri/ /index.php?$query_string;
        index index.php index.html index.htm;
    }

    location ~ .php$ {
        #try_files $uri = 404;
        fastcgi_index  index.php;
        fastcgi_param SCRIPT_FILENAME /www/html/blog/public$fastcgi_script_name;
        include fastcgi_params;
        fastcgi_pass 127.0.0.1:9000;
    }
}

启动php-fpm,然后利用 curl 命令访问试试:

可以正常打印出:Lumen (5.5.0) (Laravel Components 5.5.*),表示我们的 nginx 和 php-fpm 启动并配置成功了。

总结

温故而知新,本文继续通过简单的学习 docker 模拟 Centos 服务器来配置环境。

如果你有阿里云服务器或者腾讯云服务器,并且是 Centos 7 系统的,正常通过以上的步骤,安装必要的工具,部署常规的 PHP 或者 Node.js 项目应该问题不大了。接下来就可以部署常规的运营工具和防护工具了。

下面罗列一些问题和知识点:

1. centos7 docker容器报 docker Failed to get D-Bus connection 错误

报这个错的原因是 dbus-daemon 没能启动。systemctl 并不是不能使用。将 CMD 或者 entrypoint 设置为 /usr/sbin/init 即可。docker 容器会自动将 dbus 等服务启动起来。如下:

docker run --privileged -ti --name test  docker.io/centos:7  /usr/sbin/init

2. 报Error: xz compression not available 的解决方法

yum remove epel-release
# Sometimes that is not enough, you need to remove the cache as well by:

rm -rf /var/cache/yum/x86_64/6/epel
# Then you can install the epel-release again

yum -y install epel-release

# yum clean all is doing great for cleaning the cache

3. FastCgi 与 php-fpm之间是个什么样的关系?

可以详细参考这篇帖子:https://segmentfault.com/q/1010000000256516

「完」


coding01 期待您关注


感谢您能看到这了

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/27048.html

相关文章

  • 步一搭建 PHP 务器环境

    摘要:这两天翻了翻之前的技术文档,发现有一篇值得拿出来和大家分享如何给一台全新的阿里云服务器,搭建环境来部署项目,项目等。 showImg(https://segmentfault.com/img/remote/1460000011106825); 这两天翻了翻之前的技术文档,发现有一篇值得拿出来和大家分享:如何给一台全新的阿里云服务器,搭建环境 —— 来部署 PHP 项目,Node.js ...

    xcold 评论0 收藏0
  • Ubuntu16.04搭建LAMP环境

    摘要:简介操作系统网页服务器数据库管理系统脚本语言注以下开始进行的是分步安装,如果你想一步安装请跳过,拉到页面底部,当然你得首先安装好自己的系统安装服务器如果你自己装过虚拟机或者有更好的安装技巧可跳过,这只是博主自己安装的方法此安装方式操作的是下 LAMP简介 L:Linux操作系统A:Apache网页服务器M:Mysql数据库管理系统P:Php脚本语言 注:以下开始进行的是分步安装,如果...

    cc17 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<