常见问题

如何安装swoole

1.编译安装

Swoole扩展是按照PHP标准扩展构建的。使用phpize来生成编译检测脚本,./configure来做编译配置检测,make进行编译,make install进行安装。

  • 请下载releases版本的swoole,直接从github主干上拉取最新代码可能会编译不过
  • 如果当前用户不是root,可能没有PHP安装目录的写权限,安装时需要sudo或者su
  • 如果是在git分支上直接git pull更新代码,重新编译前务必要执行make clean

2.安装准备

安装swoole前必须保证系统已经安装了下列软件

php-5.3.10 或更高版本,FaShop 要求的php版本是>=7.2 gcc-4.4 或更高版本 make autoconf pcre (centos系统可以执行命令:yum install pcre-devel)

3.下载地址,注意了请下载安装1.10.x版本的发行包,FaShop是基于1.10.x版本开发的,推荐使用1.10.5版本。

下载源代码包后,在终端进入源码目录,执行下面的命令进行编译和安装

  1. cd swoole
  2. sudo phpize (ubuntu 没有安装phpize可执行命令:sudo apt-get install php-dev来安装phpize)
  3. sudo ./configure
  4. sudo make
  5. sudo make install
  6. 强烈希望: /usr/local/php/bin/php -v 可以查看php版本:[/usr/local/php/bin/php 根据自己linux系统php安装目录决定]
  7. 所以第二步sudo phpize 最好使用:[root@fashop fashop] /usr/local/php/bin/phpize 命令
  8. 同理第三步sudo ./configure最好使用:
  9. [root@fashop fashop]./configure --with-php-config=/usr/local/php/bin/php-config 命令[/usr/local/php/bin/ 根据自己Linux php目录决定,同第二步路径]
  10. 这样swoole 就会被安装在 /usr/local/php/lib/php/extensions/no-debug-non-zts-20170718/ 下[no-debug-non-zts-20170718文件夹不是一模一样的] ,否则则会被安装在/usr/lib64/php/modules/ 下。
  11. 以上会能帮助你减少一些安装出现的问题 假如你对Linux不是很熟的话,一定要仔细阅读强烈希望的内容。

4.完整编译示例

以下脚本会下载并编译master分支的swoole源码

  1. mkdir -p ~/build && \
  2. cd ~/build && \
  3. rm -rf ./swoole-src && \
  4. curl -o ./tmp/swoole.tar.gz https://github.com/swoole/swoole-src/archive/master.tar.gz -L && \
  5. tar zxvf ./tmp/swoole.tar.gz && \
  6. mv swoole-src* swoole-src && \
  7. cd swoole-src && \
  8. phpize && \
  9. ./configure \
  10. --enable-coroutine \
  11. --enable-openssl \
  12. --enable-http2 \
  13. --enable-async-redis \
  14. --enable-sockets \
  15. --enable-mysqlnd && \
  16. make clean && make && sudo make install

5.PECL,不建议这么安装因为总能遇到一些问题

swoole项目已收录到PHP官方扩展库,除了手工下载编译外,还可以通过PHP官方提供的pecl命令,一键下载安装swoole

  1. pecl install swoole

6.配置php.ini

编译安装成功后,修改php.ini加入

  1. extension=swoole.so

通过php -mphpinfo()来查看是否成功加载了swoole,如果没有可能是php.ini的路径不对,可以使用php --ini来定位到php.ini的绝对路径。

Swoole文档

如何安装ImageMagick

1.安装编译工具:

  1. [root@fashop fashop] yum install wget make gcc gcc-c++ gtk+-devel zlib-devel openssl openssl-devel pcre-devel kernel keyutils patch perl

2.安装ImageMagick

  1. [注释:下载ImageMagick]
  2. [root@fashop fashop] wget http://www.imagemagick.org/download/ImageMagick.tar.gz
  3. [注释:解压]
  4. [root@fashop fashop] tar zxvf ImageMagick.tar.gz
  5. [注释:进入安装目录]
  6. [root@fashop fashop] cd ImageMagick-7.0.8-11
  7. [注释:配置。 强烈希望:使用命令 ./configure --with-php-config=/usr/local/php/bin/php-config 具体原因参考:如何安装swoole第三步的强烈希望]
  8. [root@fashop fashop] ./configure [强烈希望使用命令:./configure --with-php-config=/usr/local/php/bin/php-config]
  9. [注释:编译]
  10. [root@fashop fashop] make
  11. [注释:安装]
  12. [root@fashop fashop] make install

