本次安装的是Centos7.3的最小化版本,如下操做在root用户下进行。在搭建完该环境后,笔者使用phpstorm做为开发ide,配置phpstorm使其能够直接调试虚拟机上的代码(即开发环境下代码是运行在虚拟机上的)。经过该方法,能够最大程度地确保开发环境与生产环境的一致性。(phpstrom xdebug的配置请参考官方文档phpstorm上使用debug)php
进入/etc/sysconfig/network-scripts,找到网卡对应的配置文件(eg:ifcfg-ens0s3),配置下面的内容html
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=yes
在/etc/sysconfig/network-scripts下添加相应的网络接口配置文件node
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.0
重启网络:systemctl restart networkmysql
笔者使用了阿里的软件源,按照https://opsx.alibaba.com/mirror的方法进行操做便可linux
方法1:nginx
wget -P /etc/yum.repos.d/ http://mirrors.aliyun.com/repo/epel-7.repo yum clean all yum makecache
方法2:c++
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
执行如下命令:web
sudo yum update sudo yum upgrade
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)正则表达式
设置开机自动挂载redis
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.local
开机关闭SELinux : 编辑/etc/selinux/config文件,将SELINUX的值设置为disabled
yum groupinstall "Development Tools"
yum install nginx
systemctl start nginx
查看yum安装的文件 : rpm -ql nginx
./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
ln -s /usr/local/nginx-1.xx.xx /usr/local/nginx
其余的中止nginx 方式:
ps -ef | grep nginx kill -QUIT 主进程号 :从容中止Nginx kill -TERM 主进程号 :快速中止Nginx pkill -9 nginx :强制中止Nginx
如果经过yum安装的,则已经可使用systemctl控制nginx
pid /var/run/nginx.pid;
配置服务,在/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]部分是服务安装的相关设置,可设置为多用户的`
systemctl daemon-reload
由于防火墙的存在,因此默认状况下没法访问nginx监听的端口
firewall-cmd --zone=public --add-port=80/tcp --permanent
说明 :
systemctl restart firewalld
MySQL的编译须要很久,笔者没有采用编译安装,安装方法采用了官方文档的方法 : 安装mysql
这次共安装了3个版本的php,包括php5.4,php7.0,php7.1
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
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
./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
配置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; } }
./buildconf --force
(为了防止出现错误 : cp:cannot stat 'sapi/cli/php.1': No such file or directory)./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
配置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.1基本没有差异,此处再也不赘述。
1.启动 : 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扩展的源码安装过程基本类似,主要能够归纳成如下几个步骤:
/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
笔者安装该扩展用于实现pdf转图片
下载相应的源码,解压后进入源码目录 ./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(建立软链接)
经过yum安装 yum install ImageMagick ImageMagick-devel 源码安装 下载相应的源码,解压后进入源码目录 ./configure make >& LOG_make make install >& LOG_make_install
先安装依赖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