服务器部署方式有哪几种方式(服务器部署模式)

服务器部署方式有哪几种方式(服务器部署模式)Lin ux nbsp 红帽认证 nbsp IT 技术 nbsp 运维工程师 1000 人技术交流 nbsp 备注 公众号 更快通过 一 架构简述 1 LNMP 简介 LNMP 是一种流行的 Web 服务架构 其中 Linux 是操作系统 用于托管 Web 服务器 Nginx 是一款高性能的 HTTP 和反向代理服务器 用于处理 HTTP 请求

大家好,我是讯享网,很高兴认识大家。



Lin ux | 红帽认证 | IT技术 | 运维工程师

👇1000人技术交流 备注【公众号】更快通过


讯享网

一、架构简述

1. LNMP简介

LNMP是一种流行的Web服务架构,其中:

Linux是操作系统,用于托管Web服务器。

Nginx是一款高性能的HTTP和反向代理服务器,用于处理HTTP请求。

MySQL是一个关系型数据库管理系统,用于存储和管理应用数据。

PHP是一种服务器端脚本语言,用于生成动态Web内容。

2. 常见的PHP项目部署结构

在实际项目中,PHP项目通常会与nginx和MySQL搭配使用,形成一个完整的Web应用架构。以下是一些常见的部署结构:

LAMP(Linux、Apache、MySQL、PHP):使用Apache作为Web服务器,适合需要.htaccess支持的项目。

LNMP(Linux、Nginx、MySQL、PHP):使用Nginx作为Web服务器,适合高并发和静态文件较多的项目。

LEMP(Linux、Nginx、MariaDB、PHP):使用MariaDB替代MySQL,适合需要更高性能和更多功能的数据库需求。

以下是这些结构的比较:

架构 Web服务器 数据库 适用场景LAMP Apache MySQL 需要.htaccess支持的项目LNMP Nginx MySQL 高并发和静态文件较多的项目LEMP Nginx MariaDB 需要更高性能和更多功能的项目

讯享网

二、部署步骤

1. 移除现有的项目

首先,我们需要清理现有的项目目录,删除/var/www/html目录下的所有文件。这通常是Web项目的默认目录,清理这个目录可以避免旧项目文件的干扰。

讯享网sudo rm -rf /var/www/html

2. 安装并配置Nginx和PHP-FPM

安装Nginx和PHP-FPM。这两个软件是运行PHP应用的核心组件。

安装Nginx:Nginx是一款高性能的HTTP和反向代理服务器。我们将使用yum包管理器来安装Nginx。

yum install -y nginx

安装EPEL和yum-utils:EPEL(Extra Packages for Enterprise Linux)提供了高质量的附加软件包,yum-utils包含了yum-config-manager等实用工具。

讯享网yum install -y epel-release yum-utils

安装Remi仓库和PHP:Remi仓库提供最新版本的PHP。启用remi-php74仓库并安装PHP 7.4及其常用模块,如php-fpm、php-mysql、php-gd等。

yum install -y https://rpms.remirepo.net/enterprise/remi-release-7.rpmyum-config-manager –enable remi-php74yum install -y php php-common php-cli php-fpm php-mysql php-gd php-xml php-mbstring php-json php-soap php-xmlrpc

配置PHP-FPM:修改PHP-FPM的配置文件,使其监听127.0.0.1的9000端口,这样Nginx可以通过这个端口与PHP-FPM通信。

讯享网sudo sed -i ’s#listen = /run/php-fpm/www.sock#listen = 127.0.0.1:9000#’ /etc/php-fpm.d/www.conf

启动并设置Nginx和PHP-FPM为开机自启:确保Nginx和PHP-FPM在服务器重启后自动启动。

systemctl start nginxsystemctl enable nginxsystemctl start php-fpmsystemctl enable php-fpm

3. 克隆PHP项目代码

这里使用到的也是我创作的开源项目,感兴趣的朋友可以去GItee上查看,CSDN资源也已上传,欢迎下载。

项目地址:https://gitee.com/damon_liu_code/WeeklyReport

下面,我们来发布这个项目到我们自己的服务器上。

安装git:git是一个分布式版本控制系统,我们将使用git从代码库克隆PHP项目。

讯享网sudo yum install -y git

创建项目目录并克隆代码:在/var/www/html目录下创建项目目录,并使用git克隆项目代码。

mkdir -p /var/www/htmlsudo git clone https://gitee.com/damon_liu_code/WeeklyReport.git /var/www/html

设置权限:确保Nginx用户对项目目录有正确的权限。

讯享网chown -R nginx:nginx /var/www/html/WeeklyReportchmod -R 755 /var/www/html/WeeklyReport

4. 创建Nginx配置文件

创建并编辑Nginx配置文件:配置Nginx处理PHP请求。设置根目录、索引文件、PHP文件处理方式等。

