lnmp

239 阅读6分钟

lnmp环境搭建

  • Centos 7.*
  • nginx-1.18.0
  • MySQL 8.0.20
  • php 7.4.*

准备工作:

1.关闭防火墙: services stop iptables

2.关闭SELinux: setenforce 0

3.安装约定:

软件源代码包存放位置:/lnmp/src

源码包编译安装位置: /usr/local/软件名

数据库数据文件存储路径:/data/mysql

一、编译安装之前,先安装依赖包

1.使用CentOS yum 命令一键安装

yum  -y  install autoconf libjpeg libjpeg-devel libpng libpng-devel freetype freetype-devel libxml2 libxml2-devel zlib zlib-devel glibc glibc-devel glib2 glib2-devel bzip2 bzip2-devel ncurses ncurses-devel curl curl-devel e2fsprogs e2fsprogs-devel krb5 krb5-devel libidn libidn-devel openssl openssl-devel openldap openldap-devel nss_ldap openldap-clients openldap-servers gd gd2 gd-devel gd2-devel perl-CPAN pcre-devel net-snmp net-snmp-devel

yum -y install gcc automake autoconf libtool make gcc-c++ glibc libxslt-devel libjpeg libjpeg-devel libpng libpng-devel freetype freetype-devel libxml2 libxml2-devel zlib zlib-devel glibc glibc-devel glib2 glib2-devel bzip2 bzip2-devel ncurses ncurses-devel curl curl-devel e2fsprogs e2fsprogs-devel krb5-devel libidn libidn-devel openssl openssl-devel pcre pcre-devel libmcrypt libmcrypt-devel cmake

yum install -y gcc gcc-c++ glibc glibc-devel gd gd-devel zlib zlib-devel libtool-ltdl-devel flex autoconf automake

二、安装MySQL(8.0.21)

部分内容转载:blog.csdn.net/damaibao/ar…

1、记录8.0.21安装时候的坑

必备知识:

1、 mysql从5.5版本开始,不再使用./configure编译,而是使用cmake编译器。

2 、mysql从8.0.16版本开始,要求cmake的版本是cmake3以上

3、 centos7.6默认安装的是cmake2.8.12.2和gcc4.8.5,这是为考虑向下兼容centos6.2及稳定性,但对编辑安装mysql8.0.16会形成阻碍,所以安装前建议升级cmake到cmake3以上(最新为3.14),并以scl软件集(Software Collections)的方式临时切换为高版本的gcc6.3完成mysql编辑(本文会分别讲述此两项)

4、务必记得先删除mariadb相关内容,尤其要删除/etc/my.cnf文件,mysql启动时会默认加载该配置文件,导致在安装参数里的设置无效,会默认加载原系统自带的mariadb目录,然后引发一系列的错误

5、请仔细查看mysql的cmake预编译参数以及正确正确的mysql源码包,这个地方不能乱来

mysql8.0官方编译参数:dev.mysql.com/doc/refman/…

1、centos 7.* 数据库版本的选择 2、无法用yum源安装的相关依赖有cmake-3.14.5、gcc6.3

3、卸载CentOS自带的mariadb

yum erase mariadb

4、安装基本依赖包,先用yum安装cmake、automake 、autoconf ,另MySQL 8.x需要最少安装的包有:bison,gcc、gcc-c++、ncurses-devel、openssl-devel

yum install cmake make -y
yum install gcc gcc-c++ autoconf bison automake \
openssl openssl-devel zlib* fiex* libxml* \
ncurses-devel libmcrypt* libtool-ltdl-devel* -y

5、查看当前gcc版本

gcc -v

6、安装gcc8.3,这里介绍使用scl软件集(Software Collections)实现多个gcc版本之间的灵活切换

# 安装scl源
yum install centos-release-scl -y

# 列出有哪些源可以使用
yum list | grep gcc

# 安装8.3版本的gcc、gcc-c++、gdb,当前CentOS7支持3,4,6,7,8五个版本,分别对应GCC4.9,
# GCC5.3,GCC6.3,GCC7.3,,GCC8.2,用户可以根据自己的需要选择安装哪一个版本,本文安装GCC8.2
yum install devtoolset-8-gcc* -y

3、手动更新cmake

wget https://github.com/Kitware/CMake/releases/download/v3.14.5/cmake-3.14.5.tar.gz
yum erase cmake -y
tar zxvf cmake-3.14.5.tar.gz
cd cmake-3.14.5
./bootstrap
gmake && gmake install
/usr/local/bin/cmake  --version
# 显示的版本号为cmake version 3.14.5,再建立软连接[cmake更新完毕]e
ln -s /usr/local/bin/cmake /usr/bin/

###2、创建相关目录&&MySQL源码安装

1、创建数据库文件保存目录【忽略】

mkdir -p /data/www
chown -R www:www /data/www/ #目录所有者
chmod 700 /data/www -R			#目录权限

2、创建用户mysql,不允许直接登录系统 (2~4与5可以顺序颠倒)

cat /etc/passwd |grep mysql
groupadd mysql
useradd mysql -g mysql -s /sbin/nologin
cat /etc/passwd |grep mysql

3、将mysql目录将mysql目录赋予mysql用户的执行权限

chown mysql.mysql -R /usr/local/mysql
chown mysql.mysql -R /var/mysql/data

4、创建MySQL数据库存放目录【新版本安装完成之后会自动创建】

mkdir -p /var/mysql/data

5 、编译mysql

