目录
一、安装nginx-1.5.11
二、安装Mysql-5.7.22
二、安装mysql-5.7.25 (二者选其一即可)
三 、安装PHP-7.2.17
1、安装依赖包
# yum -y install gcc gcc-c++ autoconf automake zlib zlib-devel openssl openssl-devel pcre*
//下载并解压pcre-8.42.zip (上面已经包含了 pcre*,这里也可以不安装)
# cd /mydata
# wget https://jaist.dl.sourceforge.net/project/pcre/pcre/8.42/pcre-8.42.zip
//解压到 /usr/local/src/
# unzip pcre-8.42.zip -d /usr/local/src/ //-d参数表示按原名称创建一个包
2、下载并解压nginx
官网:http://nginx.org/en/download.html
Mainline version为开发版本、 Stable version为稳定版本,我们下载稳定版
# wget http://nginx.org/download/nginx-1.16.0.tar.gz
# tar -zxvf nginx-1.16.0.tar.gz
// 创建nginx用户,
# useradd -M -s /sbin/nologin nginx 创建用户nginx,并且没有登录权限 -M 不创建家目录
# cat /etc/passwd
# cat /etc/group
3、编辑配置项生成安装文件 Makefile
# cd nginx-1.16.0/
# ls -al
# ./configure --prefix=/usr/local/nginx --user=nginx --group=nginx --with-http_dav_module --with-http_stub_status_module --with-http_addition_module --with-http_sub_module --with-http_flv_module --with-http_mp4_module --with-http_ssl_module --with-pcre=/usr/local/src/pcre-8.42
--prefix=/usr/local/nginx 定义安装路径
--user=nginx 指定用户
--group=nginx 指定用户组
--with-pcre=/usr/local/src/pcre-8.42 #这个是可选项,和上面解压到的路径一致,如果yum安装了依赖包这里也可以不用(例如上面已经安装了pcre*系列)
最后出现如图:
编辑完成后:再次 # ls -al ,此时就多了一个 Makefile的文件 (还有一个objs目录,),如果出错,解决错误后将这两个删除再重新执行即可。
4、编辑安装nginx
# make
出现如下:
...
objs/ngx_modules.o \
-ldl -lpthread -lcrypt /usr/local/src/pcre-8.42/.libs/libpcre.a -lssl -lcrypto -ldl -lpthread -lz \
-Wl,-E
sed -e "s|%%PREFIX%%|/usr/local/nginx|" \
-e "s|%%PID_PATH%%|/usr/local/nginx/logs/nginx.pid|" \
-e "s|%%CONF_PATH%%|/usr/local/nginx/conf/nginx.conf|" \
-e "s|%%ERROR_LOG_PATH%%|/usr/local/nginx/logs/error.log|" \
< man/nginx.8 > objs/nginx.8
make[1]: Leaving directory `/mydata/nginx-1.16.0'
//继续
# make install
出现如下:
...
test -d '/usr/local/nginx/logs' \
|| mkdir -p '/usr/local/nginx/logs'
test -d '/usr/local/nginx/html' \
|| cp -R html '/usr/local/nginx'
test -d '/usr/local/nginx/logs' \
|| mkdir -p '/usr/local/nginx/logs'
make[1]: Leaving directory `/mydata/nginx-1.16.0'
OK 完成
最后 在 /usr/local/下有nginx目录生成。并且里面包含以下几个目录
说明已经成功安装了 nginx
5、Nginx的启动与停止
nginx安装完成后启动文件为/usr/local/nginx/sbins/nginx ,此为一个二进制文件。在没有设置启动文件和环境变量之前,只能通过此文件进行启动、停止等
(1)启动nginx
启动nginx
# cd /usr/local/nginx/sbin/
# ./nginx //启动nginx
浏览器访问:http://118.24.241.124/ 出现
(2)查看nginx的运行状态
查看nginx的运行状态
# ps aux | grep nginx //ps aux 列出系统所有的进程
出现如下:
root 3228 0.0 0.0 46088 1136 ? Ss 01:21 0:00 nginx: master process /usr/local/nginx/sbin/nginx
nginx 3229 0.0 0.0 48628 1996 ? S 01:21 0:00 nginx: worker process
root 3231 0.0 0.0 112708 980 pts/0 S+ 01:21 0:00 grep --color=auto nginx
说明启动成功,(此时http://106.12.2.195/就可以访问默认站点了)
其中第一行为nginx的主进程(master) 进程PID为3228
查看端口占用情况
# netstat -tlnp
出现
tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN 3228/nginx: master
也说明nginx正常工作
(3)停止nginx
# /usr/local/nginx/sbin/nginx -s top //强制停止 立即停止
# /usr/local/nginx/sbin/nginx -s quit //从容停止,在完成当前任务后再停止
# kill 3228 //杀死进程平滑停止 3228为nginx主进程的PID(可以通过ps aux | grep nginx 命令查看,第一条master对应的是)
或 killall nginx //杀死进程平滑停止
(4)重启nginx
# /usr/local/nginx/sbin/nginx -s reload //平滑重启,必须在nginx已经启动的状态下才能执行。
6、添加环境变量
到此,我们每次启动nginx,必须使用/usr/local/nginx/sbin/nginx 输入太繁琐,把这个nginx加入到环境变量里,在任何地方通过nginx 就可以直接启动了。
# /usr/local/nginx/sbin/nginx -t #检查nginx配置文件的语法是否正确
出现:
nginx: the configuration file /usr/local/nginx/conf/nginx.conf syntax is ok
nginx: configuration file /usr/local/nginx/conf/nginx.conf test is successful
// 编辑添加到环境变量
# vim /etc/profile #添加环境变量
把 export PATH=$PATH:/usr/local/nginx/sbin 添加到此文件的最后
# source /etc/profile //立即生效
查看
# echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin:/usr/local/nginx/sbin 添加进来了
# nginx 直接启动
# netstat -antup|grep nginx //查看端口
tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN 27452/nginx: master
OK nginx服务已经运行了
测试:
//现在重启系统
#shutdown -r now
#[root@localhost ~]# netstat -antup | grep nginx //下面什么都没有,站点http://118.24.241.124/也无法访问
[root@localhost ~]# nginx //使用我们设置的好的环境变量启动nginx,现在http://118.24.241.124/可以访问了
#[root@localhost ~]# netstat -antup | grep nginx 可以出现端口信息了
7、设置可执行文件、加入开启重启
(更多请见 https://blog.csdn.net/fsx2550553488/article/details/81039796)
# vim /etc/init.d/nginx
# ======================== 粘贴内容 start ========================
#!/bin/bash
# chkconfig: - 85 15
# description: nginx is a World Wide Web server. It is used to serve
#加载函数库
. /etc/rc.d/init.d/functions
#加载网络配置文件
. /etc/sysconfig/network
#检查网络是否启动
[[ "$NETWORKING" = "no" ]] && exit 0
#定义变量
nginx=/usr/local/nginx/sbin/nginx
prog=$(basename $nginx)
NGINX_CONFIG_NAME="/usr/local/nginx/conf/nginx.conf"
#LOCKFILE="/var/lock/nginx/nginx.lock"
#测试nginx主配置文件是否有语法错误
configtest() {
$nginx -t
}
#启动函数
start() {
configtest
#-x:检测nginx的二进制系统文件是否存在,如果不存在直接退出
test -x $nginx || exit 5
#-f:检测nginx的主配置文件是否存在,如果不存在直接退出
test -f $NGINX_CONFIG_NAME || exit 6
#如果不存在pid目录、lock目录,则创建
mkdir -p /var/run/nginx
mkdir -p /var/lock/nginx
#输出提示语句,表明nginx服务即将启动
echo -n $"Starting $prog :"
#使用nginx二进制系统文件启动nginx服务
daemon $nginx -c $NGINX_CONFIG_NAME
#获取nginx启动的返回状态值,存入变量retval
retval=$?
echo
#如果返回状态值为0.表示启动成功,并创建锁文件
test $retval -eq 0 && touch $LOCKFILE
return $retval
}
#停止函数
stop() {
#输出提示语句,表示nginx服务即将关闭
echo "Stoping $prog :"
#使用functions文件中定义的killproc函数,杀死nginx对应的进程
killproc $prog -QUIT
#获取nginx关闭的返回状态值,存入变量retval(就是上一条命令执行是否成功的值)
retval=$?
echo
#如果返回状态值为0表示关闭成功,删除锁文件
[ $retval -eq 0 ] && rm -f $LOCKFILE
return $retval
}
#重启函数
restart() {
configtest || return $?
stop
sleep 3
start
}
#热加载
reload() {
configtest || return $?
echo -n $"Reloading $prog :"
#同stop,参数不同,这个表示重启进程
killproc $nginx -HUP
retval=$?
echo
}
#强制重启
force_reload() {
restart
}
#状态查询
rt_status() {
#functions中的status函数,获取对应进程的状态
status $prog
#如果获取状态为runing,则显示配置文件检测结果,更加细化
[ $? -eq 0 ] && echo -n `configtest`
}
case $1 in
status)
rt_status
;;
start)
start
;;
stop)
stop
;;
restart)
restart
;;
reload)
reload
;;
force_reload)
force_reload
;;
*)
#如果输入的$1不是上面的,则输出提示信息
echo "Usage:$prog {start|stop|status|reload|force_reload|restart}"
exit 1
;;
esac
# ======================== 粘贴内容 end =========================
// 赋予脚本执行权限。
# chmod +x /etc/init.d/nginx
加入开机重启
// 添加至服务管理列表,设置开机自启。
# chkconfig --add nginx
# chkconfig nginx on
// 启动nginx
# service nginx start
// 重启服务器测试:
# shutdown -r now
OK 开机重启完成。
nginx常用命令
//初始安装后没有加载环境变量前只能使用
# /usr/local/nginx/sbin/nginx 来启动服务
# /usr/local/nginx/sbin/nginx -s stop 停止服务
# /usr/local/nginx/sbin/nginx -s reload 平滑重启(必须在开启的状态下才可以)
//设置环境变量后,直接通过
# nginx 来启动即可
//设置启动脚本,并且通过chkconfig --add nginx 加到service服务后,可以通过
# service nginx start (systemctl start nginx.service)
# service nginx stop (systemctl stop nginx.service)
# service nginx restart (systemctl restart nginx.service)
# service nginx status (systemctl status nginx.service)
来操作
也可以使用:
# /etc/init.d/nginx start
# /etc/init.d/nginx stop
# /etc/init.d/nginx restart
# /etc/init.d/nginx status
#netstat -antup //查看所有端口
#netstat -antup|grep nginx //查看nginx端口
1、删除系统自带的 mariadb
# find / -name mariadb*
# yum -y remove mariadb* boost-*
2、安装依赖
# yum -y install make gcc gcc-c++ cmake bison bison-devel ncurses ncurses-devel
3、创建用户和安装目录
//创建msyql用户
# useradd -M -s /sbin/nologin mysql
//创建安装目录
# mkdir /usr/local/mysql mysql安装目录
# mkdir /usr/local/mysql/data (数据库目录)
# mkdir /usr/local/mysql/log (日志目录)
# touch /usr/local/mysql/log/mysqld.log 创建mysql日志文档
//改变mysql的属组
# chown -R mysql:mysql /usr/local/mysql/
或者下面两句
# chown -R mysql /usr/local/mysql/
# chgrp -R mysql /usr/local/mysql/
4、下载并解压
# cd /mydata
# wget -c https://dev.mysql.com/get/Downloads/MySQL-5.7/mysql-boost-5.7.22.tar.gz
注意:下载完整的包大小为:48985783
# 解压
# tar -zxvf mysql-boost-5.7.22.tar.gz //注意解压出来的目录名为 mysql-5.7.22
5、编译,生成makefile
# cd mysql-5.7.22
# cmake -DCMAKE_INSTALL_PREFIX=/usr/local/mysql -DMYSQL_DATADIR=/usr/local/mysql/data -DDOWNLOAD_BOOST=1 -DWITH_BOOST=/mydata/mysql-5.7.22/boost/boost_1_59_0 -DSYSCONFDIR=/etc -DWITH_MYISAM_STORAGE_ENGINE=1 -DWITH_INNOBASE_STORAGE_ENGINE=1 -DWITH_MEMORY_STORAGE_ENGINE=1 -DWITH_ARCHIVE_STORAGE_ENGINE=1 -DWITH_FEDERATED_STORAGE_ENGINE=1 -DWITH_BLACKHOLE_STORAGE_ENGINE=1 -DWITH_PARTITION_STORAGE_ENGINE=1 -DWITH_READLINE=1 -DMYSQL_UNIX_ADDR=/usr/local/mysql/mysql.sock -DMYSQL_TCP_PORT=3306 -DENABLED_LOCAL_INFILE=1 -DENABLE_DTRACE=0 -DEXTRA_CHARSETS=all -DDEFAULT_CHARSET=utf8 -DDEFAULT_COLLATION=utf8_general_ci -DMYSQL_USER=mysql
配置项解析:
cmake -DCMAKE_INSTALL_PREFIX=/usr/local/mysql \ #[MySQL安装的根目录]
-DMYSQL_DATADIR=/usr/local/mysql/data \ #[MySQL数据库文件存放目录]
-DDOWNLOAD_BOOST=1
-DWITH_BOOST=/mydata/mysql-5.7.22/boost/boost_1_59_0 #[指定boost安装路径] 注意这里换成你自己的路径
-DSYSCONFDIR=/etc #[MySQL配置文件my.cnf所在目录]
-DWITH_MYISAM_STORAGE_ENGINE=1
-DWITH_INNOBASE_STORAGE_ENGINE=1
-DWITH_MEMORY_STORAGE_ENGINE=1
-DWITH_ARCHIVE_STORAGE_ENGINE=1
-DWITH_FEDERATED_STORAGE_ENGINE=1
-DWITH_BLACKHOLE_STORAGE_ENGINE=1
-DWITH_PARTITION_STORAGE_ENGINE=1
-DWITH_READLINE=1
-DMYSQL_UNIX_ADDR=/usr/local/mysql/mysql.sock #[MySQL的sock文件目录]
-DMYSQL_TCP_PORT=3306 #[MySQL的监听端口]
-DENABLED_LOCAL_INFILE=1 #[启用加载本地数据]
-DENABLE_DTRACE=0
-DEXTRA_CHARSETS=all #[使MySQL支持所有的扩展字符]
-DDEFAULT_CHARSET=utf8 #[设置默认字符集为utf8]
-DDEFAULT_COLLATION=utf8_general_ci #[设置默认字符校对]
-DMYSQL_USER=mysql \ #[指定mysql用户]
-DWITH_SYSTEMD=1 #[用systemd管理mysql
... 更多CMAKE参数 见 https://blog.csdn.net/d_o_n_g2/article/details/76586691
最后出现:
...
...
CMake Warning:
Manually-specified variables were not used by the project:
MYSQL_USER
WITH_MEMORY_STORAGE_ENGINE
WITH_READLINE
-- Build files have been written to: /mydata/mysql-5.7.22
OK 配置编译成功
如果失败 ,删除 申城的CMAKECache.text
6、make && make install 安装数据库
# make #此过程时间过长大约45分钟,也可以指定参数 make -j 2 j 表示指定cpu核数 能加快编译
最后出现:
...
Linking CXX executable mysql_embedded
[ 99%] Built target mysql_embedded
Scanning dependencies of target mysqltest_embedded
[ 99%] Building CXX object libmysqld/examples/CMakeFiles/mysqltest_embedded.dir/__/__/client/mysqltest.cc.o
Linking CXX executable mysqltest_embedded
[ 99%] Built target mysqltest_embedded
Scanning dependencies of target my_safe_process
[100%] Building CXX object mysql-test/lib/My/SafeProcess/CMakeFiles/my_safe_process.dir/safe_process.cc.o
Linking CXX executable my_safe_process
[100%] Built target my_safe_process
OK 编译成功
继续
# make install
最后出现:
...
-- Installing: /usr/local/mysql/./COPYING-test
-- Installing: /usr/local/mysql/./README-test
-- Up-to-date: /usr/local/mysql/mysql-test/mtr
-- Up-to-date: /usr/local/mysql/mysql-test/mysql-test-run
-- Installing: /usr/local/mysql/mysql-test/lib/My/SafeProcess/my_safe_process
-- Up-to-date: /usr/local/mysql/mysql-test/lib/My/SafeProcess/my_safe_process
-- Installing: /usr/local/mysql/mysql-test/lib/My/SafeProcess/Base.pm
-- Installing: /usr/local/mysql/support-files/mysqld_multi.server
-- Installing: /usr/local/mysql/support-files/mysql-log-rotate
-- Installing: /usr/local/mysql/support-files/magic
-- Installing: /usr/local/mysql/share/aclocal/mysql.m4
-- Installing: /usr/local/mysql/support-files/mysql.server
OK 安装完成
再次修改 安装目录的属主权限
# chown -R mysql:mysql /usr/local/mysql/ -------- 很重要,一定要修改
注意: 如果你的服务器是1G内容的话,在make 编译的时候可能会报以下错误:
。。。
[ 36%] Building CXX object sql/CMakeFiles/sql.dir/item_func.cc.o
[ 36%] Building CXX object sql/CMakeFiles/sql.dir/item_geofunc.cc.o
c++: internal compiler error: Killed (program cc1plus)
Please submit a full bug report, 内存不足
with preprocessed source if appropriate.
See for instructions.
make[2]: *** [sql/CMakeFiles/sql.dir/item_geofunc.cc.o] Error 4
make[1]: *** [sql/CMakeFiles/sql.dir/all] Error 2
make: *** [all] Error 2
内存不足,mysql5.6.9以上的版本,编译安装需要1G内存以上,而我的云主机刚好1G内存。解决方案内存不足当然加内存,加内存太贵?用硬盘创建虚拟内存
# dd if=/dev/zero of=/data/swap_add bs=1M count=2048 //创建一个名为swap_add的虚拟内存,大小为2048MB 即为2G
# mkswap /data/swap_add
# swapon /data/swap_add
# swapon -s
再次执行 # make 即可。
7、 创建配置my.cnf文件
# vim /etc/my.cnf
# ======================== 粘贴内容 start ========================
[mysqld]
basedir=/usr/local/mysql/
datadir=/usr/local/mysql/data
socket=/usr/local/mysql/mysql.sock
user=mysql
symbolic-links=0
lower_case_table_names=1
# 允许最大连接数
max_connections=200
# 服务端使用的字符集默认为8比特编码的latin1字符集
character-set-server=utf8
# 创建新表时将使用的默认存储引擎
default-storage-engine=INNODB
max_allowed_packet=16M
[client]
port=3306
[mysqld_safe]
pid-file=/usr/local/mysql/mysqld.pid
log-error=/usr/local/mysql/log/mysqld.log
# ======================== 粘贴内容 end ========================
//设置此文件可执行权限
# chmod 644 /etc/my.cnf
8、配置MySQL启动脚本
# cp /usr/local/mysql/support-files/mysql.server /etc/init.d/mysqld #复制启动脚本到/etc/init.d
#修改变量
# vim /etc/init.d/mysqld
给以下两个变量赋值
basedir=/url/local/mysql/
datadir=/url/local/mysql/data
# chmod +x /etc/init.d/mysqld (其实不执行这里也可以,默认已经用可执行权限了)
# 添加到环境变量
# vim /etc/profile
在此文件最后添加如下内容:(因为之前已经添加过nginx的环境变量了)
PATH="$PATH:/usr/local/nginx/sbin:/usr/local/mysql/bin"
export PATH
//立即生效
# source /etc/profile
# echo $PATH
9、初始化数据库 并设置开机自启动
初始化之前确保/usr/local/mysql/data/下没有任何文件、/var/lock/subsys/下没有mysql的锁定文件, 如果有就删除。
--initialize 会生成一个随机密码,
--initialize-insecure 不会生成密码,在MySQL安全配置向导mysql_secure_installation设置密码时,可自由选择 mysql 密码等级。
# 初始化命令
# /usr/local/mysql/bin/mysqld --initialize --user=mysql --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data
出现以下内容:
。。。
2019-04-21T19:54:56.222409Z 0 [Warning] No existing UUID has been found, so we assume that this is the first time that this server has been started. Generating a new UUID: 5638d763-646f-11e9-b272-fa163ed3ecd0.
2019-04-21T19:54:56.225336Z 0 [Warning] Gtid table is not ready to be used. Table 'mysql.gtid_executed' cannot be opened.
2019-04-21T19:54:56.226647Z 1 [Note] A temporary password is generated for root@localhost: xMqCw&*d65Qh <------这个xMqCw&*d65Qh就是初始密码
OK初始化完成
//启动MySQL
# /etc/init.d/mysqld start
Starting MySQL. SUCCESS! --- 启动成功
//修改密码
# mysql -u root -p
Enter password: <------这里输入上面生成的密码 xMqCw&*d65Qh
mysql>set PASSWORD = PASSWORD("niu123456"); <------设置新密码 或者使用 alter user 'root'@'localhost' identified by '123456';
mysql> flush privileges; // 使用flush privileges在插入之后刷新系统权限相关表
mysql>quit;
用新密码重新登陆
OK 新密码设置成功
# 设置开启启动
# chkconfig --add mysqld #添加到开机启动项
# chkconfig mysqld on #添加开机自启动
# shutdown -r now //重启服务器 。。。
# /etc/init.d/mysqld status;
SUCCESS! MySQL running (4312) 开机重启设置成功
(也可以配置安全向导 [root@qinser data]# mysql_secure_installation 详细 https://blog.csdn.net/harryxxxxx/article/details/81135222)
10、设置远程连接
mysql> use mysql;
mysql> select host,user from user;
+-----------+---------------+
| host | user |
+-----------+---------------+
| localhost | mysql.session |
| localhost | mysql.sys |
| localhost | root |
+-----------+---------------+
3 rows in set (0.00 sec)
mysql> grant all privileges on *.* to 'root'@'%' identified by 'niu123456';
ERROR 1819 (HY000): Your password does not satisfy the current policy requirements -- 提示密码太难简单
mysql>
mysql> set global validate_password_policy=0; //降低密码复杂度
Query OK, 0 rows affected (0.01 sec)
mysql> grant all privileges on *.* to 'root'@'%' identified by 'niu123456';
Query OK, 0 rows affected, 1 warning (0.00 sec)
mysql> select user,host from user;
+---------------+-----------+
| user | host |
+---------------+-----------+
| root | % |
| mysql.session | localhost |
| mysql.sys | localhost |
| root | localhost |
+---------------+-----------+
4 rows in set (0.00 sec)
mysql>
mysql> flush privileges;
Query OK, 0 rows affected (0.00 sec)
1、准备:
1、 卸载系统自带的mariadb*
# rpm -qa|grep mariadb
mariadb-libs-5.5.60-1.el7_5.x86_64
# rpm -e --nodeps mariadb-libs-5.5.60-1.el7_5.x86_64 删除此
或者使用yum命令删除
# yum -y remove mariadb* boost-*
2、检查mysq用户、用户组是否存在,不存在就创建
[root@localhost /]# cat /etc/group | grep mysql
[root@localhost /]# cat /etc/passwd | grep mysql
[root@localhost /]#
[root@localhost /]# useradd -s /sbin/nologin mysql //创建名为mysq的用户并且没有登录权限 (不指定 -g默认创建了同名mysql的用户组)
3、删除my.cnf mysql (若存在)
[root@localhost /]# rm -f /etc/my.cnf
[root@localhost /]# rpm -qa | grep mysql
复制此链接地址,即可拿到下载地址https://dev.mysql.com/get/Downloads/MySQL-5.7/mysql-5.7.26-el7-x86_64.tar.gz
// 下载
# cd /mydata
# wget https://dev.mysql.com/get/Downloads/MySQL-5.7/mysql-5.7.25-el7-x86_64.tar.gz
# wget https://dev.mysql.com/get/Downloads/MySQL-5.7/mysql-5.7.26-el7-x86_64.tar.gz
// 解压到 /usr/local/mysql/ (即安装目录)
# mkdir -p /usr/local/mysql
# tar -zxvf mysql-5.7.25-el7-x86_64.tar.gz
# mv /mydata/mysql-5.7.25-el7-x86_64/* /usr/local/mysql/ //移动到安装目录
# mkdir /usr/local/mysql/data (数据库目录)
# mkdir /usr/local/mysql/log (日志目录)
# touch /usr/local/mysql5.7/log/mysqld.log
//改变mysql的属组
# chown -R mysql:mysql /usr/local/mysql/
或者下面两句
# chown -R mysql /usr/local/mysql/
# chgrp -R mysql /usr/local/mysql/
3、安装
# /usr/local/mysql/bin/mysqld --initialize --user=mysql --basedir=/usr/local/mysql/ --datadir=/usr/local/mysql/data/
此版本采用mysql_install_db 进行安装,不再使用cmake 编译安装
# /usr/local/mysql/bin/mysql_install_db //安装命令
--initialize //生成默认密码
--user=mysql //指定mysql用户
--basedir=/usr/local/mysql/ //安装目录
--datadir=/usr/local/mysql/data/ // 数据库目录
出现:
2019-04-27T20:02:12.604239Z 0 [Warning] TIMESTAMP with implicit DEFAULT value is deprecated. Please use --explicit_defaults_for_timestamp server option (see documentation for more details).
2019-04-27T20:02:13.774448Z 0 [Warning] InnoDB: New log files created, LSN=45790
2019-04-27T20:02:13.942098Z 0 [Warning] InnoDB: Creating foreign key constraint system tables.
2019-04-27T20:02:14.014011Z 0 [Warning] No existing UUID has been found, so we assume that this is the first time that this server has been started. Generating a new UUID: 59a509a7-6927-11e9-bd28-fa163ed3ecd0.
2019-04-27T20:02:14.016530Z 0 [Warning] Gtid table is not ready to be used. Table 'mysql.gtid_executed' cannot be opened.
2019-04-27T20:02:14.017196Z 1 [Note] A temporary password is generated for root@localhost: _C)iHy)78QJO
OK 安装成功
注意最后的 _C)iHy)78QJO 表示默认密码。移动要牢记
如果报错: /usr/local/mysql/bin/mysqld: error while loading shared libraries: libnuma.so.1: cannot open shared object file: No such file or directory
是因为有个依赖包没有安装:解决办法:
# yum remove libnuma.so.1
# yum -y install numactl.x86_64
再次执行 OK
查看数据库目录 /usr/local/mysql/data/ 有如下生成:
并且
4、创建配置文件my.cnf
# vim /etc/my.cnf
# ======================== 粘贴内容 start ========================
[mysqld]
basedir=/usr/local/mysql/
datadir=/usr/local/mysql/data
socket=/tmp/mysql.sock
user=mysql
symbolic-links=0
lower_case_table_names=1
# 允许最大连接数
max_connections=200
# 服务端使用的字符集默认为8比特编码的latin1字符集
character-set-server=utf8
# 创建新表时将使用的默认存储引擎
default-storage-engine=INNODB
max_allowed_packet=16M
[client]
port=3306
[mysqld_safe]
log-error=/usr/local/mysql/log/mysqld.log
# ======================== 粘贴内容 end ========================
//设置此文件可执行权限
# chmod 644 /etc/my.cnf
5、启动并添加到环境变量
#创建驱动文件
# cp /usr/local/mysql/support-files/mysql.server /etc/init.d/mysqld
#修改变量
# vim /etc/init.d/mysqld
给以下两个变量赋值
basedir=/url/local/mysql/
datadir=/url/local/mysql/data
# chmod +x /etc/init.d/mysqld
# service mysqld start //启动
出现
my_print_defaults: [Warning] World-writable config file '/etc/my.cnf' is ignored.
Starting MySQL.my_print_defaults: [Warning] World-writable config file '/etc/my.cnf' is ignored.
my_print_defaults: [Warning] World-writable config file '/etc/my.cnf' is ignored.
Logging to '/usr/local/mysql/data/qinser.com.err'.
. [ OK ]
OK 启动成功
# 添加到环境变量
# vim /etc/profile
在此文件最后添加如下内容:
# MYSQL
export PATH="$PATH:/usr/local/mysql/bin"
//立即生效
# source /etc/profile
# echo $PATH
6、获取初始密码,连接mysql,更改默认密码,允许远程访问
// 获取初始密码
# cat /root/.mysql_secret
# Password set for user 'root@localhost' at 2019-04-21 03:02:13
Kkxii!:fvS.a <------这个就是初始密码
//修改密码
[root@qinser mydata]# mysql -u root -p
mysql: [Warning] World-writable config file '/etc/my.cnf' is ignored. (这里是忽略文件,提示/etc/my.cnf的权限过大,设置成644就没有有这个提示了)
Enter password: <------这里输入上面的初始密码
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 11
Server version: 5.7.25
mysql> set PASSWORD = PASSWORD('niu123456'); <----- 新密码 niu123456
mysql> flush privileges; // 使用flush privileges在插入之后刷新系统权限相关表
Query OK, 0 rows affected (0.00 sec)
OK 新密码设置成功
7、设置开启启动
方法一:(推荐)
# chkconfig --add mysqld //加入系统中,可以是使用 systemctl status mysqld.service 命令了
# chkconfig mysqld on //开机自启动
方法二:
[root@VMTest mysql]# chkconfig --level 35 mysqld on
[root@VMTest mysql]# chkconfig --list mysqld
[root@VMTest mysql]# chkconfig --add mysqld
[root@VMTest mysql]# chkconfig --list mysqld
[root@VMTest mysql]# service mysqld status
8、设置远程访问
# mysql -u root -p
Enter password:
mysql> use mysql; --选择mysql数据库
mysql> select host,user from user;
+-----------+---------------+
| host | user |
+-----------+---------------+
| localhost | mysql.session |
| localhost | mysql.sys |
| localhost | root |
+-----------+---------------+
3 rows in set (0.00 sec)
mysql>
mysql> create user 'root'@'%' identified by 'niu123456'; //% 代表所有主机,如果只允许特点主机访问,可以设置对应的ip地址
Query OK, 0 rows affected (0.00 sec)
mysql>
mysql> select host,user from user;
+-----------+---------------+
| host | user |
+-----------+---------------+
| % | root |
| localhost | mysql.session |
| localhost | mysql.sys |
| localhost | root |
+-----------+---------------+
4 rows in set (0.00 sec)
mysql>
Mysql5.7.26 安装全部完成
1、下载安装包
# cd /mydata
# wget https://www.php.net/distributions/php-7.2.17.tar.gz
注意:一定要下载完整,不能有报错。
2、安装依赖
# yum -y 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
3、编辑安装php
# tar -zxvf php-7.2.17.tar.gz
# cd php-7.2.17/
# 编辑PHP的配置项
# ./configure --prefix=/usr/local/php --with-config-file-path=/etc --enable-fpm --with-fpm-user=nginx --with-fpm-group=nginx --enable-inline-optimization --disable-debug --disable-rpath --enable-shared --enable-soap --with-libxml-dir --with-xmlrpc --with-openssl --with-mhash --with-pcre-regex --with-sqlite3 --with-zlib --enable-bcmath --with-iconv --with-bz2 --enable-calendar --with-curl --with-cdb --enable-dom --enable-exif --enable-fileinfo --enable-filter --with-pcre-dir --enable-ftp --with-gd --with-openssl-dir --with-jpeg-dir --with-png-dir --with-zlib-dir --with-freetype-dir --enable-gd-jis-conv --with-gettext --with-gmp --with-mhash --enable-json --enable-mbstring --enable-mbregex --enable-mbregex-backtrack --with-libmbfl --with-onig --enable-pdo --with-mysqli=mysqlnd --with-pdo-mysql=mysqlnd --with-zlib-dir --with-pdo-sqlite --with-readline --enable-session --enable-shmop --enable-simplexml --enable-sockets --enable-sysvmsg --enable-sysvsem --enable-sysvshm --enable-wddx --with-libxml-dir --with-xsl --enable-zip --enable-mysqlnd-compression-support --with-pear --enable-opcache --disable-fileinfo
注意这里配置了PHP的安装目录、PHP的用户为nginx、用户组为nginx 。和上面安装的nginx的用户、用户组一定要相同。
如果出现如下报错:configure: WARNING: unrecognized options: --with-mcrypt, --enable-gd-native-ttf
说明此版本不再支持 --with-mcrypt, --enable-gd-native-ttf 这两个选项, 直接删除,重新编辑即可。
4、make && make install
[root@localhost php-7.2.17]# make
最新出现
make: *** [ext/fileinfo/libmagic/apprentice.lo] Error 1
是因为服务器内存不足1G。只需要在配置命令中添加 --disable-fileinfo即可。
再次执行
[root@localhost php-7.2.17]# ./configure ..... --disable-fileinfo
再次执行
[root@localhost php-7.2.17]# make
。。。
最后出现
invertedregexiterator.inc
pharcommand.inc
directorytreeiterator.inc
directorygraphiterator.inc
clicommand.inc
phar.inc
Build complete.
Don't forget to run 'make test'.
继续:
# make install
最后出现:
安装成功!
5、添加环境变量到PHP中
# vim /etc/profile
在此文件的最后添加如下两行
PATH=$PATH:/usr/local/php/bin
export PATH
# source /etc/profile 使配置立即生效
再次检查:# php -v
# echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/usr/local/nginx/sbin:/usr/local/mysql/bin:/usr/local/php/bin:/root/bin
OK 已经配置成功
6、配置PHP-fpm 并设置开启重启
进入php的安装包(注意是解压出来的那个安装包,而不是安装目录)
# cd /mydata/php-7.2.17/
# ls -al
可以找到两个 php.ini-development(测试配置文件) php.ini-production生产环境配置文件
复制以下四个文件。
# cp php.ini-production /etc/php.ini //设置PHP启动文件
# cp sapi/fpm/init.d.php-fpm /etc/init.d/php-fpm //把php-fpm放入系统管理配置项中
# chmod +x /etc/init.d/php-fpm //为其添加可执行权限
# 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
添加到环境系统启动项
# chkconfig --add php-fpm //添加到开机重启
查看是否添加成功
# chkconfig --list
......
mysqld 0:off 1:off 2:on 3:on 4:on 5:on 6:off
netconsole 0:off 1:off 2:off 3:off 4:off 5:off 6:off
network 0:off 1:off 2:on 3:on 4:on 5:on 6:off
nginx 0:off 1:off 2:on 3:on 4:on 5:on 6:off
php-fpm 0:off 1:off 2:on 3:on 4:on 5:on 6:off --- php-fpm 添加成功
启动 php-fpm
# chkconfig php-fpm on //启动php-fpm
# /etc/init.d/php-fpm start
出现 Starting php-fpm done
# /etc/init.d/php-fpm status //查看PHP(也就是php-fpm)运行状态
php-fpm (pid 2306) is running... 运行成功
7、常用命令(启动PHP 也就是 php-fpm)
/etc/init.d/php-fpm start 开启服务
/etc/init.d/php-fpm stop 停止服务
/etc/init.d/php-fpm status 查看状态
/etc/init.d/php-fpm restart 重启服务
8、PHP安装路径
# netstat -ntpl 查看9000端口是否开启(PHP使用的是9000端口)
/etc/init.d/php-fpm php启动文件
/usr/local/php PHP安装目录
/usr/local/php/bin/ 可执行目录
/etc/php.ini PHP配置文件
9、让nginx支持php
(1)在默认站点目录下创建 index.php
# vim /usr/local/nginx/html/index.php
内容如下:
phpinfo();
?>
(2)修改默认站点的配置文件
# vim /usr/local/nginx/conf/nginx.conf
修改如下两处
Nginx中的PHP是以fastcgi扩展的方式结合起来的,也可以理解为Nginx代理了php的fastcgi,因此还需要开放下面的配置,(把前面的#号去掉)
(3)重启nginx
访问:http://118.24.241.124/index.php
OK PHP可以正常在nginx服务器运行了
10、让PHP支持mysql
(1)把phpmyadmin.tar.gz 上传到 /usr/share/nginx/html/ 并解压 # tar -zxvf phpinfomyadmin.tar.gz
(2)http://118.24.241.124/phpmyadmin/index.php 输入用户名root 密码niu123456 登录,出现如下:
现在报错 mysqli_real_connect(): (HY000/2002): No such file or directory,错误原因默认php中配置的mysqli没有与实际的mysql.sock对应正确;
首先找我们配置的/etc/my.cnf 文件找到mysql.sock的正确路径:
# vim /etc/my.cnf 大约8行: socket对应的路径为: /usr/local/mysql/mysql.sock
#vim /etc/php.ini
大约1040行
大约1186行
重启php
# /etc/init.d/php-fpm restart;
再次登录 http://118.24.241.124/phpmyadmin/index.php
OK 成功
到此, 整个LNMP 全部安装配置完成!!