如何用源码方式搭建LNMP环境

免费教程   2024年04月09日 15:58  

这篇文章主要讲解了“如何用源码方式搭建LNMP环境”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“如何用源码方式搭建LNMP环境”吧!

源码方式搭建LNMP环境

1、安装 RedHat8

Centos8,或其他都可。虚拟机是 VMware ,网上有安装教程,这里就不啰嗦了。

2、配置本地的软件仓库

//把系统镜像挂载到/media/cdrom目录。mkdir-p/media/cdrommount/dev/cdrom/media/cdrom//mount:/media/cdrom:WARNING:devicewrite-protected,mountedread-only.//创建软件仓库的配置文件~]#vi/etc/yum.repos.d/rhel8.repo[BaseOS]name=BaseOSbaseurl=file:///media/cdrom/BaseOSenabled=1gpgcheck=0[AppStream]name=AppStreambaseurl=file:///media/cdrom/AppStreamenabled=1gpgcheck=0

测试安装一下 vim, wget

dnfinstallvimwget-y

3、安装编译需要的工具

dnf-yinstallapr*autoconfautomakenumactlbisonbzip2-develcppcurl-develfontconfig-develfreetype-develgccgcc-c++gd-develgettext-develkernel-headerskeyutils-libs-develkrb5-devellibcom_err-devellibpng-devellibjpeg*libsepol-devellibselinux-devellibstdc++-devellibtool*libxml2-devellibXpm*libxml*libXaw-devellibXmu-devellibtiff*makeopenssl-develpatchpcre-develperlphp-commonphp-gdtelnetzlib-devellibtirpc-develgtk*ntpstatna*bison*lrzszcmakencurses-devellibzip-devellibxslt-develgdbm-develreadline-develgmp-devel

4、下载所需软件源码包

统一放到 / 目录下保存。

mkdir/lnmpcd/lnmpwgethttps://www.linuxprobe.com/Software/rpcsvc-proto-1.4.tar.gzwgethttps://www.linuxprobe.com/Software/nginx-1.16.0.tar.gzwgethttps://www.linuxprobe.com/Software/mysql-8.0.18.tar.xzwgethttps://www.linuxprobe.com/Software/php-7.3.5.tar.gzwgethttps://www.linuxprobe.com/Software/wordpress.tar.gz

5、安装 rpcsvc-proto

rpcsvc-proto 是一款包含 rcpsvc 协议文件支持的软件包名称,rcpsvc 协议在后续 Nginx 与 MySQL 服务程序的部署过程中都需要被调用到。

tarxzvfrpcsvc-proto-1.4.tar.gzcdrpcsvc-proto-1.4/./configuremakemakeinstallcd..

6、安装 Nginx

为 Nginx 的运行创建一个账号

程序是由一个用户运行的,为了安全性,当然不能是 root 了。

并且它也不需要家目录,不需要登录,仅是拿来运行 Nginx。

useraddnginx-M-s/sbin/nologin//-M不创建家目录,-s指定shellidnginx//查询是否创建成功了uid=1000(nginx)gid=1000(nginx)组=1000(nginx)

安装 Nginx

lnmp]#tarzxvfnginx-1.16.0.tar.gzlnmp]#cdnginx-1.16.0/nginx-1.16.0]#./configure--prefix=/usr/local/nginx--with-http_ssl_module//--prefix指定安装目录,--with-开启http_ssl_module模块nginx-1.16.0]#makenginx-1.16.0]#makeinstallnginx-1.16.0]#cd..

配置 Nginx

使用 prefix 参数指定了安装路径,那么 Nginx 配置文件在 /usr/local/nginx 下。

提供程序运行的 user 属主,group 属组

vim/usr/local/nginx/conf/nginx.conf//打开文件后,我们在英文模式下,按下shift+冒号,输入2,回车,定位到第2行。//连按两次ESC,取消当前使用模式//再次shift+冒号,输入setnu,回车,我们可以显示行号12usernginxnginx;//第二行,修改为这样

在第 45 行,index 配置(可以做默认首页的文件)里加入 index.php。

43location/{44roothtml;45indexindex.phpindex.htmlindex.htm;46}

删除第 65~71 行前面的注释符#,来启用虚拟主机功能,然后将第 69 行后面对应的网站根目录修改为 /usr/local/nginx/html,其中的 fastcgi_script_name 参数用于指代脚本名称,也就是用户请求的 URL。只有信息填写正确了,才能使 Nginx 正确解析用户请求,否则访问的页面会提示 “404 Not Found” 的错误。

63#passthePHPscriptstoFastCGIserverlisteningon127.0.0.1:900064#65location~\.php${66roothtml;67fastcgi_pass127.0.0.1:9000;68fastcgi_indexindex.php;69fastcgi_paramSCRIPT_FILENAME/usr/local/nginx/html$fastcgi_script_name;70includefastcgi_params;71}

源码编译安装的软件,默认不能被 systemctl 所管理,我们可以直接用其自身的 /usr/local/nginx/sbin/nginx 管理。建议将 /usr/local/nginx/sbin 路径加入到 PATH 环境变量中,我们就可以直接输入 nginx,不用加路径了。