cmake -DCMAKE_INSTALL_PREFIX=/usr/local/mysql \
-DMYSQL_UNIX_ADDR=/usr/local/mysql/msyql.sock \
-DMYSQL_DATADIR=/var/mysql/data \
-DEFAULT_CHARSET=utf8mb4 \ 
-DDEFAULT_COLLATION=utf8mb4_0900_ai_ci \
-DMYSQL_USER=mysql \
-DMYSQL_TCP_PROT=3306 \
-DWITH_SSL=system \
-DWITH_ARCHIVE_STORAGE_ENGINE=1 \
-DWITH_BLACKHOLE_STORAGE_ENGINE=1 \
-DWITH_INNODB_MEMCACHED=ON \
-DENABLED_LOCAL_INFILE=ON \
-DDOWNLOAD_BOOST=1 \
-DWITH_BOOST=/tmp \
      
(mysql 5.*的配置)      
-DWITH_MYISAM_STORAGE_ENGINE=1 \
-DWITH_INNOBASE_STORAGE_ENGINE=1 \
-DWITH_MEMORY_STORAGE_ENGINE=1 \
-DWITH_READLINE=1 \ 
-DENABLED_LOCAL_INFILE=1 \ 

# 网上案例(以这个为准)
cmake .. -DCMAKE_INSTALL_PREFIX=/usr/local/mysql \
-DSYSCONFDIR=/usr/local/mysql \
-DMYSQL_UNIX_ADDR=/usr/local/mysql/mysql.sock \
-DDEFAULT_CHARSET=utf8mb4 \
-DDEFAULT_COLLATION=utf8mb4_0900_ai_ci \
-DWITH_SSL=system \
-DWITH_ARCHIVE_STORAGE_ENGINE=1 \
-DWITH_BLACKHOLE_STORAGE_ENGINE=1 \
-DWITH_INNODB_MEMCACHED=ON \
-DENABLED_LOCAL_INFILE=ON \
-DMYSQL_TCP_PORT=3306 \
-DDOWNLOAD_BOOST=1 \
-DWITH_BOOST=/tmp \
-DMYSQL_DATADIR=/var/mysql/data \
-DFORCE_INSOURCE_BUILD=1



 

6、 首次安装

make && make install

3、初始化mysql,会生成root初始化密码,注意保存

/usr/local/mysql/bin/mysqld --initialize --user=mysql

# 命令结果
A temporary password is generated for root@localhost: Ck0TxtKHZ9,e

4、启动MySQL

/usr/local/mysql/bin/mysqld_safe --user=mysql &

5、进入数据库

/usr/local/mysql/bin/mysql -uroot -p'Ck0TxtKHZ9,e'

6、修改root密码

alter user 'root'@'localhost' identified by "111111";

7、添加mysql远程登录账号

create user root@'%' identified by '111111';
grant all privileges on *.* to root@'%';
flush privileges;

8、查看账号

# 查看目前的账号 有%的root账号表示远程登录账号配置成功
select user,host from mysql.user;

9、配置为系统服务并加入开机启动

cp /usr/local/mysql/support-files/mysql.server /etc/init.d/mysqld
chmod 755 /etc/init.d/mysqld
chkconfig --list|grep mysqld
chkconfig mysqld on
chkconfig --list|grep mysqld

# 执行完上述命令,mysqld已加入系统服务,设置为开机自启动,至此,mysql安装配置结束!!!

10、在防火墙中开启mysql的3306的远程访问,

这样就可以使用navicat、Sequel Pro等工具连上mysql

firewall-cmd --zone=public --add-port=3306/tcp --permanent
firewall-cmd --reload

11、使用Sequel Pro 或者是navicat连接远程数据库时,可能会出现问题

Authentication plugin 'caching_sha2_password' cannot be loaded

出现这个原因是mysql8 之前的版本中加密规则是mysql_native_password,而在mysql8之后,加密规则是caching_sha2_password, 解决问题方法有两种,一种是升级navicat驱动(我用的Sequel Pro beta版本),一种是把mysql用户登录密码加密规则还原成mysql_native_password.

1、 管理员权限运行命令提示符,登陆MySQL(记得添加环境变量)

/usr/local/mysql/bin/mysql -uroot -p'111111'

2、修改账户密码加密规则并更新用户密码

ALTER USER 'root'@'localhost' IDENTIFIED BY 'password' PASSWORD EXPIRE NEVER;   
# 修改加密规则 

ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'password';   # 更新一下用户的密码 

FLUSH PRIVILEGES;   #刷新权限 
alter user 'root'@'localhost' identified by '111111'; # 单独重置密码命令

这样,连接MySQL问题数据库就会发现可以连接成功了。

12、make && make install因为内存不足出现的问题

解决安装Mysql的”c : fatal error: Killed signal terminated program cc1plus compilation “错误

1、获取要增加的2G的SWAP文件块

dd if=/dev/zero of=/swapfile bs=1k count=2048000

2、创建SWAP文件

mkswap /swapfile 

3、激活SWAP文件

swapon /swapfile 

4、查看SWAP信息是否正确

swapon -s

5、添加到fstab文件中让系统引导时自动启动

echo "/var/swapfile swap swap defaults 0 0" >> /etc/fstab

swapfile文件的路径在/var/下,编译完后, 如果不想要交换分区了, 可以删除。

6、删除交换分区

swapoff /swapfile
rm -rf /swapfile

至此,问题解决。

三、关于CentOS7下防火墙的补充

centos7默认的防火墙为firewalld

1、开启3306端口,(--permanent永久生效,没有此参数重启后失效)

firewall-cmd --zone=public --add-port=3306/tcp --permanent

2、重新载入,使修改立即生效(每次修改都执行该命令)

firewall-cmd --reload

3、查看所有打开的端口

firewall-cmd --zone=public --list-ports

4、查看指定的端口是否打开

firewall-cmd --zone= public --query-port=3306/tcp

5、删除指定的端口

firewall-cmd --zone= public --remove-port=3306/tcp --permanent