cat > /etc/nginx/nginx.conf << EOFuser nginx;worker_processes auto;error_log /var/log/nginx/error.log;pid /run/nginx.pid;
events { worker_connections 1024;}
http { log_format main ‘$remote_addr - $remote_user [$time_local] “$request” $status $body_bytes_sent “$http_referer” “$http_user_agent” “$http_x_forwarded_for”’; access_log /var/log/nginx/access.log main; sendfile on; tcp_nopush on; tcp_nodelay on; keepalive_timeout 65; types_hash_max_size 4096; include /etc/nginx/mime.types; default_type application/octet-stream; server { listen 80; listen [::]:80; server_name _; index index.php index.html index.htm; root /var/www/html/WeeklyReport/public; location ~ .php$ { fastcgi_pass 127.0.0.1:9000; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; include fastcgi_params; } location / { if (!-e $request_filename){ rewrite ^(.)$ /index.php?s=$1 last; break; } } location ~ ^/(.user.ini|.htaccess|.git|.env|.svn|.project|LICENSE|README.md) { return 404; } location ~ ..(gif|jpg|jpeg|png|bmp|swf)$ { expires 30d; error_log /dev/null; access_log /dev/null; } location ~ .*.(js|css)?$ { expires 12h; error_log /dev/null; access_log /dev/null; } }}EOF

5. 安装并配置MySQL

导入MySQL GPG密钥和安装MySQL仓库:确保系统信任MySQL的安装包,并从官方仓库安装MySQL。

讯享网sudo rpm –import https://repo.mysql.com/RPM-GPG-KEY-mysql-2022sudo yum install -y https://repo.mysql.com/mysql57-community-release-el7.rpm

安装MySQL:使用yum包管理器安装MySQL社区服务器。

sudo yum install -y mysql-community-server

启动并设置MySQL为开机自启:确保MySQL在服务器重启后自动启动。

讯享网sudo systemctl start mysqldsudo systemctl enable mysqld

获取MySQL初始临时密码:MySQL安装后会生成一个初始临时密码,我们需要获取这个密码以便进行后续配置。