然后用 source 命令,让此修改立即生效。

lnmp]#vim~/.bash_profile#.bash_profile#Getthealiasesandfunctionsif[-f~/.bashrc];then.~/.bashrcfi#UserspecificenvironmentandstartupprogramsPATH=$PATH:$HOME/bin:/usr/local/nginx/sbin//这里加上Nginx的sbin路径exportPATHlnmp]#source~/.bash_profile//让修改立即生效lnmp]#nginx//启动nginx服务

打开浏览器访问,192.168.89.128 (我的虚拟机地址),访问失败

关闭防火墙

systemctlstatusfirewalld.service//查看是否在运行systemctlstopfirewalld.service//临时停止systemctldisablefirewalld.service//永久关闭

再次访问,发现可以了。

7、安装 MySQL

创建一个 mysql 用户,负责运行 MySQL 数据库。同样该用户也是不需要登录的。

lnmp]#useraddmysql-M-s/sbin/nologin

安装

//解压MySQL安装软件包lnmp]#tarxvfmysql-8.0.18.tar.xz//将解压出的程序目录改名并移动到/usr/local目录下lnmp]#mvmysql-8.0.18-linux-glibc2.12-x86_64mysqllnmp]#mvmysql/usr/local

/usr/local/mysql 是保存 MySQL 程序文件的路径,/usr/local/mysql/data 是存储数据的地方,每个数据库就是它下面的一个目录。我们还需要手动创建它。

lnmp]#cd/usr/local/mysqlmysql]#mkdirdata

初始化 MySQL,对目录授权,保证数据能被 mysql 用户访问,初始化之前,要先用 mysqld 命令确认管理 MySQL 服务的用户名,数据存放目录,编码信息,信息无误后,开始初始化。初始化后,系统会给用户分配一个初始的临时密码。要记得保存一下。

下面示例中分配的密码是 qfroRs,Ei4Ls。

[root@linuxprobemysql]#chown-Rmysql:mysql/usr/local/mysql[root@linuxprobemysql]#cdbin[root@linuxprobebin]#./mysqld--initialize--user=mysql--basedir=/usr/local/mysql--datadir=/usr/local/mysql/data2021-05-06T07:07:06.243270Z0[System][MY-013169][Server]/usr/local/mysql/bin/mysqld(mysqld8.0.18)initializingofserverinprogressasprocess76062021-05-06T07:07:08.116268Z5[Note][MY-010454][Server]Atemporarypasswordisgeneratedforroot@localhost:qfroRs,Ei4Ls

和 nginx 差不多,MySQL 的一些二进制可执行命令,存放在自身程序目录的 /usr/local/mysql/bin 中,我们也可以加入到 PATH 环境变量中,方便访问。

[root@linuxprobebin]#vim~/.bash_profile#.bash_profile#Getthealiasesandfunctionsif[-f~/.bashrc];then.~/.bashrcfi#UserspecificenvironmentandstartupprogramsPATH=$PATH:$HOME/bin:/usr/local/nginx/sbin:/usr/local/mysql/binexportPATH[root@linuxprobebin]#source~/.bash_profile

将启动脚本 mysql.server 放入到 /etc/init.d 中,让服务器每次重启后,都能自动启动数据库。并给予可执行权限。

libtinfo.so.5 文件是 MySQL 8.0 版本后新添加的重要的函数库文件,但默认不存在,需要将 libtinfo.so.6.1 文件复制过来或者作为链接文件才能正常启动:

[root@linuxprobebin]#cd/usr/local/mysql[root@linuxprobemysql]#cp-asupport-files/mysql.server/etc/init.d/[root@linuxprobemysql]#chmoda+x/etc/init.d/mysql.server[root@linuxprobemysql]#ln-s/usr/lib64/libtinfo.so.6.1/usr/lib64/libtinfo.so.5

执行 MySQL 数据库服务启动文件,并进行初始化工作。为了安全着想,MySQL 自 8.0 版本起不再允许用户使用临时密码来管理数据库内容,也不能进行远程控制,用户必须修改初始化密码后才能使用 MySQL 数据库。数据库作为系统重要的组成服务,密码位数不建议少于 20 位。例如,下面将密码修改为 “PObejCBeDzTRCncXwgBy”。

[root@linuxprobemysql]#/etc/init.d/mysql.serverstartStartingMySQL.Loggingto'/usr/local/mysql/data/linuxprobe.com.err'..SUCCESS![root@linuxprobemysql]#mysql-uroot-pEnterpassword:输入初始化时给的原始密码WelcometotheMySQLmonitor.Commandsendwith;or\g.YourMySQLconnectionidis8Serverversion:8.0.18Copyright(c)2000,2019,Oracleand/oritsaffiliates.Allrightsreserved.OracleisaregisteredtrademarkofOracleCorporationand/oritsaffiliates.Othernamesmaybetrademarksoftheirrespectiveowners.Type'help;'or'\h'forhelp.Type'\c'toclearthecurrentinputstatement.mysql>alteruser'root'@'localhost'identifiedby'PObejCBeDzTRCncXwgBy';QueryOK,0rowsaffected(0.01sec)mysql>

