这两天翻翻之前的技术文档,发现了一篇值得分享给大家的文章:如何搭建全新的阿里云服务器环境——部署PHP项目,Node.js项目等。开始吧:1.使用Docker制作Centos服务器2.安装Nginx3。安装PHP74。安装composer5。安装Node.js6。安装git和svn使用Docker制作Centos服务器。环境搭建在真实服务器上;但是我们可以用Docker来模拟。首先你需要一个systemd集成的Centos镜像。Dockerfile内容如下:FROMdaocloud.io/centos:7MAINTAINER"yemeishu"ENV容器dockerRUN(cd/lib/systemd/system/sysinit.target.wants/;foriin*;做[$i==\systemd-tmpfiles-setup.service]||rm-f$i;完成);\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"]然后就可以启动容器了,但是这里要避免"runningDockerusingsystemctlerror",解决方法是:将/sys/fs/cgroup目录挂载到容器的/sys/fs/cgroup目录并配置只读权限,但是dockerrun命令只能使用-d参数,不能使用-it参数,使用-it参数还是会卡。dockerrun-d-v/sys/fs/cgroup:/sys/fs/cgroup:rolocal/centos7-systemd参考:https://github.com/docker-library/docs/tree/master/centos运行容器:当我们运行vim,想打开和编辑一个文件时,发现vim没有安装。这时候我们可以直接安装在容器中,但是为了模拟的更彻底,我们会修改Dockerfile文件,让镜像自带vim:FROMdaocloud.io/centos:7MAINTAINER"yemeishu"ENV容器dockerRUNyum-y安装vim-enhancedRUNyum-y安装vim*RUN(cd/lib/systemd/system/sysinit.target.wants/;foriin*;do[$i==\systemd-tmpfiles-setup.service]||rm-f$i;完成);\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是否安装成功,看图即可:安装工具有“centosserver”现在,我们开始配置PHP(Laravel/Lumen)环境。安装Nginx在安装Nginx之前,我们需要修改yum源镜像。我们使用阿里云,首先安装wget:yuminstallwget-y#CentOS5wget-O/etc/yum.repos.d/CentOS-Base.repohttp://mirrors.aliyun.com/repo/Centos-5.repo#CentOS6wget-O/etc/yum.repos.d/CentOS-Base.repohttp://mirrors.aliyun.com/repo/Centos-6.repo#CentOS7wget-O/etc/yum.repos.d/CentOS-Base.repohttp://mirrors.aliyun.com/repo/Centos-7.repoyumcleanallyum-yinstallepel-releaseyuminstallnginx-ysystemctlstartnginxsystemctlenablenginx//在开机时安装PHP7添加源:rpm-Uvhhttps://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpmrpm-Uvhhttps://mirror.webtatic.com/yum/el7/webtatic-release.rpm安装:yuminstallphp70w-y安装常用的php插件:yuminstallphp70w-jsonphp70w-xmlphp70w-mbstringphp70w-mysqlndphp70w-fpm-yinstallcomposerComposer是PHP的依赖管理工具。它允许您声明您的项目所依赖的代码库,并将它们安装到您的项目中。Composer不是包管理器。是的,它涉及“包”和“库”,但它是在每个项目的基础上进行管理的,安装在项目的某个目录中(例如供应商)。默认情况下它不会全局安装任何东西。所以这只是一个依赖管理。这个想法并不新鲜,Composer深受node的npm和ruby??的bundler的启发。当时PHP下还没有类似的工具。Composer会像这样为您解决问题:a)您有一个项目依赖于多个库。b)其中一些库依赖于其他库。c)你声明你所依赖的。d)Composer将确定需要安装哪些版本的包,并安装它们(将它们下载到您的项目中)。参考:http://docs.phpcomposer.com/00-intro.html1。使用php命令安装#下载安装脚本——composer-setup.php——到当前目录。php-r"copy('https://install.phpcomposer.com/installer','composer-setup.php');"#执行安装过程。phpcomposer-setup.php#删除安装脚本。php-r"unlink('composer-setup.php');"#打开命令行窗口,执行以下命令将之前下载的composer.phar文件移动到/usr/local/bin/目录下mvcomposer.phar/usr/local/bin/composer查看更多:https://getcomposer.org/download/2。使用Packagist/Composer中国全镜像加速修改composer的全局配置文件(推荐方法)composerconfig-grepo.packagistcomposerhttps://packagist.phpcomposer.com查看更多:https://pkg.phpcomposer.com/3.parallelcomposerinstall,让下载如果有任何帮助composerglobalrequirehirak/prestissimo4。实时更新提示:不要忘记经常执行composerselfupdate让Composer始终保持最新版本!安装Node.jsyum-yinstallnodejsnpm--enablerepo=epel安装国内镜像:npminstall-gcnpm--registry=https://registry.npm.taobao.orginstalln管理选择nodejs版本//保留和现有服务器版本相同。cnpminstall-gn安装最新稳定版:nstable或安装指定版本:如n0.8.20installgitandsvnyum-yinstallgityum-yinstallsubversiontest现在基本的工具和环境都具备了,那我们就开始吧试试效果,安装一个Lumen工程试试:配置nginx。在/etc/nginx/conf.d/路径下创建blog.confserver{listen80;服务器名称blog.xxx.com;#indexindex.phpindex.html;位置/{root/www/html/blog/public;try_files$uri$uri//index.php?$query_string;indexindex.phpindex.htmlindex.htm;}location~\.php${#try_files$uri=404;fastcgi_indexindex.php;fastcgi_paramSCRIPT_FILENAME/www/html/blog/public$fastcgi_script_name;包括fastcgi_params;fastcgi_pass127.0.0.1:9000;}}启动php-fpm,然后使用curl命令访问:可以正常打印:Lumen(5.5.0)(LaravelComponents5.5.*),说明我们的nginx和php-fpm已经启动并配置好了成功地。综上所述,温故知新,本文继续简单学习docker模拟Centos服务器配置环境。如果你有阿里云服务器或者腾讯云服务器,并且是Centos7系统,那么正常走完上面的步骤,安装必要的工具,部署一个普通的PHP或者Node.js项目。应该问题不大。然后您可以部署常规操作工具和保护工具。下面是一些问题和知识点:1、centos7docker容器报dockerFailedtogetD-Busconnection。出现此错误的原因是dbus-daemon未能启动。systemctl并非不可用。只需将CMD或入口点设置为/usr/sbin/init。docker容器会自动启动dbus等服务。如下:dockerrun--privileged-ti--nametestdocker.io/centos:7/usr/sbin/init2.报错:xzcompressionnotavailable解决方法yumremoveepel-release#有时候这样还不够,还需要去掉缓存:rm-rf/var/cache/yum/x86_64/6/epel#然后就可以安装了epel-releaseagainyum-yinstallepel-release#yumcleanall非常适合清理缓存3。FastCgi和php-fpm有什么关系?详细可以参考这个帖子:https://segmentfault.com/q/1010000000256516《完》coding01期待大家的关注谢谢看到这里