以Aliyun体验机为例,从零搭建LNMPR环境(下)
使用云服务器搭建 Web 运行环境,尤其是搭建常见的 LNMPR(Linux+Nginx+MySQL+PHP+Redis) 环境,对于开发人员是必备的职场基本技能之一。在这里,借着搭建我的“魚立说”个人网站的机会,整理了从零搭建 LNMPR 环境的详细过程,期间遇到的问题也一一进行了记录。
本文来源:魚立说。本文链接:https://www.yulisay.com/d/lnmpr2.html,支持微信浏览器打开。
更多精彩文章,请移步 魚立说个人网站 翻看。欢迎欣赏,吐槽不足之处。
本主题使用到的服务器是 Aliyun 的 ECS 体验机,适用于在 CentOS 操作系统下搭建 LNMPR 运行环境,整个系列由以下两个文章部分组成:
2. 配置运行(带配置+运行)
在《编译安装 LNMPR》中,我们已经编译安装好 LNMPR 服务,接下来对它们进行配置,从而让我们的 Web 项目运行起来。
2.1 配置 NMPR
下面依次对 Nginx、MySQL、PHP、Redis 进行了配置。
2.1.1 配置 Nginx
找到 /usr/local/nginx/conf/nginx.conf 文件,并做如下配置:
user www admin;
worker_processes auto;
pid /data/run/nginx.pid;
events {
worker_connections 1024;
}
http {
include mime.types;
default_type application/octet-stream;
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 /data/log/nginx/access.log main;
error_log /data/log/nginx/error.log warn;
sendfile on;
tcp_nopush on;
client_max_body_size 100M;
keepalive_timeout 60;
server {
listen 80;
server_name localhost;
access_log /data/log/php/test.access.log main;
error_log /data/log/php/test.error.log warn;
root /data/project/www;
index index.php index.html index.htm;
location ~ \.php$ {
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
include fastcgi_params;
fastcgi_param PATH_INFO $fastcgi_path_info;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
}
}
}
2.1.2 配置 MySQL
找到 /etc/my.cnf 文件,并做如下配置:
[mysqld]
port=3306
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
default_authentication_plugin = mysql_native_password
symbolic-links=0
log-error=/data/log/mysqld.log
pid-file=/data/run/mysqld/mysqld.pid
character-set-client-handshake = FALSE
character-set-server = utf8mb4
collation-server = utf8mb4_unicode_ci
init_connect='SET NAMES utf8mb4'
default-time-zone='+8:00'
slow_query_log=ON
long_query_time=3
slow-query-log-file=/data/log/mysql/slow.log
[mysqld_safe]
log-error=/data/log/mysql/error.log
[mysql]
default-character-set=utf8mb4
[client]
port=3306
default-character-set=utf8mb4
socket=/var/lib/mysql/mysql.sock
2.1.3 配置 PHP
找到 /usr/local/php/etc/php-fpm.d/www.conf 文件,并做如下配置:
[www]
user = www
group = admin
listen = 127.0.0.1:9000
pm = dynamic
pm.max_children = 5
pm.start_servers = 2
pm.min_spare_servers = 1
pm.max_spare_servers = 3
request_slowlog_timeout = 3
slowlog = /data/log/php/fpm.slow.log
还需要配置 /usr/local/php/etc/php.ini:
[PHP]
engine = On
zend.enable_gc = On
max_execution_time = 30
max_input_time = 60
memory_limit = 256M
error_reporting = E_ALL & ~E_DEPRECATED & ~E_STRICT
display_errors = On
display_startup_errors = On
log_errors = On
log_errors_max_len = 1024
html_errors = On
error_log = /data/log/php/php.error.log
default_mimetype = "text/html"
default_charset = "UTF-8"
[Date]
date.timezone = "Asia/Shanghai"
[opcache]
opcache.enable=1
opcache.enable_cli=1
opcache.memory_consumption=128
opcache.interned_strings_buffer=8
opcache.max_accelerated_files=4000
opcache.revalidate_freq=60
opcache.file_cache=/tmp
zend_extension=/usr/local/php/lib/php/extensions/no-debug-non-zts-20190902/opcache.so
2.1.4 配置 Redis
找到 /usr/local/redis/bin/redis.conf 文件,调整这些配置项:
设置后台启动:daemonize yes
设置密码:requirepass password
注释掉这一行:bind 127.0.0.1
2.1.5 为 firewalld 添加开放端口
systemctl start firewalld && \
firewall-cmd --zone=public --add-port=80/tcp --permanent && \
firewall-cmd --zone=public --add-port=3306/tcp --permanent && \
firewall-cmd --zone=public --add-port=6379/tcp --permanent && \
firewall-cmd --reload
2.2 运行 NMPR
由于服务依赖,需要注意服务的运行顺序。
2.2.1 运行 PHP
PHP 的相关命令:
启动 PHP-FPM:/etc/init.d/php-fpm start
重启 PHP-FPM:/etc/init.d/php-fpm restart
停止 PHP-FPM:/etc/init.d/php-fpm stop
2.2.2 运行 Nginx
Nginx 的相关命令:
启动 Nginx:nginx
关闭 Nginx:nginx -s stop
退出 Nginx:nginx -s quit
更新配置 Nginx:nginx -s reload
Nginx 启动成功后,在浏览器打开公网地址就可以看到 Nginx 欢迎页,这时会打印出 PHP 的版本信息:
2.2.3 运行 MySQL
MySQL 的相关命令:
启动 MySQL:systemctl start mysqld
停止 MySQL:systemctl stop mysqld
设置 MySQL 开机自启:systemctl enable mysqld
查看 MySQL 状态:systemctl status mysqld
首次登录 MySQL 需要在日志文件中找出临时密码:grep 'temporary password' /data/log/mysqld.log
然后使用 root 账号登陆,输入上面找到的临时密码:mysql -uroot -p
我们首先修改下用户密码:ALTER USER 'root'@'localhost' IDENTIFIED BY 'password';
并开启远程访问,这里的 Your_IP 需要替换成你本地的外网 IP:
grant all privileges on *.* to 'root'@'Your_IP' identified by 'password' with grant option;
flush privileges;
这时可以在 Your_IP 发起连接:mysql -hYour_IP -uroot -p'password' -P3306
,我们便可以在远程访问 ECS 上的 MySQL:
2.2.4 运行 Redis
启动 Redis:redis-server /usr/local/redis/bin/redis.conf
停止 Redis:redis-cli -h 127.0.0.1 -p 6379 -a password shutdown
在远程访问 ECS 上的 Redis:
到这里,我们的 LNMPR 基础环境就算搭建完成了。当然,后续的正式 ECS 还有更多的工作要做,比如配置 SSL、额外的扩展等,还要结合自己的代码进行具体的部署,比如部署代码、crontab 等。
2.3 可能出现的问题
2.3.1 CentOS 报错:FirewallD is not running
需要设置一下防火墙,开启远端访问功能,但是出于安全考虑最好打开防火墙。
2.3.2 外网无法连接 Redis
除了设置防火墙外,需要修改redis.conf 配置文件,注释掉 bind 127.0.0.1 这一行。
以Aliyun体验机为例,从零搭建LNMPR环境(下)的更多相关文章
- 以Aliyun体验机为例,从零搭建LNMPR环境(上)
使用云服务器搭建 Web 运行环境,尤其是搭建常见的 LNMPR(Linux+Nginx+MySQL+PHP+Redis) 环境,对于开发人员是必备的职场基本技能之一.在这里,借着搭建我的" ...
- 通过create-react-app从零搭建react环境
一. 快速开始: 全局安装脚手架: $ npm install -g create-react-app 通过脚手架搭建项目: $ create-react-app <项目名称> 开始项目: ...
- 从零搭建LNMP环境
Linux就是环境所在的操作系统: Nginx则是一个「高性能的HTTP和反向代理服务器」,官网地址:http://nginx.org/: MySQL则是一个方便地对数据进行增删改查的数据库管理系统, ...
- 从零搭建 webpack3 环境 #1 - 安装使用
目录: (1)什么是webpack (2)webpack核心概念 (3)环境安装 (4)开始使用webpack 1.什么是webpack 官网的一幅图对webpack的解释,从图中可以看出,webpa ...
- 从零搭建生产环境的ghost2.0博客
当前安装过程是在ghost cli 1.9.2上的,由于ghost更新特别快,我安装我个人博客cmlanche.com的时候还是1.9.1,当时没碰到啥问题,到1.9.2就有一点点不一样了,所以要注意 ...
- webpack-从零搭建vuecli环境
模块化思想 // 1最早期就只是html和css处理网页 // 2发明一种语言来操作html和css js // 3早期只是在html文件里直接在script标签里写一些脚本代码 // 4随着Ajax ...
- 一、在windows环境下修改pip镜像源的方法(以python3为例)
在windows环境下修改pip镜像源的方法(以python3为例) 1.在windows文件管理器中,输入 %APPDATA% 2.会定位到一个新的目录下,在该目录下新建pip文件夹,然后到pip文 ...
- React Native从零到一搭建开发环境
React Native从零到一搭建开发环境 ReactNative环境搭建 安装Homebrew 安装rvm 安装nvm 安装node 安装react-native-cli 安装watchman i ...
- 从零搭建docker+jenkins 自动化部署环境
从零搭建docker+jenkins+node.js自动化部署环境 本次案例基于CentOS 7系统 适合有一定docker使用经验的人阅读 适合有一定linux命令使用经验的人阅读 1.docker ...
随机推荐
- CURTIS SAVANAH:数字经济=智能基础设施+海量数据+新生业态
前不久,Datahero Inc公司(公司编号:20141166945)创始人CURTIS SAVANAH在会议上表示,要构建数字经济的愿景,需要智能基础设施.海量数据和全新新生业态. 他在演讲中说到 ...
- mysql一张表到底能存多少数据?
前言 程序员平时和mysql打交道一定不少,可以说每天都有接触到,但是mysql一张表到底能存多少数据呢?计算根据是什么呢?接下来咱们逐一探讨 知识准备 数据页 在操作系统中,我们知道为了跟磁盘交互, ...
- 从微信小程序到鸿蒙js开发【08】——表单组件&注册登录模块
目录: 1.登录模块 2.注册模块 3.系列文章导读 牛年将至,祝大家行行无bug,页页so easy- 在微信小程序中,提供了form组件,可以将input.picker.slider.button ...
- BigDecimalUtil:对double类型的数据进行处理(加减乘除、四舍五入、类型转换、比较两个值的大小)
该工具类所在的包:import java.math.BigDecimal; 项目中使用该工具类的相关代码: // 如果Output表中已经存在该节点(插入数据的节点)的信息,则修改Output表中的这 ...
- SpringBoot Admin应用监控搭建
简介 Spring Boot Admin 用于监控基于 Spring Boot 的应用,它是在 Spring Boot Actuator 的基础上提供简洁的可视化 WEB UI. 参考手册地址:htt ...
- 查看浏览器 请求网页 中 header body cookie
command + alt + i 进入开发者工具 重新刷新页面进行请求URL 进入Network 选中某个url 右侧会展示详细信息
- 进位&&大数字符串处理
Have Fun with Numbers Notice that the number 123456789 is a 9-digit number consisting exactly the nu ...
- Spring MVC 配置记录
目录 1.从pom.xml配置Maven文件开始 2.web.xml 3.springmvc-config.xml 4.controller 使用 idea 编辑器 + Maven + spring ...
- HDOJ-1074(动态规划+状态压缩)
Doing Homework HDOJ-1074 1.本题主要用的是状态压缩的方法,将每种状态用二进制压缩表示 2.状态转移方程:dp[i|(1<<j)]=min(dp[i|(1<& ...
- CCF(再卖菜60分)爆搜+记忆化搜索+差分约束
201809-4 再卖菜 我使用的是爆搜解决,只得了60分. 记忆化搜索 差分约束 #include<iostream> #include<cstdio> #include&l ...