百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 技术文章 > 正文

CentOs 系统最小安装&LNMP环境搭建

itomcoil 2024-12-16 13:45 38 浏览

最近在家看孩子的空隙,在自己一台老旧的DELL电脑上安装了cent os7作为平常的开发服务器,废话不多说,下面开始正文:

一、首先准备下载系统镜像:CentOs7(因为我的电脑是64的所以镜像也是64的)

百度网盘下载链接:

https://pan.baidu.com/s/1gFalaeQD7ZDH2s1UO_YYIw?pwd=fo05

二、制作U盘系统盘

下载好CentOS7的系统镜像了,我们需要一个系统启动盘。

这里用到了一个工具:UltraISo.

因为是教学使用所以时间选择试用就好

注:请勿用于商用,如有版权纠纷,与博主无关,


三、使用U盘安装CentOS7系统

1、 插入刚刚制作的系统U盘进入BIOS,更改U盘为第一启动项。f10保存并重启。

2、 进入centos安装界面。不用管有几个选项,选中第一个 按 回车键

3、 进入图形界面如果不出现报错就是成功了,可以正常安装操作系统了。

4. 安装之后重启后关机移除U盘在开机即可正常使用。

四、开始搭建LNMP环境

因为是笔记本改的服务器一直都不会关机,这时候需要:合上笔记本盖子(显示屏关闭),但是SSH远程在操作此机器,则希望合盖不睡眠(包括网络正常使用)

编辑下列文件:/etc/systemd/logind.conf

#HandlePowerKey按下电源键后的行为,默认power off

#HandleSleepKey 按下挂起键后的行为,默认suspend

#HandleHibernateKey按下休眠键后的行为,默认hibernate

#HandleLidSwitch合上笔记本盖后的行为,默认suspend(改为lock;即合盖不休眠)在原文件中,还要去掉前面的#

运行:systemctl restart systemd-logind就会生效.


一、准备资源(源码安装)

nginx 源:https://nginx.org/download/

mysql 源:http://tel.mirrors.163.com/mysql/Downloads/

php 源:https://www.php.net/releases/


二、安装nginx


1.下载Nginx

cd /home/application/tools

wget http://nginx.org/download/nginx-1.20.0.tar.gz

tar xf nginx-1.20.0.tar.gz


2.安装Nginx依赖

pcre-devel 让nginx拥有正则的能力,rewrite等都需要正则匹配

openssl-devel 让nginx拥有开启https的能力。

yum install -y pcre-devel openssl-devel


3.创建Nginx管理用户

useradd -s /sbin/nologin -M nginx


4.编译配置Nginx

–prefix=/application/nginx-1.14.0 置编译安装目录

–user=nginx 配置nginx的管理用户为nginx用户

–group=nginx 配置nginx的管理组为nginx组

–with-http_stub_status_module 配置使用Nginx的监控模块

