CentOS7.6x64及以上版本演示版本:
PHP 7.2.21
NGINX 1.15.12
MYSQL 5.7
80:WEB服务
安装make:yum -y install gcc automake autoconf libtool make
安装g++:yum install gcc gcc-c++
选定安装目录:/usr/local/src
安装pcre:cd /usr/local/src
tar -zxvf pcre2-10.33.tar.gz
cd pcre2-10.33
./configure
make
make install
安装zlib库:cd /usr/local/src
wget http://zlib.net/zlib-1.2.11.tar.gz
tar -zxvf zlib-1.2.11.tar.gz
cd zlib-1.2.11
./configure
make
make install
安装nginx:cd /usr/local/src
tar -zxvf nginx-1.15.12.tar.gz
cd nginx-1.15.12
./configure
make
make install
如果报错:make:*** No rule to make target 'build', needed by 'default'。停止。
执行:yum -y install openssl openssl-devel
然后重新make
设置nginx为system服务:vi /lib/systemd/system/nginx.service[Unit]
Description=nginx
After=network.target
[Service]
Type=forking
ExecStart=/usr/local/nginx/sbin/nginx
ExecReload=/usr/local/nginx/sbin/nginx -s reload
ExecStop=/usr/local/nginx/sbin/nginx -s quit
PrivateTmp=true
[Install]
WantedBy=multi-user.target
[Unit]:服务的说明Description:描述服务After:描述服务类别[Service]服务运行参数的设置Type=forking是后台运行的形式ExecStart为服务的具体运行命令ExecReload为重启命令ExecStop为停止命令PrivateTmp=True表示给服务分配独立的临时空间
设置开机自启动:systemctl enable nginx.service
启动命令:systemctl start nginx.service
重启命令:systemctl restart nginx.service
停止命令:systemctl stop nginx.service
如果提示错误:Access denied执行命令:systemctl daemon-reexec
php-fpm配置文件地址:/usr/local/php/etc/php-fpm.conf
nginx配置文件地址:/usr/local/nginx/conf/nginx.conf
Nginx配置方法下面有详细说明。这里简单说明一下:
HTTP协议主配置在http{}里面
每个站点都分别在一个server{}里面,有监听的端口,一般使用80,可绑定多域名
可以把server{}写在外面的配置文档中,然后使用include包含进去即可,方便管理。
一般使用框架都有伪静态(rewrite)配置,详见Nginx详细配置。
参考文档:
安装xml解析工具libxml2:yum install -y libxml2
yum install -y libxml2-devel
下载解压PHP-2.21wget https://www.php.net/distributions/php-7.2.21.tar.gz
tar -zxvf php-7.2.21.tar.gz
进入目录cd php-7.2.21
配置安装变量./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-mbregex --enable-mbstring --enable-opcache --enable-pcntl --enable-shmop --enable-soap --enable-sockets --enable-sysvsem --enable-sysvshm --enable-xml --enable-zip
编译源码make
make install
复制配置文件:cp /usr/local/php-7.2.21/php.ini-production /usr/local/php/lib/php.ini
cp /usr/local/php/etc/php-fpm.conf.default /usr/local/php/etc/php-fpm.conf
cp /usr/local/php/etc/php-fpm.d/www.conf.default /usr/local/php/etc/php-fpm.d/www.conf
配置php.ini:vi /usr/local/php/php.ini
“cgi.fix_pathinfo=0” cgi.fix_pathinfo前面的;分号去掉
启动php-fpm服务:/usr/local/php/sbin/php-fpm
启动完毕之后,php-fpm服务默认使用9000端口,使用 netstat -tln | grep 9000 可以查看端口使用情况:
编辑nginx配置文件/usr/local/nginx/conf/nginx.conf,主要修改nginx的server {}配置块中的内容,修改location块,追加index.php让nginx服务器默认支持index.php为首页:
然后配置.php请求被传送到后端的php-fpm模块,默认情况下php配置块是被注释的,此时去掉注释并修改为以下内容:
location ~* \.php$ {
root html;
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
这里面很多都是默认的,root是配置php程序放置的根目录,主要修改的就是fastcgi_param中的/scripts为$document_root 修改完这些保存并退出,然后重启nginx:systemctl restart nginx
接下来编辑一个测试的php程序,在nginx下的html目录下创建test.php文件,打印一下php配置:<?php phpinfo(); ?>
然后打开浏览器输入对应的地址(例):192.168.1.1/test.php 进行访问,看到输出页面,说明nginx和php都配置成功了:
加php-fpm管理器到systemctl中:vim /usr/lib/systemd/system/php-fpm.service[Unit]
Description=The PHP FastCGI Process Manager
After=syslog.target network.target
[Service]
Type=simple
PIDFile=/run/php-fpm.pid
ExecStart=/usr/local/php/sbin/php-fpm --nodaemonize --fpm-config /usr/local/php/etc/php-fpm.conf
ExecReload=/bin/kill -USR2 $MAINPID
ExecStop=/bin/kill -SIGINT $MAINPID
[Install]
WantedBy=multi-user.target
systemctl指令systemctl enable *.service#开机运行服务
systemctl disable *.service#取消开机运行
systemctl start *.service#启动服务
systemctl stop *.service#停止服务
systemctl restart *.service#重启服务
systemctl reload *.service#重新加载服务配置文件
systemctl status *.service#查询服务运行状态
systemctl --failed#显示启动失败的服务
添加环境变量:echo "export PATH=\$PATH:/usr/local/php/bin" >> /etc/profile
刷新环境变量:source /etc/profile
查看php版本:php -v
安装composer:php -r "copy('https://install.phpcomposer.com/installer', 'composer-setup.php');"
php composer-setup.php
移动composer.phar,这样 composer 就可以进行全局调用:mv composer.phar /usr/local/bin/composer
切换为国内镜像(非root用户下执行):composer config -g repo.packagist composer https://packagist.phpcomposer.com
2.2.2 PHP安装Redis扩展:
下载phpredis扩展包:wget https://github.com/phpredis/phpredis/archive/5.0.2.tar.gz
mv 5.0.2.tar.gz phpredis-5.0.2.tar.gz
解压:tar -zxvf phpredis-5.0.2.tar.gz phpredis-5.0.2
进入安装目录:cd phpredis-5.0.2
用phpize生成configure配置文件:/usr/local/php/bin/phpize
./configure --with-php-config=/usr/local/php/bin/php-config
make
make install
成功结果如下:
配置php支持:vi /usr/local/php/lib/php.ini
最后一行添加:extension="redis.so"
然后打开浏览器输入对应的地址(例):192.168.1.1/test.php 进行访问,看到输出页面
2.3.1 Redis安装:cd /usr/local/src
yum install gcc-c++
wget http://download.redis.io/releases/redis-5.0.4.tar.gz
tar -zxvf redis-5.0.4.tar.gz
cd redis-5.0.4
make
如果出现cc: error: ../deps/hiredis/libhiredis.a: No such file or directory
执行make MALLOC=libcmake PREFIX=/usr/local/redis install
cp redis.conf /usr/local/redis
cd /usr/local/redis/
vim redis.conf
更改内容:
1.绑定端口,port 6379 默认是6379 需要安全组开放端口
2.绑定IP,bind 192.168.2.39
3.指定持久化方式,appendonly yes
4.requirepass redis123 根据需求是否设置密码
配置redis通过systemctl启动:vim /lib/systemd/system/redis.service[Unit]
Description=Redis persistent key-value database
After=network.target
[Service]
ExecStart=/usr/local/redis/bin/redis-server /usr/local/redis/redis.conf --daemonize no
ExecStop=/usr/local/redis/bin/redis-cli -h 127.0.0.1 -p 6379 shutdown
[Install]
WantedBy=multi-user.target
systemctl指令systemctl enable *.service#开机运行服务
systemctl disable *.service#取消开机运行
systemctl start *.service#启动服务
systemctl stop *.service#停止服务
systemctl restart *.service#重启服务
systemctl reload *.service#重新加载服务配置文件
systemctl status *.service#查询服务运行状态
systemctl --failed#显示启动失败的服务
添加环境变量:echo "export PATH=\$PATH:/usr/local/redis/bin" >> /etc/profile
刷新环境变量:source /etc/profile
查看是否可以连接redis客户端:redis-cli
2.4.1 Mysql安装:
进入安装目录:cd /usr/local/src
mysql5.7.22编译需要依赖boost包:wget http://sourceforge.net/projects/boost/files/boost/1.59.0/boost_1_59_0.tar.gz
安装mysql编译依赖包:yum -y install gcc gcc-c++ ncurses ncurses-devel cmake
下载mysql5.7.22源码:
解压boost和mysql包:tar -zxvf boost_1_59_0.tar.gz
tar -zxvf mysql-5.7.22.tar.gz
cd mysql-5.7.22
cmake编译:cmake -DCMAKE_INSTALL_PREFIX=/usr/local/mysql -DMYSQL_DATADIR=/var/lib/mysql -DDOWNLOAD_BOOST=1 -DWITH_BOOST=/usr/local/src/boost_1_59_0 -DSYSCONFDIR=/etc -DWITH_INNOBASE_STORAGE_ENGINE=1 -DWITH_PARTITION_STORAGE_ENGINE=1 -DWITH_FEDERATED_STORAGE_ENGINE=1 -DWITH_BLACKHOLE_STORAGE_ENGINE=1 -DWITH_MYISAM_STORAGE_ENGINE=1 -DENABLE_DTRACE=0 -DDEFAULT_CHARSET=utf8 -DDEFAULT_COLLATION=utf8_general_ci -DWITH_EMBEDDED_SERVER=1
make编译:make && make install
创建mysql用户,为nologin用户:useradd -s /sbin/nologin mysql
创建数据目录:mkdir -p /var/lib/mysql
配置my.cnf:vim /etc/my.cnf[client]
port=3306
default-character-set=utf8
socket=/var/lib/mysql/mysql.sock #设置默认scok链接路径
[mysqld]
basedir=/usr/local/mysql #安装路径
port=3306
datadir=/var/lib/mysql #数据路径
socket=/var/lib/mysql/mysql.sock #开始服务时sock存放位置
sql_mode=ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER
加载mysql配置文件:cd /usr/local/mysql/bin
./mysqld --defaults-file=/etc/my.cnf --user=mysql --initialize-insecure
systemctl添加mysql服务:vi /usr/lib/systemd/system/mysql.service[Unit]
Description=MySQL SERVER
SourcePath=/usr/local/mysql/support-files/mysql.server
Before=shutdown.target
[Service]
User=mysql
Type=forking
ExecStart=/usr/local/mysql/support-files/mysql.server start
ExecStop=/usr/local/mysql/support-files/mysql.server stop
[Install]
WantedBy=multi-user.target
systemctl指令systemctl enable *.service#开机运行服务
systemctl disable *.service#取消开机运行
systemctl start *.service#启动服务
systemctl stop *.service#停止服务
systemctl restart *.service#重启服务
systemctl reload *.service#重新加载服务配置文件
systemctl status *.service#查询服务运行状态
systemctl --failed#显示启动失败的服务
添加环境变量:echo "export PATH=\$PATH:/usr/local/mysql/bin:/usr/local/mysql/lib" >> /etc/profile
刷新环境变量:source /etc/profile
设置mysql密码:echo "set password=password('123456');"| mysql -S /var/lib/mysql/mysql.sock
测试登录:mysql -uroot -p123456
远程访问:use mysql;
update user set host=’%’ where user=’root’;
flush privileges;