缘由
由于工作的原因,需要经常搭建 LNMP(PHP7+MySQL5.7+Nginx)的环境,虽然网上有不少教程,但是目前为止还没有找到一个完成符合我的教程,所以每次部署环境的时候都是打开几个教程进行部署的,所以还是挺麻烦的,今天也是抽点时间归纳一下教程。
一、修改 yum 源
[root@localhost ~]# rpm -Uvh https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm
[root@localhost ~]# rpm -Uvh https://mirror.webtatic.com/yum/el7/webtatic-release.rpm
[root@localhost ~]# rpm -Uvh http://dev.mysql.com/get/mysql57-community-release-el7-9.noarch.rpm
二、安装 Nginx、MySQL、PHP
[root@localhost ~]# yum -y install nginx
[root@localhost ~]# yum -y install mysql-community-server
[root@localhost ~]# yum -y install php72w php72w-devel php72w.x86_64 php72w-cli.x86_64 php72w-common.x86_64 php72w-gd.x86_64 php72w-ldap.x86_64 php72w-mbstring.x86_64 php72w-mcrypt.x86_64 php72w-pdo.x86_64 php72w-mysqlnd php72w-fpm php72w-opcache php72w-pecl-redis php72w-pecl-mongo php72w-mcrypt
三、配置
1、配置 MySQL
MySQL 安装完成之后,在 /var/log/mysqld.log 文件中给出 root 生成一个 默认密码。
[root@localhost ~]# systemctl start mysqld # 启动 MySQL
[root@localhost ~]# grep 'temporary password' /var/log/mysqld.log # 查找默认密码
2017-04-10T02:58:16.806931Z 1 [Note] A temporary password is generated for root@localhost: iacFXpWt-6gJ
登陆 MySQL:
[root@localhost ~]# mysql -uroot -p'iacFXpWt-6gJ'
修改 root 密码:
mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY 'MyPass1!';
或者:
mysql> set password for 'root'@'localhost'=password('123abc');
详见 MySQL 官网密码策略详细说明:https://dev.mysql.com/doc/ref…
设置开机启动:
[root@localhost ~]# systemctl enable mysqld
重启服务:
[root@localhost ~]# systemctl restart mysqld
默认配置文件路径:
配置文件:/etc/my.cnf
日志文件:/var/log/mysqld.log
服务启动脚本:/usr/lib/systemd/system/mysqld.service
socket 文件:/var/run/mysqld/mysqld.pid
2、配置 Nginx
安装完成以后查看自己防火墙是否开启,如果已开启,我们需要修改防火墙配置,开启 Nginx 外围端口访问。
[root@localhost ~]# systemctl status firewalld
开启 80/443 端口:
[root@localhost ~]# firewall-cmd --zone=public --add-port=80/tcp --permanent
[root@localhost ~]# firewall-cmd --zone=public --add-port=443/tcp --permanent
出现 success 表明添加成功
命令含义:
–zone #作用域
–add-port=80/tcp #添加端口,格式为:端口 / 通讯协议
–permanent #永久生效,没有此参数重启后失效
设置开机启动:
[root@localhost ~]# systemctl enable nginx
配置 PHP 支持
在 server {} 里添加:
location / {
#定义首页索引文件的名称
index index.php index.html index.htm;
}
# PHP 脚本请求全部转发到 FastCGI 处理. 使用 FastCGI 默认配置.
location ~ .php$ {
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
重启 Nginx 服务
[root@localhost ~]# systemctl start nginx # 启动 Nginx
3、设置开机启动 php-fpm
[root@localhost ~]# systemctl enable php-fpm
[root@localhost ~]# systemctl start php-fpm # 启动 php-fpm
4、测试
- 在 /usr/share/nginx/html 文件下创建 php 文件,输出 phpinfo 信息
- 浏览器访问 http://< 内网 IP 地址 >/phpinfo.php,如果看到 PHP 信息,说明安装成功
至此,LNMP 的环境就已经搭建好了。
5、扩展 swoole
swoole 扩展是按照 PHP 标准扩展构建的。使用 phpize 来生成编译检测脚本,./configure 来做编译配置检测,make 进行编译,make install 进行安装。
- 请下载 releases 版本的 swoole,直接从 github 主干上拉取最新代码可能回编译不过
- 如无特殊需求,请务必编译安装 swoole 最新版本
- 如当前用户不是 root,可能没有 PHP 安装目录的写权限,安装时需要 sudo 或者 su
- 如果是在 git 分支上直接 git pull 更新代码,重新编译前务必要执行 make clean
安装准备
安装前必须保证系统已经安装了下列软件
- php-7.0 或更高版本
- gcc-4.8 或更高版本
- make
- autoconf
- pcre (CentOS 系统可以执行命令:yum install pcre-devel)
[root@localhost ~]# yum -y install postgresql-devel
[root@localhost ~]# yum install glibc-headers gcc-c++ git-core gcc autoconf cmake libcurl4-openssl-dev openssl libssl-dev build-essential zlibc zlib-bin libidn11-dev libidn11 minizip openssl-devel
下载地址
- https://github.com/swoole/swoole-src/releases
- http://pecl.php.net/package/swoole
- http://git.oschina.net/swoole/swoole
[root@localhost ~]# wget http://pecl.php.net/get/swoole-4.2.6.tgz
[root@localhost ~]# tar -zxvf swoole-4.2.6
下载源码包后,在终端进入源码目录,执行下面的命令进行编译和安装
新手编译示例
[root@localhost ~]# cd swoole-4.2.6
[root@localhost ~]# phpize (ubuntu 没有安装 phpize 可执行命令:sudo apt-get install php-dev 来安装 phpize)
[root@localhost ~]# ./configure
[root@localhost ~]# make
[root@localhost ~]# make install
进阶编译示例
初次接触 swoole 的开发者请先尝试上方简单编译,如果有进一步的需求和本本,调整一下示例的编译参数
https://wiki.swoole.com/wiki/page/6.html
PECL 安装 Swoole
注意:PECL 发布时间晚于 Github 发布时间
Swoole 项目已收录到 PHP 官方扩展库,除了手工下载编译外,还可以通过 PHP 官方的 pecl 命令,一键下载安装
[root@localhost ~]# pecl install swoole
安装过程中需要根据自己的情况进行配置,如果没有清晰的思路,可以全部选为 yes。
配置 php.ini
编译安装成功后,修改 php.ini 加入
extension=swoole.so
或者
在 /etc/php.d/ 下新建并并写入
# vim /etc/php.d/swoole.ini
; Enable swoole extension module
extension=swoole.so
通过 php - m 或 phpinfo() 来查看是否成功加载了 swoole.so,如果没有可能是 php.ini 的路径不对,可以使用 php –ini 来定位到 php.ini 的绝对路径。
5、添加 MySQL 远程连接
在开发调试的环境中,通常需要利用数据库管理软件进行管理数据库,所以需要添加数据库的远程连接。
登陆数据库
[root@localhost ~]# mysql -uroot -p
查询 MySQL 数据库是否允许远程 IP 访问,命令如下:
[root@localhost ~]# use mysql;
[root@localhost ~]# select host, user from user;
查询结果为 127.0.0.1 或者 localhost 或者当前服务器域名,则表示不允许远程连接。
开启远程访问操作,命令如下:
[root@localhost ~]# GRANT ALL PRIVILEGES ON *.* TO 'root'@'%'IDENTIFIED BY '111qqqpwd' WITH GRANT OPTION;
[root@localhost ~]# FLUSH PRIVILEGES;
查看远程端口是否打开
[root@localhost ~]# firewall-cmd --list-port
开启 3306 端口:
[root@localhost ~]# firewall-cmd --zone=public --add-port=3306/tcp --permanent
重新启动防火墙
[root@localhost ~]# systemctl restart firewalld
6、参考资料
https://segmentfault.com/a/1190000009012613
https://www.cnblogs.com/hello-tl/p/9404655.html
https://my.oschina.net/sokes/blog/826705
https://wiki.swoole.com/wiki/page/6.html