LNMP是指一组通常一起使用来运行动态网站或者服务器的自由软件名称首字母缩写。L指Linux,N指Nginx,M一般指MySQL,也可以指MariaDB,P一般指PHP,也可以指Perl或Python。
LNMP代表的就是:Linux系统下Nginx+MySQL+PHP这种网站服务器架构。
Linux是一类Unix计算机操作系统的统称,是目前最流行的免费操作系统。代表版本有:debian、centos、ubuntu、fedora、gentoo等。
Nginx是一个高性能的HTTP和反向代理服务器,也是一个IMAP/POP3/SMTP代理服务器。
Mysql是一个小型关系型数据库管理系统。
PHP是一种在服务器端执行的嵌入HTML文档的脚本语言。
这四种软件均为免费开源软件,组合到一起,成为一个免费、高效、扩展性强的网站服务系统
现在网上有许多一建安装lnmp的服务型机构,作为运维人员,还需要对这套架构体系进行研究:下面先来搭建它:
RED HAT企业6的系统
一:php:
我们没有采用直接yum安装,因为想要自己选择一些模块安装,而不是用固定的安装包。没有软件包的朋友可以选择直接yum一键安装:
这里我们找的php包:php-5.6.35.tar.bz2
tar jxf php-5.6.35.tar.bz2 #解压
yum install -y libxml2-devel openssl-devel libcurl-devel libjpeg-turbo-devel-1.2.1-1.el6.x86_64 libpng-devel-1.2.49-1.el6_2.x86_64 freetype-devel gmp-devel-4.3.1-7.el6_2.2.x86_64
找的两个包:libmcrypt-devel-2.5.8-9.el6.x86_64.rpm 和 libmcrypt-2.5.8-9.el6.x86_64.rpm
yum install -y libmcrypt-* #将找的两个软件包安装 #解决安装依赖性
cd php-5.6.35
yum install -y net-snmp-devel
./configure --prefix=/usr/local/lnmp/php --with-config-file-path=/usr/local/lnmp/php/etc --with-openssl --with-snmp --with-gd --with-zlib --with-curl --with-libxml-dir --with-png-dir --with-jpeg-dir --with-freetype-dir --with-gmp --with-gettext --with-pear --enable-mysqlnd --with-mysql=mysqlnd --with-mysqli=mysqlnd --with-pdo-mysql=mysqlnd --enable-inline-optimization --enable-soap --enable-ftp --enable-sockets --enable-mbstring --enable-fpm --with-fpm-user=nginx --with-fpm-group=nginx --with-mcrypt --with-mhash
#添加模块,检测是否满足编译环境
make && make install #编译
cd /usr/local/lnmp/php/etc/
cp php-fpm.conf.default php-fpm.conf #备份配置文件
cd ~/root/php-5.6.35
cp php.ini-production /usr/local/lnmp/php/etc/php.ini
#PHP的初始化文件(通常称为php.ini)负责配置PHP行为的许多方面
cd /usr/local/lnmp/php/etc/
vim php.ini
data.timezone = Asia/Shanghai #更改时区即可
cd ~/php-5.6.35/sapi/fpm/
cp init.d.php-fpm /etc/init.d/php-fpm #将php-fpm放在系统目录下,之后直接启动该目录中的脚本
chmod +x /etc/init.d/php-fpm
/etc/init.d/php-fpm start #开启
netstat -tnlp #查看端口,php-fpm开启了9000端口
这里启动php时,遇到一个问题:
在我们的/usr/local/lnmp/php/etc/php-fpm.conf配置文件中有指定用户,但现在我们没有这个用户,所以建立用户,然后开启。
useradd nginx
二:nginx:
这里我们使用nginx-1.16.0.tar.gz
nginx的资源包:查询官网:https://www.nginx.com/
tar zxf nginx-1.16.0.tar.gz #解压
cd nginx-1.16.0
./configure --prefix=/usr/local/lnmp/nginx --user=nginx --group=nginx --with-threads --with-file-aio --with-http_ssl_module #添加模块,检测环境
make && make install #编译
cd /usr/local/lnmp/nginx/conf/
vim nginx.conf #编辑配置文件
location ~ \.php$ {
root html;
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
include fastcgi.conf;
}
cd ../sbin
./nginx -t #检测配置文件是否正确
ln -s /usr/local/lnmp/nginx/sbin/nginx /usr/local/sbin/
#生成软链接
cd ../html/
vim index.php #php说明文档
php
phpinfo
?>
nginx -s reload #重启
vim /usr/local/lnmp/nginx/conf/nginx.conf
#将index.php写在默认发布文件的第一位
访问查看:172.25.12.1 会看到默认发布文件
用测试主机访问该nginx主机的IP,可以得到写入到index.php的资源:
三:mysql:
因为存储和编译速度的需要,我们的主机需要2048M以上的内存,20G以上的存储空间。
因为这里我们用的是虚拟机,所以运行内存可以直接通过viet-manager来调整,存储空间可以通过lvm拉伸存储。
存储拉伸:https://blog.csdn.net/dddxxy/article/details/90051724
mysql我使用的是:mysql-boost-5.7.17.tar.gz
编译用到的cmake:cmake-2.8.12.2-4.el6.x86_64.rpm
tar zxf mysql-boost-5.7.17.tar.gz #解压
yum install -y ncurses-devel gcc c++ bison
cd mysq-5.7.17/
cmake -DCMAKE_INSTALL_PREFIX=/usr/local/lnmp/mysql \
-DMYSQL_DATADIR=/usr/local/lnmp/mysql/data \
-DMYSQL_UNIX_ADDR=/usr/local/lnmp/mysql/data/mysql.sock \
-DWITH_MYISAM_STORAGE_ENGINE=1 \
-DWITH_INNOBASE_STORAGE_ENGINE=1 \
-DDEFAULT_CHARSET=utf8 \
-DDEFAULT_COLLATION=utf8_general_ci \
-DEXTRA_CHARSETS=all \
-DWITH_BOOST=boost/boost_1_59_0/
make && make install 编译
rm -fr CMakeCache.txt #看情况删除
#因为我们把具有依赖性问题的软件都在前面集中下载了,如果没有下载,那么每编译一次,就会出现有依赖性缺少软件的问题,然后下载软件,那么再下次编译前,就需要删除该文件,
下面是文件配置:
cd /usr/local/lnmp/mysql/support-files
cp mysql.server /etc/init.d/mysqld
chmod +x /etc/init.d/mysqld
cp /etc/my.cnf /etc/my.cnf.bak
cp my-default.cnf /etc/my.cnf
vim /etc/my.cnf
basedir = /usr/local/lnmp/mysql
datadir = /usr/local/lnmp/mysql/data
#port = .....
#server_id = .....
socket = /usr/local/lnmp/mysql/data/mysql.sock
groupadd -g 27 mysql #创建mysql用户,用于数据库数据读写
useradd -u 27 -g 27 mysql #同上
chown mysql.mysql /usr/local/lnmp/mysql -R #我们写数据时是用mysql用户,所以先改变目录权限,使其可以创建data目录
cd /usr/local/lnmp/mysql/
ll
vim ~/.bash_profile
PATH=$PATH:$HOME/bin:/usr/local/lnmp/mysql/bin
source ~/.bash_profile #刷新,使更改生效
mysqld --user=mysql --initialize #会生成一个临时密码,用于等下的数据库登录
chown root /usr/local/lnmp/mysql -R #data目录已经建立,设回root权限,增加安全性
chown mysql /usr/local/lnmp/mysql/data -R #给mysql用户对data目录的权限
/etc/init.d/mysqld start #开启数据库
mysql_secure_installation #安全初始化,使用刚才生成的临时密码,将数据库密码更改
mysql -uroot -p #登录数据库
以上,就是lnmp架构的搭建。