摘要:安装系统本次安装的是的最小化版本,以下操作在用户下进行。在搭建完该环境后,笔者使用作为开发,配置使其可以直接调试虚拟机上的代码即开发环境下代码是运行在虚拟机上的。通过该方法,可以最大程度地确保开发环境与生产环境的一致性。
安装系统
本次安装的是Centos7.3的最小化版本,以下操作在root用户下进行。在搭建完该环境后,笔者使用phpstorm作为开发ide,配置phpstorm使其可以直接调试虚拟机上的代码(即开发环境下代码是运行在虚拟机上的)。通过该方法,可以最大程度地确保开发环境与生产环境的一致性。(phpstrom xdebug的配置请参考官方文档phpstorm上使用debug)
网络配置 1.动态ip配置(nat或桥接)进入/etc/sysconfig/network-scripts,找到网卡对应的配置文件(eg:ifcfg-ens0s3),配置下面的内容
TYPE=Ethernet PROXY_MEHTOD=none BROWSER_ONLY=no BOOTPROTO=dpcp DEFROUTE=yes IPV4_FAILURE_FATAL=no IPV6INIT=yes IPV6_AUTOCONF=yes IPV6_DEFROUTE=yes IPV6_FAILURE_FATAL=no IPV6_ADDR_GEN_MODE=stable-privacy NAME=ens0s3 UUID=ac3c6922-c33b-4f8b-8d7f-13a958b0ffff(这里按照已有的,不需要更改) DEVICE=ens0s3 ONBOOT=yes2.host-only网络配置
在vm中添加一个host-only网络,并将其分配给相应的虚拟机
进入虚拟机后通过ip addr命令可以看到多了一个网络接口(假设为enp0s8),为接口生成uuid(uuidgen enp0s8)(ac3c6922-c33b-4f8b-8d7f-13a958b0807f)
在/etc/sysconfig/network-scripts下添加相应的网络接口配置文件
TYPE=Ethernet PROXY_MEHTOD=none BROWSER_ONLY=no BOOTPROTO=static DEFROUTE=yes IPV4_FAILURE_FATAL=no IPV6INIT=yes IPV6_AUTOCONF=yes IPV6_DEFROUTE=yes IPV6_FAILURE_FATAL=no IPV6_ADDR_GEN_MODE=stable-privacy NAME=ens0s8 UUID=ac3c6922-c33b-4f8b-8d7f-13a958b0807f DEVICE=ens0s8 ONBOOT=yes IPADDR=192.168.56.102 GATEWAY=192.168.56.1 NETMASK=255.255.255.03.重启网络
重启网络:systemctl restart network
软件源配置笔者使用了阿里的软件源,按照https://opsx.alibaba.com/mirror的方法进行操作即可
添加epel源方法1:
wget -P /etc/yum.repos.d/ http://mirrors.aliyun.com/repo/epel-7.repo yum clean all yum makecache
方法2:
wget http://d.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm rpm -ivh ./epel-release-latest-7.noarch.rpm yum clean all yum makecache更新系统
执行以下命令:
sudo yum update sudo yum upgrade虚拟机增强功能与共享文件夹创建 安装增强功能(guest additions)
1.安装kernel-devel和gcc :sudo yum install -y "kernel-devel-$(uname -r)" gcc bzip2 2.加载guest additions光盘 3.mkdir /mnt/cdrom 4.mount -t auto -r /dev/cdrom /mnt/cdrom 5.cd /mnt/cdrom 6.sudo sh ./VBoxLinuxAdditions.run(若执行失败按照提示安装相应的依赖)
若出现kernel-devel版本不符合要求的情况,可以到http://rpm.pbone.net下载相应的rpm包,然后安装(eg : rpm -Uvh kernel-devel-3.10.0-514.el7.x86_64.rpm)
添加共享文件夹配置virtualbox的共享文件夹
进入centos后执行:mount -t vboxsf shared_file [共享文件夹名] [挂载的目录] (eg : mount -t vboxsf php /data/php)
设置开机自动挂载
1.在/opt/onbootscript/(自己新建该目录)下添加开机启动脚本(mount.sh,需具备可执行权限),包含以下命令 mount -t vboxsf php /data/php 2.在文件/etc/rc.local中(以root用户)追加 : /opt/onbootscript/mount.sh 3.chmod +x /etc/rc.d/rc.localSelinux设置
开机关闭SELinux : 编辑/etc/selinux/config文件,将SELINUX的值设置为disabled
安装gcc和开发环境yum groupinstall "Development Tools"
安装nginx 通过yum安装yum install nginx
systemctl start nginx
查看yum安装的文件 : rpm -ql nginx
下载相应的源码包并且安装依赖 : yum install pcre pcre-devel zlib zlib-devel openssl openssl-devel
进入源码目录,执行./configure --user=nobody --group=nobody --prefix=/usr/local/nginx-1.xx.xx --with-http_stub_status_module --with-http_ssl_module --with-http_realip_module
执行make
执行make install >& LOG_make_install
创建一个软链接/usr/local/nginx指向/usr/local/nginx-1.xx.xx: ln -s /usr/local/nginx-1.xx.xx /usr/local/nginx
常用命令修改配置后重新加载生效 :/usr/local/nginx/sbin/nginx -s reload
重新打开日志文件 : /usr/local/nginx/sbin/nginx -s reopen
测试nginx配置文件是否正确 : /usr/local/nginx/sbin/nginx -t -c /usr/local/nginx/conf/nginx.conf
启动nginx : /usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf
快速停止nginx : /usr/local/nginx/sbin/nginx -s stop
完整有序的停止nginx : /usr/local/nginx/sbin/nginx -s quit
其他的停止nginx 方式:
ps -ef | grep nginx kill -QUIT 主进程号 :从容停止Nginx kill -TERM 主进程号 :快速停止Nginx pkill -9 nginx :强制停止Nginx
平滑重启nginx :kill -HUP 主进程号
将nginx添加至systemctl若是通过yum安装的,则已经可以使用systemctl控制nginx
修改nginx配置文件,开启pid : pid /var/run/nginx.pid;
先关闭nginx服务
配置服务,在/usr/lib/systemd/system/新建nginx.service文件,vim编辑如下`
[Unit] Description=nginx - high performance web server After=network.target remote-fs.target nss-lookup.target [Service] Type=forking PIDFile=/var/run/nginx.pid ExecStartPre=/usr/local/nginx/sbin/nginx -t -c /usr/local/nginx/conf/nginx.conf ExecStart=/usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf ExecReload=/usr/local/nginx/sbin/nginx -s reload ExecStop=/usr/local/nginx/sbin/nginx -s stop ExecQuit=/usr/local/nginx/sbin/nginx -s quit PrivateTmp=true [Install] WantedBy=multi-user.target 以上配置的说明 : 1.[Unit]部分主要是对这个服务的说明,内容包括Description和After,Description用于描述服务,After用于描述服务类别 2.[Service]部分是服务的关键,是服务的一些具体运行参数的设置,这里Type=forking是后台运行的形式,PIDFile为存放PID的文件路径,ExecStart为服务的具体运行命令,ExecReload为重启命令,ExecStop为停止命令,PrivateTmp=True表示给服务分配独立的临时空间,注意:[Service]部分的启动、重启、停止命令全部要求使用绝对路径,使用相对路径则会报错! 3.[Install]部分是服务安装的相关设置,可设置为多用户的`
服务脚本按照上面编写完成后,以754的权限保存在/usr/lib/systemd/system目录下,然后执行(修改或新增文件需要执行以下语句才能生效) systemctl daemon-reload
防火墙设置因为防火墙的存在,所以默认情况下无法访问nginx监听的端口
对外开放80端口firewall-cmd --zone=public --add-port=80/tcp --permanent
说明 :
firewall-cmd : linux中提供的操作firewall的工具
--zone : 指定作用域
--add-port=80/tcp : 添加的端口,格式为:端口/通讯协议
--permanent : 表示永久生效,没有此参数重启后会失效
重启防火墙systemctl restart firewalld
安装mysqlMySQL的编译需要好久,笔者没有采用编译安装,安装方法采用了官方文档的方法 : 安装mysql
安装php此次共安装了3个版本的php,包括php5.4,php7.0,php7.1
准备工作下载源码包 : http://php.net/releases/
安装依赖包 : yum install gcc gcc-c++ wget make libxml2 libxml2-devel openssl openssl-devel curl curl-devel libjpeg-devel freetype-devel bison autoconf libmcrypt libmcrypt-devel gd gd-devel mhash mhash-devel mcrypt
安装php语法分析器re2c : yum install re2c
configure参考
[root@localhost php-src-php-7.1.6]# ./configure --prefix=/usr/local/php [php安装的根目录] --exec-prefix=/usr/local/php [php执行文件所在目录] --bindir=/usr/local/php/bin [php/bin目录] --sbindir=/usr/local/php/sbin [php/sbin目录] --includedir=/usr/local/php/include [php包含文件所在目录] --libdir=/usr/local/php/lib/php [php/lib目录] --mandir=/usr/local/php/php/man [php/man目录] --with-config-file-path=/usr/local/php/etc [php的配置目录] --with-mysql-sock=/tmp/mysql.sock [php的Unix socket通信文件] --with-mcrypt [是php里面重要的加密支持扩展库,linux环境下该库在默认情况下不开启] --with-mhash [Mhash是基于离散数学原理的不可逆向的php加密方式扩展库,其在默认情况下不开启] --with-openssl [OpenSSL 是一个安全套接字层密码库] --with-mysqli=shared,mysqlnd [php依赖mysql库] --with-pdo-mysql=shared,mysqlnd [php依赖mysql库] --with-gd [gd库] --with-iconv [关闭iconv函数,种字符集间的转换] --with-zlib [zlib是提供数据压缩用的函式库] --enable-zip [打开对zip的支持] --enable-inline-optimization [优化线程] --disable-debug [关闭调试模式] --disable-rpath [关闭额外的运行库文件] --enable-shared [启用动态库] --enable-xml [开启xml扩展] --enable-bcmath [打开图片大小调整,用到zabbix监控的时候用到了这个模块] --enable-shmop [共享内存] --enable-sysvsem [内存共享方案] --enable-mbregex [开启多字节正则表达式的字符编码。] --enable-mbstring [开启多字节字符串函数] --enable-ftp [开启ftp] --enable-gd-native-ttf [开启gd库原有字体] --enable-pcntl [PHP的进程控制支持实现了Unix方式的多进程创建] --enable-sockets [开启套节字] --with-xmlrpc [打开xml-rpc的c语言] --enable-soap [开启简单对象访问协议简单对象访问协议] --without-pear [开启php扩展与应用库] --with-gettext [开户php在当前域中查找消息] --enable-session [允许php会话session] --with-curl [允许curl扩展] --with-jpeg-dir [指定jpeg安装目录yum安装过后不用再次指定会自动找到] --with-freetype-dir [指定freetype安装目录yum安装过后不用再次指定会自动找到] --enable-opcache [开启使用opcache缓存] --enable-fpm [开启fpm] --with-fpm-user=nginx [php-fpm的用户] --with-fpm-group=nginx [php-fpm的用户组] --without-gdbm [数据库函数使用可扩展散列和类似于标准UNIX dbm的工作] --enable-fast-install [为快速安装优化] --disable-fileinfo安装php5.4
新建安装目录:/usr/local/php/php54
执行configure : ./configure --prefix=/usr/local/php/php54 --datadir=/usr/local/php/php54/doc --mandir=/usr/local/php/php54/man --with-config-file-path=/usr/local/php/php54/etc --with-mcrypt --with-mhash --with-openssl --with-mysqli=shared,mysqlnd --with-pdo-mysql=shared,mysqlnd --with-gd --with-zlib --enable-zip --disable-rpath --enable-shared --enable-bcmath --enable-shmop --enable-sysvsem --enable-mbstring --enable-ftp --enable-gd-native-ttf --enable-pcntl --enable-sockets --with-xmlrpc --enable-soap --without-pear --with-gettext --with-curl --with-jpeg-dir --with-freetype-dir --enable-fpm --enable-fast-install
编译 : make (可以通过make clean进行清理,编译完成后可以执行测试 make test)
安装 : make install >& LOG_make_install
配置php.ini
1.cp php.ini-production /usr/local/php/php54/etc/php.ini 2.修改php扩展目录所在位置 extension_dir="/usr/local/php/php54/lib/php/extensions/no_debug_non_zts_20160303" 3.修改时区 date.timezone=PRC
php-fpm配置(php-fpm.conf)
1.cp /usr/local/php/php54/etc/php-fpm.conf.default /usr/local/php/php54/etc/php-fpm.conf 2.修改配置 pid=run/php-fpm.pid error_log=log/php-fpm.log
nginx相应配置(nginx.conf)
1.在nginx.conf所在的目录下添加目录‘vhosts.d’(用于存放各个站点配置) 2.修改nginx.conf配置文件(include vhosts.d目录) #user nginx; worker_processes 1; error_log /var/log/nginx/error.log; pid /var/run/nginx.pid; # Load dynamic modules. See /usr/share/nginx/README.dynamic. include /usr/share/nginx/modules/*.conf; events { worker_connections 1024; } http { log_format main "$remote_addr - $remote_user [$time_local] "$request" " "$status $body_bytes_sent "$http_referer" " ""$http_user_agent" "$http_x_forwarded_for""; access_log /var/log/nginx/access.log main; sendfile on; tcp_nopush on; tcp_nodelay on; keepalive_timeout 65; types_hash_max_size 2048; include /etc/nginx/mime.types; default_type application/octet-stream; # Load modular configuration files from the /etc/nginx/conf.d directory. # See http://nginx.org/en/docs/ngx_core_module.html#include # for more information. include /etc/nginx/conf.d/*.conf; # all real virtual machine,下面这一行引入vhosts.d目录下的所有站点配置 include vhosts.d/*.conf; } 3.在vhosts.d目录下添加站点配置文件(eg : www.php5.net) server { listen 80; server_name www.php5.net; access_log logs/www_php5_net_access.log main; error_log logs/www_php5_net_error.log; location / { root /data/code/php/vm/php5/; try_files $uri $uri/ /index.php?$args; index index.html index.php; } location ~ .php$ { fastcgi_pass 127.0.0.1:9000; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME /data/code/php/vm/php5/$fastcgi_script_name; include fastcgi_params; } }安装php7.1
新建目录/usr/local/php/php71
执行 : ./buildconf --force (为了防止出现错误 : cp:cannot stat "sapi/cli/php.1": No such file or directory)
执行configure : ./configure --prefix=/usr/local/php/php71 --datadir=/usr/local/php/php71/doc --mandir=/usr/local/php/php71/man --with-config-file-path=/usr/local/php/php71/etc --with-mcrypt --with-mhash --with-openssl --with-mysqli=shared,mysqlnd --with-pdo-mysql=shared,mysqlnd --with-gd --with-zlib --enable-zip --disable-rpath --enable-shared --enable-bcmath --enable-shmop --enable-sysvsem --enable-mbstring --enable-ftp --enable-gd-native-ttf --enable-pcntl --enable-sockets --with-xmlrpc --enable-soap --without-pear --with-gettext --with-curl --with-jpeg-dir --with-freetype-dir --enable-fpm --enable-fast-install
编译 : make (可以通过make clean进行清理,编译完成后可以执行测试 make test)
安装 : make install >& LOG_make_install
配置php.ini
1.cp php.ini-production /usr/local/php/php71/etc/php.ini 2.修改php扩展目录所在位置 extension_dir="/usr/local/php/php71/lib/php/extensions/no_debug_non_zts_20160303" 3.修改时区 date.timezone=PRC
php-fpm配置(php-fpm.conf)
cp /usr/local/php/php71/etc/php-fpm.conf.default /usr/local/php/php71/etc/php-fpm.conf pid=run/php-fpm.pid error_log=log/php-fpm.log cp /usr/local/php/php71/etc/php-fpm.d/www.conf.default /usr/local/php/php71/etc/php-fpm.d/www.conf listen = 127.0.0.1:9002(php54占用了9000端口)
在vhosts.d目录下添加站点配置文件(eg : www.php7.net)
server { listen 80; server_name www.php7.net; access_log logs/www_php7_net_access.log main; error_log logs/www_php7_net_error.log; location / { root /data/code/php/vm/php7/; try_files $uri $uri/ /index.php?$args; index index.html index.php; } location ~ .php$ { fastcgi_pass 127.0.0.1:9001; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME /data/code/php/vm/php7/$fastcgi_script_name; include fastcgi_params; } }安装php7.0
php7.0的安装与php7.1基本没有差别,此处不再赘述。
启动和关闭php-fpm1.启动 : sudo /usr/local/php/php71/sbin/php-fpm
2.关闭 : sudo kill -INT `cat /usr/local/php/php71/var/run/php-fpm.pid
php5.4,php7.0的操作方式是相同的
各种php扩展的源码安装过程基本相似,主要可以概括成以下几个步骤:
安装相应的依赖(源码安装或通过yum等方式安装皆可)
进入源码目录执行phpize
执行configure
执行make
执行make install
修改php.ini配置,重启php
安装xdebug扩展下载源码 : sudo wget http://pecl.php.net/get/xdebu...,解压,进入源码目录
运行phpize命令 :/usr/local/php/php54/bin/phpize(若报错 :Cannot find autoconf. Please check your autoconf installation and the $PHP_AUTOCONF environment variable. Then, rerun this script.则安装autoconf(yum install autoconf),然后重新运行phpize)
编译安装XDebug
./configure --enable-xdebug --with-php-config=/usr/local/php/php54/bin/php-config make && make install
配置 php.ini,追加以下内容
[XDebug] zend_extension = "/usr/local/php/php54/lib/php/extensions/no-debug-non-zts-20100525/xdebug.so" xdebug.profiler_append = 0 xdebug.profiler_enable = 0 xdebug.profiler_enable_trigger = 0 xdebug.profiler_output_dir = "/tmp/php54/xdebug" xdebug.profiler_output_name = "cachegrind.out.%t-%s" xdebug.remote_enable = 1 xdebug.remote_handler = "dbgp" xdebug.remote_host = "10.3.20.151" 这个是ide所在机器的ip xdebug.remote_port = 9010 这个是ide监听的端口 xdebug.trace_output_dir = "/tmp/php54/xdebug" xdebug.remote_autostart = 1 xdebug.default_enable = 1 ;xdebug.idekey=PHPSTORM
新建目录“/tmp/php54/xdebug”并赋予相应的权限
安装imagick扩展笔者安装该扩展用于实现pdf转图片
安装Ghostscript下载相应的源码,解压后进入源码目录 ./configure --prefix=/usr/local/ghostscript-9.18 make >& LOG_make make install >& LOG_make_install ln -s /usr/local/ghostscript-9.18/bin/gs /usr/local/bin/gs(创建软连接)安装ImageMagick
通过yum安装 yum install ImageMagick ImageMagick-devel 源码安装 下载相应的源码,解压后进入源码目录 ./configure make >& LOG_make make install >& LOG_make_install安装imagick扩展
下载,解压,进入源码目录
/usr/local/php/php54/bin/phpize
./configure --with-php-config=/usr/local/php/php54/bin/php-config --with-imagick
make
make install > LOG_make_install
修改自己的php.ini文件,然后添加magick扩展:vim .../php.ini 添加extension=imagick.so
重启PHP
安装memcached扩展先安装依赖libmemcached库
通过yum安装 yum install libmemcached libmemcached-devel 源码安装 1.下载,解压,进入源码目录(https://launchpad.net/libmemcached/+download) 2.sudo ./configure --prefix=/usr/local/libmemcached 3.make && make test && sudo make install
下载,解压,进入源码目录
sudo /usr/local/php/php54/bin/phpize
sudo ./configure --enable-memcached --with-php-config=/usr/local/php/php54/bin/php-config
sudo make && make install
修改自己的php.ini文件,然后添加memcached扩展:vim .../php.ini 添加extension = memcached.so
重启PHP
安装reids扩展下载,解压,进入源码目录
sudo /usr/local/php/php54/bin/phpize
sudo ./configure --enable-redis --with-php-config=/usr/local/php/php54/bin/php-config
sudo make && make install
修改自己的php.ini文件,然后添加redis扩展:vim .../php.ini 添加extension = redis.so
重启PHP
文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。
转载请注明本文地址:https://www.ucloud.cn/yun/29801.html
摘要:安装扩展前面在设置了拓展的安装路径,于是此处已自动将加入拓展目录中,只要在,添加即可查看是否安装成功安装扩展根据版本选择对应的查看是否安装成功相关文章环境搭建一环境搭建二环境搭建三 安装的基本步骤官方文档都有说明:PHP官网安装文档 编译安装 依赖环境 这一步实际上已经在:LNMP环境搭建(二):Nginx上完成了 [root@localhost ~]# yum -y inst...
阅读 1946·2019-08-29 16:27
阅读 1295·2019-08-29 16:14
阅读 3342·2019-08-29 14:18
阅读 3401·2019-08-29 13:56
阅读 1219·2019-08-29 11:13
阅读 2081·2019-08-28 18:19
阅读 3405·2019-08-27 10:57
阅读 2226·2019-08-26 11:39