但这样还是不行,还需要继续切换到 mysql 数据库中,修改 user 表单的密码值。这也是从 MySQL 数据库 8.0 版本之后才有的新安全要求。

mysql>usemysql;ReadingtableinformationforcompletionoftableandcolumnnamesYoucanturnoffthisfeaturetogetaquickerstartupwith-ADatabasechangedmysql>showtables;+---------------------------+|Tables_in_mysql|+---------------------------+|columns_priv||tables_priv||time_zone||time_zone_leap_second||time_zone_name||time_zone_transition||time_zone_transition_type||user||…………省略部分输出信息…………|+---------------------------+33rowsinset(0.00sec)mysql>ALTERUSER'root'@'localhost'IDENTIFIEDWITHmysql_native_passwordBY'PObejCBeDzTRCncXwgBy';QueryOK,0rowsaffected(0.01sec)//创建一个数据库createdatabaselinuxcool;

8、安装 PHP

解压 php 源码包,并编译安装

[root@linuxprobemysql]#cd/lnmp[root@linuxprobelnmp]#tarxvfphp-7.3.5.tar.gz[root@linuxprobelnmp]#cdphp-7.3.5/[root@linuxprobephp-7.3.5]#./configure--prefix=/usr/local/php--enable-fpm--with-mysqli--with-curl--with-pdo_mysql--with-pdo_sqlite--enable-mysqlnd--enable-mbstring--with-gd[root@linuxprobephp-7.3.5]#make[root@linuxprobephp-7.3.5]#makeinstall

将生成的 php.ini 配置文件复制到安装目录中(/usr/local/php/),让其生效。现在主配置文件有了,接下来还需要 php-fpm 的配置文件,好在 /usr/local/php/etc/ 目录中也已经提供,只需要复制模板即可:

[root@linuxprobephp-7.3.5]#cpphp.ini-development/usr/local/php/lib/php.ini[root@linuxprobephp-7.3.5]#cd/usr/local/php/etc/[root@linuxprobeetc]#mvphp-fpm.conf.defaultphp-fpm.conf//复制一个模板文件到php-fpm.d的目录中,用于后续控制网站的连接性能:[root@linuxprobeetc]#mvphp-fpm.d/www.conf.defaultphp-fpm.d/www.conf

把 php 服务加入到启动项中,使其重启后依然生效

[root@linuxprobeetc]#cd/lnmp/php-7.3.5[root@linuxprobephp-7.3.5]#cpsapi/fpm/init.d.php-fpm/etc/init.d/php-fpm[root@linuxprobephp-7.3.5]#chmod755/etc/init.d/php-fpm

禁用一些函数

[root@linuxprobephp-7.3.5]#vim/usr/local/php/lib/php.ini307;Thisdirectiveallowsyoutodisablecertainfunctionsforsecurityreasons.308;Itreceivesacomma-delimitedlistoffunctionnames.309;http://php.net/disable-functions310disable_functions=passthru,exec,system,chroot,chgrp,chown,shell_exec,proc_open,proc_get_status,popen,ini_alter,ini_restore,dl,openlog,syslog,readlink,symlink,popepassthru,stream_socket_server

开启 php-fpm 进程

[root@linuxprobephp-7.3.5]#/etc/init.d/php-fpmstartStartingphp-fpmdone

我们在 /usr/local/nginx/html 下创建一个 index.php 文件测试下

<?phpphpinfo();

浏览器访问地址即可。

9、搭建一个 WordPress

把 Nginx 服务程序根目录的内容清空后,将 WordPress 解压后的网站文件复制进去:

[root@linuxprobephp-7.3.5]#cd..[root@linuxprobelnmp]#rm-f/usr/local/nginx/html/*[root@linuxprobelnmp]#tarxzvfwordpress.tar.gz[root@linuxprobelnmp]#mvwordpress/*/usr/local/nginx/html/

为了能够让网站文件被 Nginx 服务程序顺利读取,应设置目录所有权的身份及可读写的权限:

[root@linuxprobelnmp]#chown-Rfnginx:nginx/usr/local/nginx/html[root@linuxprobelnmp]#chmod-Rf777/usr/local/nginx/html

输入虚拟机 IP 地址访问 WordPress 网站的首页面。

后面按说明一步步操作下去即可。

感谢各位的阅读,以上就是“如何用源码方式搭建LNMP环境”的内容了,经过本文的学习后,相信大家对如何用源码方式搭建LNMP环境这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是,小编将为大家推送更多相关知识点的文章,欢迎关注!

域名注册
购买VPS主机

您或许对下面这些文章有兴趣:                    本月吐槽辛苦排行榜

看贴要回贴有N种理由!看帖不回贴的后果你懂得的!


评论内容 (*必填):
(Ctrl + Enter提交)   

部落快速搜索栏

各类专题梳理

网站导航栏

X
返回顶部