3.安装imagick

  1. [注释:下载imagick]
  2. [root@fashop fashop] wget http://pecl.php.net/get/imagick-3.4.3.tgz
  3. [注释:解压]
  4. [root@fashop fashop] tar zxvf imagick-3.4.3.tgz
  5. [注释:进入安装目录]
  6. [root@fashop fashop] cd imagick-3.4.3
  7. [注释:用phpize生成configure配置文件。这是多次强调的强烈希望的命令行代码 一般是 phpize 命令 具体原因参考:如何安装swoole第三步的强烈希望]
  8. [root@fashop fashop] /usr/local/php/bin/phpize
  9. [注释:配置。这是多次强调的强烈希望的命令行代码 一般是 ./configure 命令 具体原因参考:如何安装swoole第三步的强烈希望]
  10. [root@fashop fashop] ./configure --with-php-config=/usr/local/php/bin/php-config
  11. [注释:编译]
  12. [root@fashop fashop] make
  13. [注释:安装]
  14. [root@fashop fashop] make install
  15. 备注:在安装过程中出现错误,一般是由于缺少编译工具包导致,可根据提示参照第一步安装相应的工具包即可
  16. 安装完成之后,出现下面的界面,记住以下路径,后面会用到
  17. Installing shared extensions: /usr/local/php/lib/php/extensions/no-debug-non-zts-20170718/ #imagick模块路径

4.配置php支持imagick, 编辑配置文件/etc/php.ini,在最后一行添加以下内容:extension=imagick.so

5.测试:可以使用phpinfo(); 或者php -m查看是否加载了 imagick。如果没有 重启php服务试试。

6.命令行注释:

  1. service php-fpm restart #重启php服务
  2. service nginx restart #重启nginx

如何安装Composer

Composer 需要 PHP 5.3.2+ 才能运行。

  1. curl -sS https://getcomposer.org/installer | php

这个命令会将 composer.phar 下载到当前目录。PHAR(PHP 压缩包)是一个压缩格式,可以在命令行下直接运行。

你可以使用 --install-dir 选项将 Composer 安装到指定的目录,例如:

  1. curl -sS https://getcomposer.org/installer | php -- --install-dir=bin

当然也可以进行全局安装:

  1. curl -sS https://getcomposer.org/installer | php
  2. mv composer.phar /usr/local/bin/composer

在 Mac OS X 下也可以使用 homebrew 安装:

  1. brew install composer

注释:如果composer install或者update慢的情况,可以切换镜像到国内:

  1. composer config -g repo.packagist composer https://packagist.phpcomposer.com

如何配置Linux服务器及安装php环境

首先更新系统软件$ yum update

安装nginx

1.安装nginx源

  1. yum localinstall http://nginx.org/packages/centos/7/noarch/RPMS/nginx-release-centos-7-0.el7.ngx.noarch.rpm

2.安装nginx

  1. yum install nginx

3.启动nginx

  1. service nginx start

Redirecting to /bin/systemctl start nginx.service

4.访问http://你的ip/

如果成功安装会出来nginx默认的欢迎界面

安装MySQL5.7.*

1.安装mysql源

  1. yum localinstall http://dev.mysql.com/get/mysql57-community-release-el7-7.noarch.rpm

2.安装mysql

  1. yum install mysql-community-server

确认一下mysql的版本,有时可能会提示mysql5.6

3.安装mysql的开发包,以后会有用

  1. yum install mysql-community-devel

4.启动mysql

  1. service mysqld start

Redirecting to /bin/systemctl start mysqld.service

5.查看mysql启动状态

  1. service mysqld status

出现pid

证明启动成功

6.获取mysql默认生成的密码

  1. grep 'temporary password' /var/log/mysqld.log

2018-08-28T16:32:09.104758Z 1 [Note] A temporary password is generated for root@localhost: %G1Rgns!dD!v

加粗的就是生成的密码

7.换成自己的密码

  1. mysql -uroot -p

Enter password:输入上面的密码

成功输入后进入一下步,这里你估计会输入 好几次才进去

8.更换密码

  1. mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY 'MyNewPass4!';

这个密码一定要足够复杂,不然会不让你改,提示密码不合法;

9.退出mysql;

  1. mysql> quit;

10.用新密码再登录,试一下新密码

  1. mysql -uroot -p

Enter password:输入你的新密码

11.确认密码正确后,退出mysql;

  1. mysql> quit;

编译安装php7.2.0

1.下载php72源码包

  1. cd /root & wget -O php72.tar.gz http://cn2.php.net/get/php-7.2.0.tar.gz/from/this/mirror

2.解压源码包

  1. tar -xvf php72.tar.gz

3.进入解压的目录

  1. cd php72.tar.gz

如果这个目录名字不对,以你当时解压的名字稳准

4.安装php依赖包

  1. yum install libxml2 libxml2-devel openssl openssl-devel bzip2 bzip2-devel libcurl libcurl-devel libjpeg libjpeg-devel libpng libpng-devel freetype freetype-devel gmp gmp-devel libmcrypt libmcrypt-devel readline readline-devel libxslt libxslt-devel