–with-http_ssl_module 配置应用认证模块(https需要此模块,需要openssl-devel依赖

cd /home/application/tools/nginx-1.20.0

./configure --prefix=/application/nginx-1.14.0 --user=nginx --group=nginx --with-http_stub_status_module --with-http_ssl_module


5.编译安装Nginx

make && make install


6.为Nginx安装目录创建软链接(方便以后管理)

ln -s /home/application/nginx-1.20.0/ /home/application/nginx


7.为Nginx命令创建软链接加进root环境变量(方便使用)

ln -s /home/application/nginx/sbin/nginx /sbin/


8.精简化Nginx配置文件

sed -i "/^$/d;/#/d" /home/application/nginx/conf/nginx.conf


9.添加systemctl启动脚本

cat > /usr/lib/systemd/system/nginx.service << EOF

[Unit]

Description=nginx

Documentation=http://nginx.org/en/docs/

After=network.target remote-fs.target nss-lookup.target

[Service]

Type=forking

ExecStartPre=/application/nginx/sbin/nginx -t -c /application/nginx/conf/nginx.conf

ExecStart=/application/nginx/sbin/nginx -c /application/nginx/conf/nginx.conf

ExecReload=/bin/kill -s HUP $MAINPID

ExecStop=/bin/kill -s QUIT $MAINPID

PrivateTmp=true

[Install]

WantedBy=multi-user.target

EOF


10.启动Nginx 并且 查看Nginx进程

nginx或者systemctl start nginx

ps -ef | grep nginx


11.测试Nginx服务端口(80)

ss -lnt | grep 80


12.curl测试Nginx首页(有看到Welcome to nginx!就是成功了)

curl -s 本机IP


13.把Nginx添加到启动项(在末尾添加以下命令:#开机启动Nginx nginx)

cd /etc/rc.d && chmod +x rc.local && vim rc.local


14.重新加载nginx配置

nginx -s reload

三、安装MYSQL

1.安装MySQL依赖环境

ncurses-devel提供字符终端处理库

libaio-devel包的作用是为了支持同步I/O

yum install -y bison-devel ncurses-devel libaio-devel gcc gcc-c++ automake autoconf numactl

2.删除mariadb组件

rpm -qa | grep mariadb

[结果1]

[结果2]

……

yum remove [结果1] [结果2] ……


3.下载MySQL

cd /home/application/tools

wget http://tel.mirrors.163.com/mysql/Downloads/MySQL-5.7/mysql-5.7.38-linux-glibc2.12-x86_64.tar.gz


4.解压MySQL5.7

tar xf mysql-5.7.38-linux-glibc2.12-x86_64.tar.gz -C /home/application

mv /home/application/mysql-5.7.38-linux-glibc2.12-x86_64 /home/application/mysql-5.7.38

ln -s /home/application/mysql-5.7.38/ /home/application/mysql


5.创建管理用户&&授权

useradd -s /sbin/nologin -M mysql

chown -R mysql.mysql /home/application/mysql-5.7.38/


6.创建目录和文件并且分配属主和属组

mkdir -p /data/mysql/{data,logs}

touch /data/mysql/logs/{mysql-error.log,mysql-slow.log}

chown -R mysql.mysql /data/mysql

mkdir /var/run/mysql

chown -R mysql.mysql /var/run/mysql


7.初始化数据库

–initialize-insecure选项参数可以不自动生成初始root密码。

/home/application/mysql/bin/mysqld --initialize-insecure --basedir=/home/application/mysql/ --datadir=/data/mysql/data --user=mysql


8.复制脚本及PATH变量赋值

cp /home/application/mysql/support-files/mysql.server /etc/init.d/mysqld

chmod 700 /etc/init.d/mysqld

echo 'PATH=$PATH:/home/application/mysql/bin' >> /etc/profile

source /etc/profile


9.编辑配置文件

vim /etc/my.cnf

[mysql]

# CLIENT #

port = 3306

socket = /tmp/mysql.sock

[mysqld]

# GENERAL #

user = mysql

default-storage-engine = InnoDB

socket = /tmp/mysql.sock

pid-file = /var/run/mysql/mysql.pid

basedir = /home/application/mysql

server-id = 1

port = 3306

default-time-zone = '+08:00'

# MyISAM #

key-buffer-size = 32M

myisam-recover-options = FORCE,BACKUP

# SAFETY #

max-allowed-packet = 16M

max-connect-errors = 1000000

skip-name-resolve

#sql-mode = STRICT_TRANS_TABLES,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION,NO_ZERO_DATE,NO_ZERO_IN_DATE,NO_AUTO_VALUE_ON_ZERO

sql-mode = ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION,NO_ZERO_DATE,NO_ZERO_IN_DATE,NO_AUTO_VALUE_ON_ZERO

sysdate-is-now = 1

innodb = FORCE

secure-file-priv = ''

# DATA STORAGE #

datadir = /data/mysql/data/

# BINARY LOGGING #

log-bin = /data/mysql/data/mysql-bin

expire-logs-days = 14

binlog-format = mixed

sync-binlog = 1

#GTID:

gtid-mode = on

enforce-gtid-consistency = on

# CACHES AND LIMITS #

tmp-table-size = 32M

max-heap-table-size = 32M

query-cache-type = 0

query-cache-size = 0

max-connections = 500

thread-cache-size = 50

open-files-limit = 65535

table-definition-cache = 1024

table-open-cache = 200

# INNODB #

innodb-flush-method = O_DIRECT

innodb-log-files-in-group = 2

innodb-log-file-size = 256M

innodb-flush-log-at-trx-commit = 1

innodb-file-per-table = 1

innodb-buffer-pool-size = 8G

# LOGGING #

log-error = /data/mysql/logs/mysql-error.log

log-queries-not-using-indexes = 1

slow-query-log = 1

slow-query-log-file = /data/mysql/logs/mysql-slow.log


10.启动MySQL

/etc/init.d/mysqld start


11.初始化root密码

mysql_secure_installation

==========================================================================

secure enough. Would you like to setup VALIDATE PASSWORD plugin?

Press y|Y for Yes, any other key for No: n

New password: <==此处输入新密码(如果低于八位数密码,稍后会有系统提示)

Re-enter new password: <==此处重复输入新密码

Remove anonymous users? (Press y|Y for Yes, any other key for No) : y

Success.

Disallow root login remotely? (Press y|Y for Yes, any other key for No) : n

Remove test database and access to it? (Press y|Y for Yes, any other key for No) : y

- Dropping test database...

Success.

- Removing privileges on test database...

Success.

Reloading the privilege tables will ensure that all changes

made so far will take effect immediately.

Reload privilege tables now? (Press y|Y for Yes, any other key for No) : y

Success.

All done!


12.把MySQL添加进启动项

cd /etc/rc.d && chmod +x rc.local && vim rc.local

#开机启动mysql

mkdir -p /var/run/mysql

chown -R mysql.mysql /var/run/mysql

/etc/init.d/mysqld start


14.重启MySQL

/etc/init.d/mysqld restart

四、安装PHP

1.预先安装必要的依赖

yum install -y wget gcc gcc-c++ autoconf automake libtool make libxml2 libxml2-devel openssl openssl-devel sqlite-devel libcurl

2.下载解压PHP

cd /home/application/tools

wget wget https://www.php.net/distributions/php-8.1.11.tar.gz

tar xf php-8.1.11.tar.gz -C /home/application

3.编译配置php

./configure --prefix=/home/application/php-8.1.11 --with-config-file-path=/home/application/php-8.1.11/etc --enable-fpm --with-fpm-user=www --with-fpm-group=www --enable-mysqlnd --with-mysqli=mysqlnd --with-pdo-mysql=mysqlnd --enable-mysqlnd-compression-support --with-zlib --enable-xml --disable-rpath --enable-bcmath --enable-shmop --enable-sysvsem --with-curl --enable-mbregex --enable-mbstring --enable-intl --enable-ftp --enable-gd-jis-conv --with-openssl --with-mhash --enable-pcntl --enable-sockets --enable-soap --with-gettext --enable-fileinfo --enable-opcache --with-pear --with-ldap=shared --without-gdbm

编译报错处理

错误1

checking for libcurl >= 7.29.0... no

configure: error: Package requirements (libcurl >= 7.29.0) were not met:

No package 'libcurl' found

解决方案

yum search libcurl

已加载插件:fastestmirror

Loading mirror speeds from cached hostfile

* base: mirrors.ustc.edu.cn

* extras: mirrors.ustc.edu.cn

* updates: mirrors.ustc.edu.cn

======== N/S matched: libcurl =============

libcurl-devel.i686 : Files needed for building applications with libcurl

libcurl-devel.x86_64 : Files needed for building applications with libcurl

libcurl.i686 : A library for getting files from web servers

libcurl.x86_64 : A library for getting files from web servers

perl-WWW-Curl.x86_64 : Perl extension interface for libcurl

python-pycurl.x86_64 : A Python interface to libcurl

发现 libcurl-devel.x86_64 库需要安装。

yum install -y libcurl-devel.x86_64

错误2

checking for icu-uc >= 50.1 icu-io icu-i18n... no

configure: error: Package requirements (icu-uc >= 50.1 icu-io icu-i18n) were not met:

No package 'icu-uc' found

No package 'icu-io' found

No package 'icu-i18n' found

解决方案

yum -y install libicu-devel

错误3

configure: error: Cannot find ldap.h

解决方案

yum install openldap openldap-devel -y

错误4

configure: error: Cannot find ldap libraries in /usr/lib.

解决方案

cp -frp /usr/lib64/libldap* /usr/lib/

错误5

configure: error: Package requirements (oniguruma) were not met:

解决方案

yum install https://rpms.remirepo.net/enterprise/7/remi/x86_64/oniguruma5php-6.9.8-1.el7.remi.x86_64.rpm

yum install https://rpms.remirepo.net/enterprise/7/remi/x86_64/oniguruma5php-devel-6.9.8-1.el7.remi.x86_64.rpm

4.安装php

make && make install


5.创建软链接(方便以后管理)

ln -s /home/application/php-8.1.11/bin/php /usr/local/bin/php


6.测试

php -v

PHP 8.1.11 (cli) (built: Nov 7 2022 15:35:02) (NTS)

Copyright (c) The PHP Group

Zend Engine v4.1.11, Copyright (c) Zend Technologies


7.修改配置文件

# 源码包 php-8.0.24

cp /home/application/php-8.1.11/php.ini-production /home/application/php-8.1.11/etc

cd /home/application/php-8.1.11/etc

cp php.ini-production php.ini

cd /home/application/php-8.1.11/etc

cp php-fpm.conf.default php-fpm.conf

cd /home/application/php-8.1.11/php-fpm.d

cp www.conf.default www.conf

# 修改www.conf文件

# 监听方式为sock

;listen = 127.0.0.1:9000

listen = /tmp/www.sock


8.开机自启

# 源码包 php-8.1.11/sapi/fpm

cp /home/application/php-8.1.11/sapi/fpm/php-fpm.service /usr/lib/systemd/system/php-fpm-8.1.11.service

server {

listen 80;

server_name www.paul.test;

root /home/web/wwwroot;

add_header X-Frame-Options "SAMEORIGIN";

add_header X-Content-Type-Options "nosniff";

index index.php;

charset utf-8;

location / {

try_files $uri $uri/ /index.php?$query_string;

}

location = /favicon.ico { access_log off; log_not_found off; }

location = /robots.txt { access_log off; log_not_found off; }

error_page 404 /index.php;

location ~ \.php$ {

fastcgi_pass unix:/tmp/www.sock;

fastcgi_param SCRIPT_FILENAME $realpath_root$fastcgi_script_name;

include fastcgi_params;

}

location ~ /\.(?!well-known).* {

deny all;

}

}


9.启动php-fpm

cp /home/application/php-8.1.11/sapi/fpm/php-fpm /etc/init.d/php-fpm

chmod +x /etc/init.d/php-fpm

php-fpm的启动参数

#测试php-fpm配置/etc/init.d/php-fpm -t

/etc/init.d/php-fpm -c /home/application/php-8.1.11/etc/php.ini -y /home/application/php-8.1.11/etc/php-fpm.conf -t

#启动php-fpm /etc/init.d/php-fpm

/etc/init.d/php-fpm -c /home/application/php-8.1.11/etc/php.ini -y /home/application/php-8.1.11/etc/php-fpm.conf

五、系统部署

1. 在系统部署之前,务必使系统时间、MySQL时间、php时间与当地时间保持一致,即时区一致,比如都是东八区。

2. 防火墙

查看防火墙是否开启

firewall-cmd --state

如果没有 安装:yum install -y firewalld

启动:systemctl start firewalld

设置开机自启动:systemctl enable firewalld

这里通过开放一下httpd和php80的端口

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

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

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

重新加载防火墙

firewall-cmd --reload

六、验证

vim <网站根目录>/phpinfo.php

按i进入编辑模式输入<?php echo phpinfo(); ?>

按Esc键后,输入:wq并回车,保存关闭文件

在本地Windows主机(同局域网),打开浏览器。

在浏览器的地址栏输入http://新安装的CentOSIP地址/phpinfo.php进行访问。

访问结果如下图所示,表示LNMP环境部署成功。

到这里CentOS7 和 LNMP服务已经基本搭建完毕了!!!

后面会持续更新各服务的自动启动相关脚本 谢谢!!!

感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助!

相关推荐

selenium(WEB自动化工具)

定义解释Selenium是一个用于Web应用程序测试的工具。Selenium测试直接运行在浏览器中,就像真正的用户在操作一样。支持的浏览器包括IE(7,8,9,10,11),MozillaF...

开发利器丨如何使用ELK设计微服务中的日志收集方案?

【摘要】微服务各个组件的相关实践会涉及到工具,本文将会介绍微服务日常开发的一些利器,这些工具帮助我们构建更加健壮的微服务系统,并帮助排查解决微服务系统中的问题与性能瓶颈等。我们将重点介绍微服务架构中...

高并发系统设计:应对每秒数万QPS的架构策略

当面试官问及"如何应对每秒几万QPS(QueriesPerSecond)"时,大概率是想知道你对高并发系统设计的理解有多少。本文将深入探讨从基础设施到应用层面的解决方案。01、理解...

2025 年每个 JavaScript 开发者都应该了解的功能

大家好,很高兴又见面了,我是"高级前端进阶",由我带着大家一起关注前端前沿、深入前端底层技术,大家一起进步,也欢迎大家关注、点赞、收藏、转发。1.Iteratorhelpers开发者...

JavaScript Array 对象

Array对象Array对象用于在变量中存储多个值:varcars=["Saab","Volvo","BMW"];第一个数组元素的索引值为0,第二个索引值为1,以此类推。更多有...

Gemini 2.5编程全球霸榜,谷歌重回AI王座,神秘模型曝光,奥特曼迎战

刚刚,Gemini2.5Pro编程登顶,6美元性价比碾压Claude3.7Sonnet。不仅如此,谷歌还暗藏着更强的编程模型Dragontail,这次是要彻底翻盘了。谷歌,彻底打了一场漂亮的翻...

动力节点最新JavaScript教程(高级篇),深入学习JavaScript

JavaScript是一种运行在浏览器中的解释型编程语言,它的解释器被称为JavaScript引擎,是浏览器的一部分,JavaScript广泛用于浏览器客户端编程,通常JavaScript脚本是通过嵌...

一文看懂Kiro,其 Spec工作流秒杀Cursor,可移植至Claude Code

当Cursor的“即兴编程”开始拖累项目质量,AWS新晋IDEKiro以Spec工作流打出“先规范后编码”的系统工程思维:需求-设计-任务三件套一次生成,文档与代码同步落地,复杂项目不...

「晚安·好梦」努力只能及格,拼命才能优秀

欢迎光临,浏览之前点击上面的音乐放松一下心情吧!喜欢的话给小编一个关注呀!Effortscanonlypass,anddesperatelycanbeexcellent.努力只能及格...

JavaScript 中 some 与 every 方法的区别是什么?

大家好,很高兴又见面了,我是姜茶的编程笔记,我们一起学习前端相关领域技术,共同进步,也欢迎大家关注、点赞、收藏、转发,您的支持是我不断创作的动力在JavaScript中,Array.protot...

10个高效的Python爬虫框架,你用过几个?

小型爬虫需求,requests库+bs4库就能解决;大型爬虫数据,尤其涉及异步抓取、内容管理及后续扩展等功能时,就需要用到爬虫框架了。下面介绍了10个爬虫框架,大家可以学习使用!1.Scrapysc...

12个高效的Python爬虫框架,你用过几个?

实现爬虫技术的编程环境有很多种,Java、Python、C++等都可以用来爬虫。但很多人选择Python来写爬虫,为什么呢?因为Python确实很适合做爬虫,丰富的第三方库十分强大,简单几行代码便可实...

pip3 install pyspider报错问题解决

运行如下命令报错:>>>pip3installpyspider观察上面的报错问题,需要安装pycurl。是到这个网址:http://www.lfd.uci.edu/~gohlke...

PySpider框架的使用

PysiderPysider是一个国人用Python编写的、带有强大的WebUI的网络爬虫系统,它支持多种数据库、任务监控、项目管理、结果查看、URL去重等强大的功能。安装pip3inst...

「机器学习」神经网络的激活函数、并通过python实现激活函数

神经网络的激活函数、并通过python实现whatis激活函数感知机的网络结构如下:左图中,偏置b没有被画出来,如果要表示出b,可以像右图那样做。用数学式来表示感知机:上面这个数学式子可以被改写:...