运维实战 LNMP框架
架构简介
LAMP=Linux+Apache+Mysql+PHP
LNMP=Linux+Nginx+Mysql+PHP
LAMP
是一个多C/S架构的平台,虽然这些开放源代码程序本身并不是专门设计成同另几个程序一起工作的,但由于它们的免费和开源,慢慢的被组合成为了一种解决方案.
实际上其中的每一个部分还可以根据业务或者操作系统需求进行调换,如Linux
也可以改成Windows
,Apache
改为Nginx
就变成了LNMP
架构等等,这里采用了Nginx
因此简称也就改成了LNMP
.
前期准备
MySQL的安装
这里使用的是社区版本mysql-boost-5.7.31
,原因只是因为5.7在生产环境中用的更多而已.
与之前的类似不过这里解压后会发现没有configure
,因为MySQL
使用的是cmake
而不是make
.
##安装cmake
yum install -y cmake
##如果过程中出错则安装缺失的依赖包
##重新执行编译前请清楚cmake产生的缓存文件避免从停止处开始导致出现错误
yum install -y ncurses-devel.x86_64
yum install -y gcc-c++
yum install -y bison
rm -fr CMakeCache.txt
##编译
cmake -DCMAKE_INSTALL_PREFIX=/usr/local/mysql -DMYSQL_DATADIR=/usr/local/mysql/data -DMYSQL_UNIX_ADDR=/usr/local/mysql/data/mysql.sock -DWITH_INNOBASE_STORAGE_ENGINE=1 -DDEFAULT_CHARSET=utf8 -DDEFAULT_COLLATION=utf8_general_ci -DEXTRA_CHARSETS=all -DWITH_BOOST=/mnt/mysql-5.7.31/boost/boost_1_59_0
##参数解释
DCMAKE_INSTALL_PREFIX 安装路径
DMYSQL_DATADIR 数据库存放目录
DMYSQL_UNIX_ADDR Unix Socket文件路径
DWITH_INNOBASE_STORAGE_ENGINE 加载的数据库引擎
DDEFAULT_CHARSET 受用UTF-8字符
DDEFAULT_COLLATION 检验UTF-8字符
DEXTRA_CHARSETS 安装字符集选项(选择所有)
DWITH_BOOST 指定Boost扩展源码路径
##安装
make && make install
##需要注意的文件
/usr/local/mysql/support-files/mysql.server 启动脚本
/etc/my.cnf 全局配置文件
MySQL的初始化
##复制启动脚本到init.d并为以后的使用做准备
cp /usr/local/mysql/support-files/mysql.server /etc/init.d/
mv /etc/init.d/mysql.server /etc/init.d/mysqld
##创建供MySQL使用的系统用户mysql,指定加目录并设定免登录
useradd -M -d /usr/local/mysql/ -s /sbin/nologin mysql
##修改my.cnf,正确设置其中的数据目录和socket位置
[mysqld]
datadir=/usr/local/mysql/data
socket=/usr/local/mysql/data/mysql.sock
symbolic-links=0
##初始化数据目录并指定私有用户
##因为使用的命令位于/usr/local/mysql/bin中,为了便于以后使用我们修改.bash_profile中的系统变量并使之生效
##初始化时会生成随机密码,记录下来下文会使用
vim ~/.bash_profile
source ~/.bash_profile
mysqld --initialize --user=mysql
##启动MySQL,为了进行安全初始化
/etc/init.d/mysqld start
mysql_secure_installation
##初始化结束后,就可以正常使用了
mysql -pwestos
PHP的安装
目前生产环境PHP
主流依然是用7
,因此这里也用7
作为实验版本.
##安装bzip2并解压源码包
yum install -y bzip2
tar jxf php-7.4.12.tar.bz2
##编译安装
cd php-7.4.12/
./configure --prefix=/usr/local/lnmp/php --with-config-file-path=/usr/local/lnmp/php/etc --enable-fpm --with-fpm-user=nginx --with-fpm-group=nginx --with-curl --with-iconv --with-mhash --with-zlib --with-openssl --enable-mysqlnd --with-mysqli --with-pdo-mysql --disable-debug --enable-sockets --enable-soap --enable-inline-optimization --enable-xml --enable-ftp --enable-gd --enable-exif --enable-mbstring --enable-bcmath --with-fpm-systemd
make
make install
##如果缺少依赖则进行安装
yum install systemd-libs.x86_64 -y
yum install libxml2-devel.x86_64 -y
yum install sqlite-devel.x86_64 -y
yum install libcurl-devel.x86_64 -y
yum install libpng-devel.x86_64 -y
##缺少oniguruma-devel-6.8.2-1.el7.x86_64但是官方源并不包含
##从网络独立下载符合需求的版本后安装
yum install -y oniguruma-*
参数的含义
--prefix 安装路径
--with-config-file-path 主配置文件目录
--enable-fpm 激活FPM的管理器
--with-fpm-user=nginx 以nginx身份运行,如果不设置则默认用户为Apache
--with-curl 启用curl模块
--with-iconv 启用iconv
--with-mhash 启用M哈希加密
--enable-mysqlnd 启用mysqlnd驱动
--with-mysqli 启用mysqli驱动
--disable-debug 关闭debug
--enable-soap 启用soap动态模块
--enable-inline-optimization 性能优化
--with-fpm-systemd 生成systemd的启动脚本
##添加/usr/local/lnmp/php/sbin进环境变量并激活
vim ~/.bash_profile
source ~/.bash_profile
##使用模板编写配置文件
cp /usr/local/lnmp/php/etc/php-fpm.conf.default /usr/local/lnmp/php/etc/php-fpm.conf
cp /usr/local/lnmp/php/etc/php-fpm.d/www.conf.default /usr/local/lnmp/php/etc/php-fpm.d/www.conf
vim php-fpm.conf
vim www.conf
##从源码包复制主配置文件模板并修改
cp /mnt/php-7.4.12/php.ini-production /usr/local/lnmp/php/etc/php.ini
##从源码包复制init.d需要的启动脚本
##从源码包复制systemd需要的service文件
cp /mnt/php-7.4.12/sapi/fpm/init.d.php-fpm /etc/init.d/php-fpm
chmod +x /etc/init.d/php-fpm
cp /mnt/php-7.4.12/sapi/fpm/php-fpm.service /usr/lib/systemd/system
##启动方式
1)
/etc/init.d/php-fpm start
/etc/init.d/php-fpm stop
2)
systemctl daemon-reload
systemctl start php-fpm.service
如果直接使用systemctl start php-fpm.service
会发现执行出错,原因是系统启用了保护,编辑php-fpm.service
即可
vim php-fpm.service
##注释掉ProtectSystem
;ProtectSystem=full
systemctl daemon-reload
systemctl start php-fpm.service
修改php.ini