源码安装php7.2.6+nginx1.12.2+mysql5.7.22+redis
第一步:源码安装php7.2.6
- yum安装一些依赖,根据自己需要安装
yum install -y gcc gcc-c++ make zlib zlib-devel pcre pcre-devel libjpeg libjpeg-devel libpng libpng-devel freetype freetype-devel libxml2 libxml2-devel glibc glibc-devel glib2 glib2-devel bzip2 bzip2-devel ncurses ncurses-devel curl curl-devel e2fsprogs e2fsprogs-devel krb5 krb5-devel openssl openssl-devel openldap openldap-devel nss_ldap openldap-clients openldap-servers
- wget下载php
wget https://www.php.net/distributions/php-7.2.6.tar.gz
解压php包:
tar -zxvf php-7.2.6.tar.gz
进入解压后的文件:
cd php-7.2.6
编译:
./configure --prefix=/usr/local/php --with-config-file-path=/usr/local/php --enable-mbstring --enable-ftp --with-gd --with-jpeg-dir=/usr --with-png-dir=/usr --with-mysql=mysqlnd --with-mysqli=mysqlnd --with-pdo-mysql=mysqlnd --with-pear --enable-sockets --with-freetype-dir=/usr --with-zlib --with-libxml-dir=/usr --with-xmlrpc --enable-zip --enable-fpm --enable-xml --enable-sockets --with-gd --with-zlib --with-iconv --enable-zip --with-freetype-dir=/usr/lib/ --enable-soap --enable-pcntl --enable-cli --with-curl
编译完成,执行安装:
make && make install
安装完成后在安装目录 /usr/local 下会出现一个PHP的安装目录 PHP
在之前编译的源码包中,找到 php.ini-production 复制到 /usr/local/php下,并改名为php.ini
cp php.ini-production /usr/local/php/php.ini
复制启动脚本:
cp ./sapi/fpm/init.d.php-fpm /etc/init.d/php-fpm
chmod +x /etc/init.d/php-fpm
修改php-fpm配置文件:
cd /usr/local/php/etc
mv php-fpm.conf.default php-fpm.conf
vim php-fpm.conf
去掉 pid = run/php-fpm.pid 前面的分号
cd php-fpm.d
cp www.conf.default www.conf
vim www.conf
修改user和group的用户为当前用户(也可以不改,默认会添加nobody这个用户和用户组)
启动PHP
$ /etc/init.d/php-fpm start #php-fpm启动命令
$ /etc/init.d/php-fpm stop #php-fpm停止命令
$ /etc/init.d/php-fpm restart #php-fpm重启命令
$ ps -ef | grep php 或者 ps -A | grep -i php #查看是否已经成功启动PHP
安装redis扩展
wget https://pecl.php.net/get/redis-4.0.2.tgz
tar -zxvf redis-4.0.2.tgz
yum install autoconf
cd redis-4.0.2
phpize
./configure --with-php-config=/usr/local/php/bin/php-config
make && make install
在php.ini增加扩展extension=redis.so
vim php.ini
#文件尾增加下面代码 如果无效,请使用绝对地址
extension=redis.so
重启php
/etc/init.d/php-fpm restart
php -m #查看扩展
第二步:安装nginx1.12.2
- 下载源码
wget http://nginx.org/download/nginx-1.12.2.tar.gz
- 解压:
tar -zxvf nginx-1.12.2.tar.gz
进入解压目录:
cd nginx-1.12.2
编译,安装:
./configure
make && make install
停止Nginx的三种方式:
# 1. 立即停止Nginx服务
/usr/local/nginx/sbin/nginx -s stop
# 2.完成当前任务后停止
/usr/local/nginx/sbin/nginx -s quit
# 3.杀死Nginx进程
killall nginx
- 把nginx命令添加到环境变量
使用软连接将nginx链接到/usr/local/sbin
ln -s /usr/local/nginx/sbin/nginx /usr/local/sbin
ll /usr/local/sbin/ | grep "nginx" #查看是否指向了软连
显示当前环境变量PATH
echo $PATH
编辑.bash_profile文件
vim ~/.bash_profile
在.bash_profile文件末尾加入以下内容
export PATH=$PATH:/usr/local/nginx/sbin
引用.bash_profile文件
source ~/.bash_profile
使用nginx命令
# 启动nginx
nginx
# 停止nginx
nginx -s quit
# 更改配置重启
nginx -s reload
第三步:安装mysql5.7.22
- 安装mysql5.7以上需要安装boost1.59.0
链接:https://pan.baidu.com/s/1MzrHhlxX1r49asCyLxWDMQ
提取码:wsts
解压:
tar -zxvf boost_1_59_0
进入解压目录
cd boost_1_59_0
./bootstrap.sh
./b2 install
- 安装mysql
wget https://dev.mysql.com/get/Downloads/MySQL-5.7/mysql-5.7.22.tar.gz
解压:
tar -zxvf mysql-5.7.22.tar.gz
卸载CentOS7默认携带的mariadb包
rpm -qa | grep -i mysql
rpm -qa | grep -i mariadb
卸载时,发现有依赖一起卸载掉
rpm -e mariadb-libs-5.5.56-2.el7.x86_64 #具体看系统这个包的版本
rpm -e mariadb-libs-5.5.56-2.el7.x86_64 postfix-2:2.10.1-6.el7.x86_64
先安装一些依赖库
yum -y install cmake gcc gcc-c++ bison ncurses ncurses-devel
创建用户组和用户
groupadd mysql
useradd -g mysql -s /sbin/nologin -M mys
编译安装:(如果缺少文件夹就自己创建)
cmake \
-DCMAKE_INSTALL_PREFIX=/usr/local/mysql \
-DMYSQL_DATADIR=/usr/local/mysql/data \
-DWITH_BOOST=/usr/local/boost \
-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 \
-DENABLED_LOCAL_INFILE=1 \
-DENABLE_DTRACE=0 \
-DDEFAULT_CHARSET=utf8 \
-DDEFAULT_COLLATION=utf8_general_ci \
-DWITH_EMBEDDED_SERVER=1
配置:
chown -R mysql:mysql /usr/local/mysql
添加配置文件
vi /etc/my.cnf
写入:(basedir和datadir等地址具体根据自己的来,别跟原有的重复了)
[client]
port=3306
socket=/var/lib/mysql/mysql.sock
[mysql]
default-character-set=utf8
[mysqld]
user=mysql
port=3306
basedir=/usr/local/mysql
datadir=/usr/local/mysql/data
character-set-server=utf8
default-storage-engine=InnoDB
max_connections=512
query_cache_size=0
tmp_table_size=18M
thread_cache_size=8
myisam_max_sort_file_size=64G
myisam_sort_buffer_size=35M
key_buffer_size=25M
read_buffer_size=64K
read_rnd_buffer_size=256K
sort_buffer_size=256K
innodb_flush_log_at_trx_commit=1
innodb_log_buffer_size=1M
innodb_buffer_pool_size=64M
innodb_log_file_size=24M
innodb_thread_concurrency=8
#pid-file=/var/run/mysql/mysqld.pid
socket=/var/lib/mysql/mysql.sock
sql_mode = NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION
初始化mysql
/usr/local/mysql/bin/mysqld \
--initialize-insecure \
--user=mysql \
--basedir=/usr/local/mysql \
--datadir=/usr/local/mysql/data
添加MySQL环境变量
vi /etc/profile
增加
/usr/local/mysql/bin:
刷新环境变量
source /etc/profile
设置开机自启动
cp /usr/local/mysql/support-files/mysql.server /etc/init.d/mysqld
chmod +x /etc/init.d/mysqld
chkconfig --add mysqld
启动mysql
mysqld_safe --defaults-file=/etc/my.cnf &
查看mysql进程
ps -ef | grep mysql
如果mysql进程没有启动,具体看日志,基本都是权限问题,或者文件/文件夹没有,需要手动创建,或者需要软连
登陆MySQL
mysql -uroot
修改密码
SET PASSWORD = PASSWORD('123456');
退出mysql
quit;
重新登录mysql
mysql -uroot -p
配置远程访问
use mysql;
UPDATE user SET host = '%' WHERE user = 'root';
重启mysql
quit;
/etc/init.d/mysqld restart
mysql启动命令
/etc/init.d/mysqld start #启动
/etc/init.d/mysqld restart #重启
/etc/init.d/mysqld stop #停止
redis4.0.10安装
wget http://download.redis.io/releases/redis-4.0.10.tar.gz
tar -zxvf redis-4.0.10.tar.gz
cd redis-4.0.10
make && make install
cd src
./redis-server
修改daemon为yes,避免启动后Hang住了…
vim redis.conf
可以指定配置文件启动redis(可以在redis.conf里配置登录密码等)
requirepass 登录redis的密码
#修改redis.conf中的数据存储目录如下
dir /usr/local/redis/data
#设置日志文件路径和名称
logfile "/usr/local/redis/log/redis.log"
启动
./redis-server /usr/local/redis/redis-4.0.10/redis.conf
参考:
https://www.cnblogs.com/skl-bobo/p/10774783.html
https://blog.csdn.net/qq_37126235/article/details/104914961
https://www.cnblogs.com/connect/p/nginx-install-src.html
https://www.cnblogs.com/apollo1616/p/10205319.html