强推vmware
,比virtual box
好上不少,virtual box 跑起来感受好卡,并且动不动就内存xxoo报错直接闪退了,用vmware还没出现过这些问题,也不会很卡,跟windows的切换也比较方便,这个是我通常用来安装的镜像和虚拟机,能够自行下载一波php
1.centos7.3镜像下载html
2.vmware虚拟机下载mysql
下载wget http://cn2.php.net/get/php-7.0.28.tar.gz/from/this/mirror
下载完成以后是镜像文件,须要将其重命名为tar.gz文件 mv mirror php-7.0.28.tar.gz
解压tar -zxvf php-7.0.28.tar.gz
linux
配置前要安装/更新libxml2以及libxml2-develnginx
yum -y install libxml2 libxml2-devel
c++
把没有安装好的组件安装好(若是安装了就会进行升级)git
yum -y install openssl openssl-devel curl curl-devel libjpeg libjpeg-devel libpng libpng-devel freetype freetype-devel pcre pcre-devel libxslt libxslt-devel bzip2 bzip2-devel
github
./configure --prefix=/usr/local/php --with-curl --with-freetype-dir --with-gd --with-gettext --with-iconv-dir --with-kerberos --with-libdir=lib64 --with-libxml-dir --with-mysqli --with-openssl --with-pcre-regex --with-pdo-mysql --with-pdo-sqlite --with-pear --with-png-dir --with-jpeg-dir --with-xmlrpc --with-xsl --with-zlib --with-bz2 --with-mhash --enable-fpm --enable-bcmath --enable-libxml --enable-inline-optimization --enable-gd-native-ttf --enable-mbregex --enable-mbstring --enable-opcache --enable-pcntl --enable-shmop --enable-soap --enable-sockets --enable-sysvsem --enable-sysvshm --enable-xml --enable-zip
(注意,7.2不支持enable-gd-native-ttf
这一项,要去掉)web
make
(编译时间比较长)
编译完成以后执行安装 make install
若是出现In function 'do_convert' .....undefined reference to 'libiconv_open'....的问题,须要到MakeFile
文件中找到EXTRA_LIBS
,而后在后面加上 -liconv
sql
(主要是将配置文件复制到php根文件夹或者将根文件夹下的文件重命名)
cp php.ini-development /usr/local/php/lib/php.ini cp /usr/local/php/etc/php-fpm.conf.default /usr/local/php/etc/php-fpm.conf cp sapi/fpm/php-fpm /usr/local/bin
设置php.ini文件设置cgi.fix_pathinfo=0
这一项默认被注释而且值为1,根据官方文档的说明,这里为了当文件不存在时,阻止Nginx将请求发送到后端的PHP-FPM模块,从而避免恶意脚本注入的攻击,因此此项应该去掉注释并设置为0
groupadd www-data useraddd www-data www-data
(下面这步能够跳过,由于在前面编译的时候已经指定了prefix。)
打开/usr/local/php/etc/php-fpm.comf,最后一行,include=NONE/etc/php-fpm.d/*.conf 前面NONE改成/usr/local)
而后修改文件名
cp /usr/local/php/etc/php-fpm.d/www.conf.default /usr/local/php/etc/php-fpm.d/www.conf vi /usr/local/php/etc/php-fpm.d/www.conf
修改user 和group 设置为前面建立的www-data
启动php-fpm 直接输入php-fpm
若是是重启php-fpm 则输入/etc/init.d/php-fpm restart
wget http://nginx.org/download/nginx-1.4.7.tar.gz
解压,而后./configure
执行配置
编译而后执行安装make && make install
跑nginx可能会出现 nginx: [error] open() "/usr/local/nginx/logs/nginx.pid" failed (2: No such file or directory)
则须要执行/usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf指定nginx.conf的位置
前面的user的值注意看看是否是www-data
去掉location php那一块的注释
location /{ root /home/www #网站根目录 index index.html index.htm index.php } location ~ [^/]\.php(/|$){ root /home/www; #网站根目录 fastcgi_pass 127.0.0.1:9000; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME SCRIPTE_NAME/$fast_script_name; include fastcgi_params; include fastcgi.conf; }
重启nginx/usr/local/nginx/sbin/nginx -s stop
/usr/local/nginx/sbin/nginx
NGINX SHELL脚本 放到/etc/init.d/下取名nginx
#!/bin/sh # # nginx - this script starts and stops the nginx daemon # # chkconfig: - 85 15 # description: Nginx is an HTTP(S) server, HTTP(S) reverse # proxy and IMAP/POP3 proxy server # processname: nginx # chkconfig: 2345 90 91 # description: nginx web server# processname: nginx# config: /opt/nginx/conf/nginx.conf# pidfile: /opt/nginx/nginx.pid # Source function library. . /etc/init.d/functions # Source networking configuration. . /etc/sysconfig/network if [ -f /etc/sysconfig/nginx ];then . /etc/sysconfig/nginx fi # Check that networking is up. [ "$NETWORKING" = "no" ] && exit 0 nginx="/usr/local/nginx/sbin/nginx" prog=$(basename $nginx) NGINX_CONF_FILE="/usr/local/nginx/conf/nginx.conf" [ -f /etc/sysconfig/nginx ] && . /etc/sysconfig/nginx lockfile=/var/lock/subsys/nginx start() { [ -x $nginx ] || exit 5 [ -f $NGINX_CONF_FILE ] || exit 6 echo -n $"Starting $prog: " daemon $nginx #-c $NGINX_CONF_FILE retval=$? echo [ $retval -eq 0 ] && touch $lockfile return $retval } stop() { echo -n $"Stopping $prog: " killproc $prog -QUIT retval=$? echo [ $retval -eq 0 ] && rm -f $lockfile return $retval killall -9 nginx } restart() { configtest || return $? stop sleep 1 start } reload() { configtest || return $? echo -n $"Reloading $prog: " killproc $nginx -HUP RETVAL=$? echo } force_reload() { restart } configtest() { $nginx -t #-c $NGINX_CONF_FILE } rh_status() { status $prog } rh_status_q() { rh_status >/dev/null 2>&1 } case "$1" in start) rh_status_q && exit 0 $1 ;; stop) rh_status_q || exit 0 $1 ;; restart) $1 ;; test) configtest ;; reload) rh_status_q || exit 7 $1 ;; force-reload) force_reload ;; status) rh_status ;; condrestart|try-restart) rh_status_q || exit 0 ;; *) echo $"Usage: $0 {start|stop|status|restart|condrestart|try-restart|reload|force-reload|test}" exit 2 esac
PHP-FPM SHELL脚本 放到/etc/init.d/下 取名php-fpm
#!/bin/sh # chkconfig: 2345 15 95 # description: PHP-FPM (FastCGI Process Manager) is an alternative PHP FastCGI implementation \ # with some additional features useful for sites of any size, especially busier sites. # DateTime: 2016-09-20 # Source function library. . /etc/rc.d/init.d/functions # Source networking configuration. . /etc/sysconfig/network # Check that networking is up. [ "$NETWORKING" = "no" ] && exit 0 phpfpm="/usr/local/php/sbin/php-fpm" prog=$(basename ${phpfpm}) lockfile=/var/lock/subsys/phpfpm start() { [ -x ${phpfpm} ] || exit 5 echo -n $"Starting $prog: " daemon ${phpfpm} retval=$? echo [ $retval -eq 0 ] && touch $lockfile return $retval } stop() { echo -n $"Stopping $prog: " killproc $prog -QUIT retval=$? echo [ $retval -eq 0 ] && rm -f $lockfile return $retval } restart() { configtest || return $? stop start } reload() { configtest || return $? echo -n $"Reloading $prog: " killproc ${phpfpm} -HUP RETVAL=$? echo } force_reload() { restart } configtest() { ${phpfpm} -t } rh_status() { status $prog } rh_status_q() { rh_status >/dev/null 2>&1 } case "$1" in start) rh_status_q && exit 0 $1 ;; stop) rh_status_q || exit 0 $1 ;; restart|configtest) $1 ;; reload) rh_status_q || exit 7 $1 ;; status) rh_status ;; *) echo $"Usage: $0 {start|stop|status|restart|reload|configtest}" exit 2 esac
后续处理:
添加执行权限chmod a+x /etc/init.d/nginx
chmod a+x /etc/init.d/php-fpm
加入服务chkconfig --add nginx
chkconfig --add php-fpm
开机自启chkconfig nginx on
chkconfig php-fpm on
顺即可以设一下快捷指令
`vi ~/.bashrc` alias nginx='/etc/init.d/nginx' alias php-fpm='/etc/init.d/php-fpm' source ~/.bashrc
这样就能够直接经过nginx指令和php-fpm指令进行操做而不用经过绝对路径的指令进行操做
wget -i -c http://dev.mysql.com/get/mysql57-community-release-el7-10.noarch.rpm
yum -y install mysql-57-community-release-el7-10.noarch.rmp
yum -y install mysql-community-server
(这一步会花很长时间)systemctl start mysqld.service
能够查看一下mysql运行状态systemctl status mysqld.service
获取mysql初始密码 grep "password" /var/log/mysqld.log
进入mysql输入上面获取的密码
而后修改密码规则:set global validate_password_policy=0;
set global validate_password_length=1;
修改密码 ALTER USER 'root'@'localhost' IDENTIFIED BY 'YOUR_PASSWORD'
wget https://files.phpmyadmin.net/phpMyAdmin/4.8.0.1/phpMyAdmin-4.8.0.1-all-languages.tar.gz
下载以后解压到网站根目录
把phpmyadmin下面的config.sample.inc.php
更名为config.inc.php
将里面的host参数由localhost改为127.0.0.1 不然可能出现mysqli_real_connect ........ No such file的报错
分为服务端安装和客户端安装
1.服务端安装
方法1:
yum -y install memcached /usr/bi/memcached -l 127.0.0.1 -p11211 -m 150 -u root
方法2:
memcached 依赖于libevent
库,所以咱们须要先安装libevent.
假设将源码放在/usr/local/src
cd /usr/local/src wget https://github.com/libevent/libevent/releases/download/release-2.0.22-stable/libevent-2.0.22-stable.tar.gz3 tar zxvf libevent-2.0.22-stable.tar.gz cd libevent-2.0.22-stable ./configure --prefix=/usr/local/libevent make && make install
安装memcached服务端
cd /usr/local/src wget http://www.memcached.org/files/memcached-1.4.33.tar.gz3 tar zxvf memcached-1.4.33.tar.gz cd memcached-1.4.335 ./configure --prefix=/usr/local/memcached --with-libevent=/usr/loca/libevent make && make install
若是出现g++ command not found
则yum install gcc gcc-c++
2.客户端安装
客户端需依赖libmemcached
库
cd /usr/local/src wget https://launchpad.net/libmemcached/1.0/1.0.18/+download/libmemcached-1.0.18.tar.gz3 tar zxvf libmemcached-1.0.18.tar.gz cd libmemcached-1.0.185 ./configure --prefix=/usr/local/libmemcached make && make install
安装php-fpm
的memcached
扩展
cd /usr/local/src wget http://pecl.php.net/get/memcached-2.2.0.tgz3 tar zxvf memcached-2.2.0.tgz cd memcached-2.2.0
到了这一步,咱们要使用安装php时生成的 phpize
来生成 configure 配置文件
/usr/local/php/bin/phpize --with-php-config=/usr/local/php/bin/php-config ./configure --with-php-config=/usr/local/php/bin/php-config --with-libmemcached-dir=/usr/local/libmemcached --disable-memcached-sasl make && make install
若是上面第一步phpize的时候出现Cannot find autoconf. Please check your autoconf installation and the $PHP_AUTOCONF environment variable is set correctly and then rerun this script.
解决方案:
wget http://ftp.gnu.org/gnu/m4/m4-1.4.9.tar.gz tar -zvxf m4-1.4.9.tar.gz cd m4-1.4.9/ ./configure && make && make install cd ../ wget http://ftp.gnu.org/gnu/autoconf/autoconf-2.62.tar.gz tar -zvxf autoconf-2.62.tar.gz cd autoconf-2.62/ ./configure && make && make install
若是第二步.configure
编译的时候出现php_smart_str.h No such file or directory
则
git clone https://github.com/php-memcached-dev/php-memcached.git cd php-memcached/ git checkout php7 /usr/local/php/bin/phpize ./configure --disable-memcached-sasl --with-libmemcached-dir=/usr/local/libmemcached --with-php-config=/usr/local/php/bin/php-config
输入ifconfig没有ipv4地址的话 输入dhclient
从新分配ip,而且要设定为开机自启,第一个要检查/etc/sysconfig/network-scripts/ifcfg-eth*
文件BOOTPROTO=dhcp ONBOOT=yes
,而后正确的话,就在/etc/rc.d/rc.local
文件下追加
if config eth0 up dhclient eth0
(后面发现这个自启好像没用,每次都要手动执行dhclient,有空再看下)
cd /etc/sysconfig/network-scripts/ vim ifcfg-enp0s3
将其改成动态获取ip,即为dhcp,而后设置开启自启
BOOTPROTO=dhcp ONBOOT=yes
最后service network restart
1.网络设置 注意要设置成桥接网卡
2.出现相互能够ping通,可是本地没法访问虚拟机的网站/sbin/iptables -I INPUT -p tcp --dport 80 -j ACCEPT
而后保存iptables-save
参考文章
1.Linux下安装php环境而且配置Nginx支持php-fpm模块
2.CentOS7安装MySQL
3.linux php安装memcached扩展