5.编译配置,这一步我们会遇到很多configure error,我们一一解决,基本都是相关软件开发包没有安装导致

  1. ./configure \
  2. --prefix=/usr/local/php \
  3. --with-config-file-path=/etc \
  4. --enable-fpm \
  5. --with-fpm-user=nginx \
  6. --with-fpm-group=nginx \
  7. --enable-inline-optimization \
  8. --disable-debug \
  9. --disable-rpath \
  10. --enable-shared \
  11. --enable-soap \
  12. --with-libxml-dir \
  13. --with-xmlrpc \
  14. --with-openssl \
  15. --with-mcrypt \
  16. --with-mhash \
  17. --with-pcre-regex \
  18. --with-sqlite3 \
  19. --with-zlib \
  20. --enable-bcmath \
  21. --with-iconv \
  22. --with-bz2 \
  23. --enable-calendar \
  24. --with-curl \
  25. --with-cdb \
  26. --enable-dom \
  27. --enable-exif \
  28. --enable-fileinfo \
  29. --enable-filter \
  30. --with-pcre-dir \
  31. --enable-ftp \
  32. --with-gd \
  33. --with-openssl-dir \
  34. --with-jpeg-dir \
  35. --with-png-dir \
  36. --with-zlib-dir \
  37. --with-freetype-dir \
  38. --enable-gd-native-ttf \
  39. --enable-gd-jis-conv \
  40. --with-gettext \
  41. --with-gmp \
  42. --with-mhash \
  43. --enable-json \
  44. --enable-mbstring \
  45. --enable-mbregex \
  46. --enable-mbregex-backtrack \
  47. --with-libmbfl \
  48. --with-onig \
  49. --enable-pdo \
  50. --with-mysqli=mysqlnd \
  51. --with-pdo-mysql=mysqlnd \
  52. --with-zlib-dir \
  53. --with-pdo-sqlite \
  54. --with-readline \
  55. --enable-session \
  56. --enable-shmop \
  57. --enable-simplexml \
  58. --enable-sockets \
  59. --enable-sysvmsg \
  60. --enable-sysvsem \
  61. --enable-sysvshm \
  62. --enable-wddx \
  63. --with-libxml-dir \
  64. --with-xsl \
  65. --enable-zip \
  66. --enable-mysqlnd-compression-support \
  67. --with-pear \
  68. --enable-opcache

下面列取一些错误解决方案,如果没遇见错误请忽略:

configure error:

错误1.configure: error: xml2-config not found. Please check your libxml2 installation.

解决:

  1. yum install libxml2 libxml2-devel

错误2.configure: error: Cannot find OpenSSL’s <evp.h>

解决:

  1. yum install openssl openssl-devel

错误3.configure: error: Please reinstall the BZip2 distribution

解决:

  1. yum install bzip2 bzip2-devel

错误4.configure: error: Please reinstall the libcurl distribution - easy.h should be in <curl-dir>/include/curl/

解决:

  1. yum install libcurl libcurl-devel

错误5.If configure fails try —with-webp-dir=<DIR> configure: error: jpeglib.h not found.

解决:

  1. yum install libjpeg libjpeg-devel

错误6.If configure fails try —with-webp-dir=<DIR>

checking for jpeg_read_header in -ljpeg… yes

configure: error: png.h not found.

解决:

  1. yum install libpng libpng-devel

错误7.If configure fails try —with-webp-dir=<DIR>

checking for jpeg_read_header in -ljpeg… yes

checking for png_write_image in -lpng… yes

If configure fails try —with-xpm-dir=<DIR>

configure: error: freetype-config not found.

解决:

  1. yum install freetype freetype-devel

错误8.configure: error: Unable to locate gmp.h

  1. $ yum install gmp gmp-devel

错误9.configure: error: mcrypt.h not found. Please reinstall libmcrypt.

解决:

  1. yum install libmcrypt libmcrypt-devel

错误10.configure: error: Please reinstall readline - I cannot find readline.h

解决:

  1. yum install readline readline-devel

错误11.configure: error: xslt-config not found. Please reinstall the libxslt >= 1.1.0 distribution

解决:

  1. yum install libxslt libxslt-devel

6.继续安装php,编译与安装

  1. make && make install

这里要make好久,要耐心一下

7.添加 PHP 命令到环境变量

  1. vim /etc/profile

在末尾加入

  1. PATH=$PATH:/usr/local/php/bin
  2. export PATH

要使改动立即生效执行

  1. ./etc/profile

  1. source /etc/profile

查看环境变量

  1. echo $PATH

查看php版本

  1. php -v

8.配置php-fpm,使用FaShop的话php-fpm实际是用不到的,考虑到服务器会有其他php-fpm的项目,如果需要可以一起配置了吧

  1. cp php.ini-production /etc/php.ini
  2. cp /usr/local/php/etc/php-fpm.conf.default /usr/local/php/etc/php-fpm.conf
  3. cp /usr/local/php/etc/php-fpm.d/www.conf.default /usr/local/php/etc/php-fpm.d/www.conf
  4. cp sapi/fpm/init.d.php-fpm /etc/init.d/php-fpm
  5. chmod +x /etc/init.d/php-fpm

9.启动php-fpm

  1. /etc/init.d/php-fpm start

配置nginx虚拟机,绑定域名

1.注意:FaShop不是这么配置,请参考安装部分的介绍

  1. vim /etc/nginx/conf.d/你的项目.conf

这里可以把你的项目.conf改成自己的域名

把下面的内容复制到你的项目.conf

2.重启nginx

  1. service nginx reload

完事!访问您刚才配置的域名试试。