TEMP_PASS=\((sudo grep <span class="code-snippet__string">'temporary password'</span> /<span class="code-snippet__keyword">var</span>/log/mysqld.log | awk <span class="code-snippet__string">'{print \)NF}’)

修改root用户密码:使用初始密码登录MySQL并修改root用户的密码,设置为简单易记的密码(如:root)

讯享网mysql -u root -p”\(TEMP_PASS" <span class="code-snippet__comment">--connect-expired-password &lt;&lt;EOF</span></span></code><code><span class="code-snippet_outer"><span class="code-snippet__keyword">SET</span> <span class="code-snippet__keyword">GLOBAL</span> validate_password_policy=<span class="code-snippet__keyword">LOW</span>;</span></code><code><span class="code-snippet_outer"><span class="code-snippet__keyword">SET</span> <span class="code-snippet__keyword">GLOBAL</span> validate_password_length=<span class="code-snippet__number">4</span>;</span></code><code><span class="code-snippet_outer"><span class="code-snippet__keyword">ALTER</span> <span class="code-snippet__keyword">USER</span> <span class="code-snippet__string">'root'</span>@<span class="code-snippet__string">'localhost'</span> <span class="code-snippet__keyword">IDENTIFIED</span> <span class="code-snippet__keyword">BY</span> <span class="code-snippet__string">'root'</span>;</span></code><code><span class="code-snippet_outer">EOF</span></code></pre></section><p style="margin-left: 8px;margin-right: 8px;line-height: 1.75em;"><span style="color: rgb(0, 82, 255);"><strong><span style="color: rgb(0, 82, 255);letter-spacing: 1px;font-size: 16px;">6. 导入SQL文件到数据库</span></strong></span><span style="font-size: 15px;font-family: mp-quote, -apple-system-font, BlinkMacSystemFont, &quot;Helvetica Neue&quot;, &quot;PingFang SC&quot;, &quot;Hiragino Sans GB&quot;, &quot;Microsoft YaHei UI&quot;, &quot;Microsoft YaHei&quot;, Arial, sans-serif;letter-spacing: 1px;"></span></p><p style="margin-left: 8px;margin-right: 8px;line-height: 1.75em;"><span style="font-size: 15px;font-family: mp-quote, -apple-system-font, BlinkMacSystemFont, &quot;Helvetica Neue&quot;, &quot;PingFang SC&quot;, &quot;Hiragino Sans GB&quot;, &quot;Microsoft YaHei UI&quot;, &quot;Microsoft YaHei&quot;, Arial, sans-serif;letter-spacing: 1px;">创建数据库:在MySQL中创建项目所需的数据库。</span></p><section class="code-snippet__fix code-snippet__js"><ul class="code-snippet__line-index code-snippet__js"><li></li><li></li><li></li><li></li><li></li></ul><pre class="code-snippet__js" data-lang="properties"><code><span class="code-snippet_outer"><span class="code-snippet__attr">mysql</span> <span class="code-snippet__string">-u root -proot &lt;&lt;EOF</span></span></code><code><span class="code-snippet_outer"><span class="code-snippet__attr">CREATE</span> <span class="code-snippet__string">DATABASE IF NOT EXISTS weekly_report CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;</span></span></code><code><span class="code-snippet_outer"><span class="code-snippet__attr">GRANT</span> <span class="code-snippet__string">ALL PRIVILEGES ON *.* TO 'root'@'localhost' WITH GRANT OPTION;</span></span></code><code><span class="code-snippet_outer"><span class="code-snippet__attr">FLUSH</span> <span class="code-snippet__string">PRIVILEGES;</span></span></code><code><span class="code-snippet_outer"><span class="code-snippet__attr">EOF</span></span></code></pre></section><p style="margin-left: 8px;margin-right: 8px;line-height: 1.75em;"><span style="font-size: 15px;letter-spacing: 1px;">导入SQL文件:</span><span style="font-size: 15px;letter-spacing: 1px;">将项目的SQL文件导入到新创建的数据库中,完成数据库初始化。</span><span style="font-size: 15px;font-family: mp-quote, -apple-system-font, BlinkMacSystemFont, &quot;Helvetica Neue&quot;, &quot;PingFang SC&quot;, &quot;Hiragino Sans GB&quot;, &quot;Microsoft YaHei UI&quot;, &quot;Microsoft YaHei&quot;, Arial, sans-serif;letter-spacing: 1px;"></span></p><section class="code-snippet__fix code-snippet__js"><ul class="code-snippet__line-index code-snippet__js"><li></li></ul><pre class="code-snippet__js" data-lang="ruby"><code><span class="code-snippet_outer">mysql -u root -proot weekly_report &lt; <span class="code-snippet__regexp">/var/www</span><span class="code-snippet__regexp">/html/</span>WeeklyReport/weekly_report.sql</span></code></pre></section><p style="margin-left: 8px;margin-right: 8px;line-height: 1.75em;"><span style="color: rgb(0, 82, 255);"><strong><span style="color: rgb(0, 82, 255);letter-spacing: 1px;font-size: 16px;">7. 重启Nginx服务</span></strong></span></p><p style="margin-left: 8px;margin-right: 8px;line-height: 1.75em;"><span style="font-size: 15px;font-family: mp-quote, -apple-system-font, BlinkMacSystemFont, &quot;Helvetica Neue&quot;, &quot;PingFang SC&quot;, &quot;Hiragino Sans GB&quot;, &quot;Microsoft YaHei UI&quot;, &quot;Microsoft YaHei&quot;, Arial, sans-serif;letter-spacing: 1px;">重启Nginx服务,使新配置生效,并确保Nginx可以正确处理和转发请求。</span></p><section class="code-snippet__fix code-snippet__js"><ul class="code-snippet__line-index code-snippet__js"><li></li></ul><pre class="code-snippet__js" data-lang="nginx"><code><span class="code-snippet_outer"><span class="code-snippet__attribute">systemctl</span> restart nginx</span></code></pre></section><p style="margin-left: 8px;margin-right: 8px;line-height: 1.75em;"><span style="color: rgb(0, 82, 255);"><strong><span style="color: rgb(0, 82, 255);letter-spacing: 1px;font-size: 16px;">8. 配置防火墙</span></strong></span></p><p style="margin-left: 8px;margin-right: 8px;line-height: 1.75em;"><span style="font-size: 15px;font-family: mp-quote, -apple-system-font, BlinkMacSystemFont, &quot;Helvetica Neue&quot;, &quot;PingFang SC&quot;, &quot;Hiragino Sans GB&quot;, &quot;Microsoft YaHei UI&quot;, &quot;Microsoft YaHei&quot;, Arial, sans-serif;letter-spacing: 1px;">开放80端口:为了确保外部能够访问到我们的Nginx服务,需要开放80端口。使用firewall-cmd来配置防火墙,允许HTTP访问。</span></p><section class="code-snippet__fix code-snippet__js"><ul class="code-snippet__line-index code-snippet__js"><li></li><li></li></ul><pre class="code-snippet__js" data-lang="sql"><code><span class="code-snippet_outer">firewall-cmd <span class="code-snippet__comment">--permanent --add-port=80/tcp</span></span></code><code><span class="code-snippet_outer">firewall-cmd <span class="code-snippet__comment">--reload</span></span></code></pre></section><p style="margin-left: 8px;margin-right: 8px;line-height: 1.75em;"><span style="color: rgb(0, 82, 255);"><strong><span style="color: rgb(0, 82, 255);letter-spacing: 1px;font-size: 16px;">9. 获取服务器公网IP地址</span></strong></span><span style="font-size: 15px;font-family: mp-quote, -apple-system-font, BlinkMacSystemFont, &quot;Helvetica Neue&quot;, &quot;PingFang SC&quot;, &quot;Hiragino Sans GB&quot;, &quot;Microsoft YaHei UI&quot;, &quot;Microsoft YaHei&quot;, Arial, sans-serif;letter-spacing: 1px;"></span></p><p style="margin-left: 8px;margin-right: 8px;line-height: 1.75em;"><span style="font-size: 15px;font-family: mp-quote, -apple-system-font, BlinkMacSystemFont, &quot;Helvetica Neue&quot;, &quot;PingFang SC&quot;, &quot;Hiragino Sans GB&quot;, &quot;Microsoft YaHei UI&quot;, &quot;Microsoft YaHei&quot;, Arial, sans-serif;letter-spacing: 1px;">使用curl命令获取服务器的公网IP地址,并打印出来,方便通过该IP直接访问部署好的PHP项目。</span></p><section class="code-snippet__fix code-snippet__js"><ul class="code-snippet__line-index code-snippet__js"><li></li><li></li></ul><pre class="code-snippet__js" data-lang="makefile"><code><span class="code-snippet_outer">IP=<span class="code-snippet__variable">\)(curl ifconfig.me)echo “你的服务器公网IP地址是: \(IP"</span></span></code></pre></section><p style="margin-left: 8px;margin-right: 8px;line-height: 1.75em;"><strong><span style="font-size: 15px;letter-spacing: 1px;">我们测试访问:</span></strong><span style="font-size: 15px;font-family: mp-quote, -apple-system-font, BlinkMacSystemFont, &quot;Helvetica Neue&quot;, &quot;PingFang SC&quot;, &quot;Hiragino Sans GB&quot;, &quot;Microsoft YaHei UI&quot;, &quot;Microsoft YaHei&quot;, Arial, sans-serif;letter-spacing: 1px;"></span></p><p style="margin-left: 8px;margin-right: 8px;line-height: 1.75em;"><span style="font-size: 15px;letter-spacing: 1px;"><img src="https://mmbiz.qpic.cn/mmbiz_png/esZiajffQShRqRCVWyUuUFFPickMD84qdNl9Ciauoscy5dtzR0yp10AN6eoWibKLPLEsbOILp70UCyDRYdcaBRM3rQ/640?&amp;wx_fmt=png" class="rich_pages wxw-img" data-imgfileid="100083557" data-ratio="0.5527777777777778" data-src="https://mmbiz.qpic.cn/mmbiz_png/esZiajffQShRqRCVWyUuUFFPickMD84qdNl9Ciauoscy5dtzR0yp10AN6eoWibKLPLEsbOILp70UCyDRYdcaBRM3rQ/640?&amp;wx_fmt=png" data-type="png" data-w="1080" height="687" width="1242" /></span></p><p style="margin-left: 8px;margin-right: 8px;line-height: 1.75em;"><span style="font-size: 15px;font-family: mp-quote, -apple-system-font, BlinkMacSystemFont, &quot;Helvetica Neue&quot;, &quot;PingFang SC&quot;, &quot;Hiragino Sans GB&quot;, &quot;Microsoft YaHei UI&quot;, &quot;Microsoft YaHei&quot;, Arial, sans-serif;letter-spacing: 1px;"><img src="https://mmbiz.qpic.cn/mmbiz_png/esZiajffQShRqRCVWyUuUFFPickMD84qdNTWhh5rJUL1IICsMH5ElvbGMnJgm41G1ZNGibXtP6EwcKYkA2h0a5Ujw/640?&amp;wx_fmt=png" class="rich_pages wxw-img" data-imgfileid="100083555" data-ratio="0.5185185185185185" data-src="https://mmbiz.qpic.cn/mmbiz_png/esZiajffQShRqRCVWyUuUFFPickMD84qdNTWhh5rJUL1IICsMH5ElvbGMnJgm41G1ZNGibXtP6EwcKYkA2h0a5Ujw/640?&amp;wx_fmt=png" data-type="png" data-w="1080" height="758" width="1463" /></span></p><p style="margin-left: 8px;margin-right: 8px;line-height: 1.75em;"><span style="font-size: 15px;font-family: mp-quote, -apple-system-font, BlinkMacSystemFont, &quot;Helvetica Neue&quot;, &quot;PingFang SC&quot;, &quot;Hiragino Sans GB&quot;, &quot;Microsoft YaHei UI&quot;, &quot;Microsoft YaHei&quot;, Arial, sans-serif;letter-spacing: 1px;"><img src="https://mmbiz.qpic.cn/mmbiz_png/esZiajffQShRqRCVWyUuUFFPickMD84qdNd8aI45icMfUObMfBHSa1CeyeB1wlFqYhopYjp4RuI6FBj76yGJO2wrw/640?&amp;wx_fmt=png" class="rich_pages wxw-img" data-imgfileid="100083556" data-ratio="0.6370370370370371" data-src="https://mmbiz.qpic.cn/mmbiz_png/esZiajffQShRqRCVWyUuUFFPickMD84qdNd8aI45icMfUObMfBHSa1CeyeB1wlFqYhopYjp4RuI6FBj76yGJO2wrw/640?&amp;wx_fmt=png" data-type="png" data-w="1080" height="933" width="1464" /></span></p><p style="margin-left: 8px;margin-right: 8px;line-height: 1.75em;"><span style="font-size: 15px;font-family: mp-quote, -apple-system-font, BlinkMacSystemFont, &quot;Helvetica Neue&quot;, &quot;PingFang SC&quot;, &quot;Hiragino Sans GB&quot;, &quot;Microsoft YaHei UI&quot;, &quot;Microsoft YaHei&quot;, Arial, sans-serif;letter-spacing: 1px;"><img src="https://mmbiz.qpic.cn/mmbiz_png/esZiajffQShRqRCVWyUuUFFPickMD84qdN7Z8t9RwSib85fI2HnzNMMnsThwIOkwj09EKoNhN2ZI2AYnsIJpNLsng/640?&amp;wx_fmt=png" class="rich_pages wxw-img" data-imgfileid="100083554" data-ratio="0.5527777777777778" data-src="https://mmbiz.qpic.cn/mmbiz_png/esZiajffQShRqRCVWyUuUFFPickMD84qdN7Z8t9RwSib85fI2HnzNMMnsThwIOkwj09EKoNhN2ZI2AYnsIJpNLsng/640?&amp;wx_fmt=png" data-type="png" data-w="1080" height="798" width="1444" /></span></p><p style="margin-left: 8px;margin-right: 8px;line-height: 1.75em;"><span style="font-size: 15px;font-family: mp-quote, -apple-system-font, BlinkMacSystemFont, &quot;Helvetica Neue&quot;, &quot;PingFang SC&quot;, &quot;Hiragino Sans GB&quot;, &quot;Microsoft YaHei UI&quot;, &quot;Microsoft YaHei&quot;, Arial, sans-serif;letter-spacing: 1px;">部署成功!</span></p><p style="margin-left: 8px;margin-right: 8px;line-height: 1.75em;"><span style="color: rgb(0, 82, 255);"><strong><span style="color: rgb(0, 82, 255);font-family: mp-quote, -apple-system-font, BlinkMacSystemFont, &quot;Helvetica Neue&quot;, &quot;PingFang SC&quot;, &quot;Hiragino Sans GB&quot;, &quot;Microsoft YaHei UI&quot;, &quot;Microsoft YaHei&quot;, Arial, sans-serif;letter-spacing: 1px;font-size: 18px;">三、部署总结</span></strong></span></p><p style="margin-left: 8px;margin-right: 8px;line-height: 1.75em;"><span style="color: rgb(0, 82, 255);"><strong><span style="color: rgb(0, 82, 255);font-family: mp-quote, -apple-system-font, BlinkMacSystemFont, &quot;Helvetica Neue&quot;, &quot;PingFang SC&quot;, &quot;Hiragino Sans GB&quot;, &quot;Microsoft YaHei UI&quot;, &quot;Microsoft YaHei&quot;, Arial, sans-serif;letter-spacing: 1px;font-size: 16px;">1. 步骤总结</span></strong></span></p><p style="margin-left: 8px;margin-right: 8px;line-height: 1.75em;"><span style="font-size: 15px;font-family: mp-quote, -apple-system-font, BlinkMacSystemFont, &quot;Helvetica Neue&quot;, &quot;PingFang SC&quot;, &quot;Hiragino Sans GB&quot;, &quot;Microsoft YaHei UI&quot;, &quot;Microsoft YaHei&quot;, Arial, sans-serif;letter-spacing: 1px;">部署过程中涉及到的每个步骤都有其特定的作用:</span></p><p style="margin-left: 8px;margin-right: 8px;line-height: 1.75em;"><span style="font-size: 15px;font-family: mp-quote, -apple-system-font, BlinkMacSystemFont, &quot;Helvetica Neue&quot;, &quot;PingFang SC&quot;, &quot;Hiragino Sans GB&quot;, &quot;Microsoft YaHei UI&quot;, &quot;Microsoft YaHei&quot;, Arial, sans-serif;letter-spacing: 1px;">清理现有的项目和软件,确保新部署不受旧环境的影响。</span></p><p style="margin-left: 8px;margin-right: 8px;line-height: 1.75em;"><span style="font-size: 15px;font-family: mp-quote, -apple-system-font, BlinkMacSystemFont, &quot;Helvetica Neue&quot;, &quot;PingFang SC&quot;, &quot;Hiragino Sans GB&quot;, &quot;Microsoft YaHei UI&quot;, &quot;Microsoft YaHei&quot;, Arial, sans-serif;letter-spacing: 1px;">安装和配置Nginx、PHP和MySQL,建立起Web服务器和数据库的基础环境。</span></p><p style="margin-left: 8px;margin-right: 8px;line-height: 1.75em;"><span style="font-size: 15px;font-family: mp-quote, -apple-system-font, BlinkMacSystemFont, &quot;Helvetica Neue&quot;, &quot;PingFang SC&quot;, &quot;Hiragino Sans GB&quot;, &quot;Microsoft YaHei UI&quot;, &quot;Microsoft YaHei&quot;, Arial, sans-serif;letter-spacing: 1px;">克隆项目代码并设置权限,使得Web服务器可以访问和执行项目代码。</span></p><p style="margin-left: 8px;margin-right: 8px;line-height: 1.75em;"><span style="font-size: 15px;font-family: mp-quote, -apple-system-font, BlinkMacSystemFont, &quot;Helvetica Neue&quot;, &quot;PingFang SC&quot;, &quot;Hiragino Sans GB&quot;, &quot;Microsoft YaHei UI&quot;, &quot;Microsoft YaHei&quot;, Arial, sans-serif;letter-spacing: 1px;">创建Nginx配置文件,定义Web服务器的行为,包括请求处理和静态资源缓存。</span></p><p style="margin-left: 8px;margin-right: 8px;line-height: 1.75em;"><span style="font-size: 15px;font-family: mp-quote, -apple-system-font, BlinkMacSystemFont, &quot;Helvetica Neue&quot;, &quot;PingFang SC&quot;, &quot;Hiragino Sans GB&quot;, &quot;Microsoft YaHei UI&quot;, &quot;Microsoft YaHei&quot;, Arial, sans-serif;letter-spacing: 1px;">初始化和配置MySQL数据库,导入项目所需的数据库结构和初始数据。</span></p><p style="margin-left: 8px;margin-right: 8px;line-height: 1.75em;"><span style="font-size: 15px;font-family: mp-quote, -apple-system-font, BlinkMacSystemFont, &quot;Helvetica Neue&quot;, &quot;PingFang SC&quot;, &quot;Hiragino Sans GB&quot;, &quot;Microsoft YaHei UI&quot;, &quot;Microsoft YaHei&quot;, Arial, sans-serif;letter-spacing: 1px;">配置防火墙,确保服务器对外部HTTP请求的访问。</span></p><p style="margin-left: 8px;margin-right: 8px;line-height: 1.75em;"><strong><span style="font-family: mp-quote, -apple-system-font, BlinkMacSystemFont, &quot;Helvetica Neue&quot;, &quot;PingFang SC&quot;, &quot;Hiragino Sans GB&quot;, &quot;Microsoft YaHei UI&quot;, &quot;Microsoft YaHei&quot;, Arial, sans-serif;letter-spacing: 1px;font-size: 16px;color: rgb(0, 82, 255);">2. 教程源码</span></strong></p><p style="margin-left: 8px;margin-right: 8px;line-height: 1.75em;"><span style="font-size: 15px;font-family: mp-quote, -apple-system-font, BlinkMacSystemFont, &quot;Helvetica Neue&quot;, &quot;PingFang SC&quot;, &quot;Hiragino Sans GB&quot;, &quot;Microsoft YaHei UI&quot;, &quot;Microsoft YaHei&quot;, Arial, sans-serif;letter-spacing: 1px;">下面是全部代码<span style="font-size: 15px;font-family: mp-quote, -apple-system-font, BlinkMacSystemFont, &quot;Helvetica Neue&quot;, &quot;PingFang SC&quot;, &quot;Hiragino Sans GB&quot;, &quot;Microsoft YaHei UI&quot;, &quot;Microsoft YaHei&quot;, Arial, sans-serif;letter-spacing: 1px;color: rgb(136, 136, 136);">(可以直接一键部署)</span>:</span></p><section class="code-snippet__fix code-snippet__js"><ul class="code-snippet__line-index code-snippet__js"><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li></ul><pre class="code-snippet__js" data-lang="properties"><code><span class="code-snippet_outer"><span class="code-snippet__comment">#!/bin/bash</span></span></code><code><span class="code-snippet_outer"><span class="code-snippet__comment"># 移除现有的项目</span></span></code><code><span class="code-snippet_outer"><span class="code-snippet__attr">sudo</span> <span class="code-snippet__string">rm -rf /var/www/html</span></span></code><code><span class="code-snippet_outer"><span class="code-snippet__comment"># 移除现有的Apache</span></span></code><code><span class="code-snippet_outer"><span class="code-snippet__attr">yum</span> <span class="code-snippet__string">remove httpd -y</span></span></code><code><span class="code-snippet_outer"><span class="code-snippet__comment"># 安装Nginx和PHP-FPM</span></span></code><code><span class="code-snippet_outer"><span class="code-snippet__attr">yum</span> <span class="code-snippet__string">install -y nginx</span></span></code><code><span class="code-snippet_outer"><span class="code-snippet__attr">yum</span> <span class="code-snippet__string">install -y epel-release yum-utils</span></span></code><code><span class="code-snippet_outer"><span class="code-snippet__attr">yum</span> <span class="code-snippet__string">install -y https://rpms.remirepo.net/enterprise/remi-release-7.rpm</span></span></code><code><span class="code-snippet_outer"><span class="code-snippet__meta">yum-config-manager</span> <span class="code-snippet__string">--enable remi-php74</span></span></code><code><span class="code-snippet_outer"><span class="code-snippet__attr">yum</span> <span class="code-snippet__string">install -y php php-common php-cli php-fpm php-mysql php-gd php-xml php-mbstring php-json php-soap php-xmlrpc</span></span></code><code><span class="code-snippet_outer"><span class="code-snippet__attr">sudo</span> <span class="code-snippet__string">sed -i 's#listen = /run/php-fpm/www.sock#listen = 127.0.0.1:9000#' /etc/php-fpm.d/www.conf</span></span></code><code><span class="code-snippet_outer"><span class="code-snippet__comment"># 启动并启用Nginx和PHP-FPM</span></span></code><code><span class="code-snippet_outer"><span class="code-snippet__attr">systemctl</span> <span class="code-snippet__string">start nginx</span></span></code><code><span class="code-snippet_outer"><span class="code-snippet__attr">systemctl</span> <span class="code-snippet__string">enable nginx</span></span></code><code><span class="code-snippet_outer"><span class="code-snippet__attr">systemctl</span> <span class="code-snippet__string">start php-fpm</span></span></code><code><span class="code-snippet_outer"><span class="code-snippet__attr">systemctl</span> <span class="code-snippet__string">enable php-fpm</span></span></code><code><span class="code-snippet_outer"><span class="code-snippet__comment"># 创建PHP项目的目录并克隆代码库</span></span></code><code><span class="code-snippet_outer"><span class="code-snippet__attr">sudo</span> <span class="code-snippet__string">yum install -y git</span></span></code><code><span class="code-snippet_outer"><span class="code-snippet__attr">mkdir</span> <span class="code-snippet__string">-p /var/www/html</span></span></code><code><span class="code-snippet_outer"><span class="code-snippet__attr">sudo</span> <span class="code-snippet__string">git clone https://gitee.com/damon_liu_code/WeeklyReport.git /var/www/html</span></span></code><code><span class="code-snippet_outer"><span class="code-snippet__attr">chown</span> <span class="code-snippet__string">-R nginx:nginx /var/www/html/WeeklyReport</span></span></code><code><span class="code-snippet_outer"><span class="code-snippet__attr">chmod</span> <span class="code-snippet__string">-R 755 /var/www/html/WeeklyReport</span></span></code><code><span class="code-snippet_outer"><span class="code-snippet__comment"># 创建Nginx配置文件</span></span></code><code><span class="code-snippet_outer"><span class="code-snippet__attr">cat</span> <span class="code-snippet__string">&gt; /etc/nginx/nginx.conf &lt;&lt; EOF</span></span></code><code><span class="code-snippet_outer"><span class="code-snippet__attr">user</span> <span class="code-snippet__string">nginx;</span></span></code><code><span class="code-snippet_outer"><span class="code-snippet__attr">worker_processes</span> <span class="code-snippet__string">auto;</span></span></code><code><span class="code-snippet_outer"><span class="code-snippet__attr">error_log</span> <span class="code-snippet__string">/var/log/nginx/error.log;</span></span></code><code><span class="code-snippet_outer"><span class="code-snippet__attr">pid</span> <span class="code-snippet__string">/run/nginx.pid;</span></span></code><code><span class="code-snippet_outer"><span class="code-snippet__attr">events</span> <span class="code-snippet__string">{</span></span></code><code><span class="code-snippet_outer"> <span class="code-snippet__attr">worker_connections</span> <span class="code-snippet__string">1024;</span></span></code><code><span class="code-snippet_outer"><span class="code-snippet__attr">}</span></span></code><code><span class="code-snippet_outer"><span class="code-snippet__attr">http</span> <span class="code-snippet__string">{</span></span></code><code><span class="code-snippet_outer"> <span class="code-snippet__attr">log_format</span> <span class="code-snippet__string">main '\\)remote_addr - $remote_user [$time_local] “$request” $status $body_bytes_sent “$http_referer” “$http_user_agent” “$http_x_forwarded_for”‘; access_log /var/log/nginx/access.log main; sendfile on; tcp_nopush on; tcp_nodelay on; keepalive_timeout 65; types_hash_max_size 4096; include /etc/nginx/mime.types; default_type application/octet-stream; server { listen 80; listen [::]:80; server_name _; index index.php index.html index.htm; root /var/www/html/WeeklyReport/public; location ~ .php$ { fastcgi_pass 127.0.0.1:9000; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; include fastcgi_params; } location / { if (!-e $request_filename){ rewrite ^(.)$ /index.php?s=$1 last; break; } } location ~ ^/(.user.ini|.htaccess|.git|.env|.svn|.project|LICENSE|README.md) { return 404; } location ~ ..(gif|jpg|jpeg|png|bmp|swf)$ { expires 30d; error_log /dev/null; access_log /dev/null; } location ~ .*.(js|css)?$ { expires 12h; error_log /dev/null; access_log /dev/null; } }}EOF# 删除原有MySQLsudo yum remove mysql57-community-release-el7 -y# 安装并配置MySQLsudo rpm –import https://repo.mysql.com/RPM-GPG-KEY-mysql-2022sudo yum install -y https://repo.mysql.com/mysql57-community-release-el7.rpmsudo yum install -y mysql-community-serversudo systemctl start mysqldsudo systemctl enable mysqld# 获取MySQL初始临时密码TEMP_PASS=\((sudo grep 'temporary password' /var/log/mysqld.log | awk '{print \)NF}’)# 使用初始密码登录并修改root用户密码mysql -u root -p”\(TEMP_PASS" --connect-expired-password &lt;&lt;EOF</span></span></code><code><span class="code-snippet_outer"><span class="code-snippet__attr">SET</span> <span class="code-snippet__string">GLOBAL validate_password_policy=LOW;</span></span></code><code><span class="code-snippet_outer"><span class="code-snippet__attr">SET</span> <span class="code-snippet__string">GLOBAL validate_password_length=4;</span></span></code><code><span class="code-snippet_outer"><span class="code-snippet__attr">ALTER</span> <span class="code-snippet__string">USER 'root'@'localhost' IDENTIFIED BY 'root';</span></span></code><code><span class="code-snippet_outer"><span class="code-snippet__attr">EOF</span></span></code><code><span class="code-snippet_outer"><span class="code-snippet__comment"># 导入SQL文件到数据库</span></span></code><code><span class="code-snippet_outer"><span class="code-snippet__attr">mysql</span> <span class="code-snippet__string">-u root -proot &lt;&lt;EOF</span></span></code><code><span class="code-snippet_outer"><span class="code-snippet__attr">CREATE</span> <span class="code-snippet__string">DATABASE IF NOT EXISTS weekly_report CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;</span></span></code><code><span class="code-snippet_outer"><span class="code-snippet__attr">GRANT</span> <span class="code-snippet__string">ALL PRIVILEGES ON *.* TO 'root'@'localhost' WITH GRANT OPTION;</span></span></code><code><span class="code-snippet_outer"><span class="code-snippet__attr">FLUSH</span> <span class="code-snippet__string">PRIVILEGES;</span></span></code><code><span class="code-snippet_outer"><span class="code-snippet__attr">EOF</span></span></code><code><span class="code-snippet_outer"><span class="code-snippet__attr">mysql</span> <span class="code-snippet__string">-u root -proot weekly_report &lt; /var/www/html/WeeklyReport/weekly_report.sql</span></span></code><code><span class="code-snippet_outer"><span class="code-snippet__comment"># 重启Nginx服务</span></span></code><code><span class="code-snippet_outer"><span class="code-snippet__attr">systemctl</span> <span class="code-snippet__string">restart nginx</span></span></code><code><span class="code-snippet_outer"><span class="code-snippet__comment"># 确保防火墙设置允许80端口访问</span></span></code><code><span class="code-snippet_outer"><span class="code-snippet__meta">firewall-cmd</span> <span class="code-snippet__string">--permanent --add-port=80/tcp</span></span></code><code><span class="code-snippet_outer"><span class="code-snippet__meta">firewall-cmd</span> <span class="code-snippet__string">--reload</span></span></code><code><span class="code-snippet_outer"><span class="code-snippet__comment"># 获取服务器公网IP地址</span></span></code><code><span class="code-snippet_outer"><span class="code-snippet__attr">IP</span>=<span class="code-snippet__string">\)(curl ifconfig.me)echo “你的服务器公网IP地址是: $IP”echo “脚本执行完毕,请通过该IP访问你的PHP项目。”

通过这个脚本,我们可以轻松地在CentOS 7服务器上部署Nginx、PHP和MySQL,并自动配置和部署一个PHP项目。这个一键部署的脚本不仅简化了部署过程,还能确保配置的正确性和一致性。使用这样的部署方法,可以极大地节省时间和精力,特别是对于频繁需要部署新环境的开发团队而言,效率提升显著。

课程咨询添加:HCIE666CCIE

↑或者扫描上方二维码↑


你有什么想看的技术点和内容

可以在下方留言告诉小盟哦!



小讯
上一篇 2025-05-03 14:28
下一篇 2025-05-24 23:12

相关推荐

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/202822.html