本次安裝的是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