Шаг за шагом, чтобы создать серверную среду PHP

PHP сервер Docker Composer

group_5622_0
group_5622_0

За последние два дня я просмотрел предыдущие технические документы и обнаружил, что есть один, которым стоит поделиться с вами: как создать среду для совершенно нового сервера Alibaba Cloud — для развертывания проектов PHP, проектов Node.js и т. д.

Давайте начнем:

1.Создайте сервер Centos с помощью Docker
2.Установите Nginx
3.Установите PHP 7
4.установить композитор
5.Установите Node.js
6.Установите git и svn

Создайте сервер Centos с помощью Docker

Поскольку у меня самого нет сервера Alibaba Cloud, я не могу создать среду на реальном сервере, но мы можем использовать Docker для ее моделирования.

Сначала вам нужен интегрированный в systemd образ Centos.

Содержимое Dockerfile выглядит следующим образом:

FROM daocloud.io/centos:7

MAINTAINER "yemeishu" <yemeishu@126.com>
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 может использовать только параметр -d, а не параметр -it, и параметр -it все равно будет зависать.

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

Ссылаться на:GitHub.com/docker-case пациент…

Запустите контейнер:

Когда мы запускаем vim для открытия и редактирования файла, мы обнаруживаем, что vim не установлен.В настоящее время мы можем установить его непосредственно в контейнер, но для более тщательного моделирования мы изменим файл Dockerfile, чтобы привести vim к изображение:

FROM daocloud.io/centos:7

MAINTAINER "yemeishu" <yemeishu@126.com>
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, мы используем Alibaba Cloud,

Сначала установите 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 — это инструмент управления зависимостями для PHP. Он позволяет вам объявить кодовые базы, от которых зависит ваш проект, и установит их для вас в вашем проекте.
Composer не является менеджером пакетов. Да, это включает в себя «пакеты» и «библиотеки», но они управляются для каждого проекта отдельно, устанавливаясь в какой-либо каталог вашего проекта (например, поставщик). По умолчанию он ничего не устанавливает глобально. Так что это просто управление зависимостями.

Эта идея не нова, Composer во многом вдохновлен npm узла и сборщиком ruby. В то время не было подобного инструмента под PHP.

Composer решит проблему для вас следующим образом:

а) У вас есть проект, который зависит от нескольких библиотек.

б) Некоторые из этих библиотек зависят от других библиотек.

c) вы объявляете, от чего зависите.

г) Composer определит, какие версии пакетов нужно установить, и установит их (загрузит в свой проект).
Ссылаться на:docs.PHP composer.com/00-intro.contracts…

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

Узнать больше:getcomposer.org/download/

2. Используйте ускорение полного изображения Packagist / Composer China.

Изменить глобальный файл конфигурации композитора (рекомендуется)

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

Узнать больше:pkg.phpcomposer.com/

3. Установите параллельный композитор, пусть загрузка поможет

composer global require hirak/prestissimo

4. Обновления в реальном времени

Совет: Не забывайте часто запускать самообновление композитора, чтобы поддерживать 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

Установите последнюю стабильную версию:

n stable

Или установите указанную версию: например,n 0.8.20

Установите git и svn

yum -y install git
yum -y install subversion

контрольная работа

Теперь, когда доступны основные инструменты и среда, давайте начнем пробовать эффект и установим проект Lumen, чтобы попробовать:


Настроить нгинкс. Создайте blog.conf по пути /etc/nginx/conf.d/

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.

Если у вас есть облачный сервер Alibaba или облачный сервер Tencent, и это система Centos 7, не должно возникнуть проблем с обычным выполнением вышеуказанных шагов, установкой необходимых инструментов и развертыванием обычных проектов PHP или Node.js. Далее можно развернуть обычные операционные инструменты и средства защиты.

Вот некоторые вопросы и точки знаний:

1.Контейнер docker centos7 сообщает, что docker не удалось получить ошибку подключения D-Bus

Причина этой ошибки в том, что не удалось запустить dbus-daemon. systemctl нельзя использовать. Просто установите CMD или точку входа в /usr/sbin/init. Контейнер Docker автоматически запускает такие службы, как dbus. следующее:

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

2.Сообщить об ошибке: сжатие xz недоступно решение

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?

Вы можете обратиться к этому сообщению для деталей:сегмент fault.com/please/101000000…

"Заканчивать"


coding01 с нетерпением ждет вашего внимания

qrcode
qrcode


спасибо, что увидели это

qrcode
qrcode