以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環境(上)LNMP
- 以QT為例談環境搭建QT
- VUE從零開始環境搭建Vue
- 使用dockerfile 部署lnmpr環境DockerLNMP
- Mac下配置Java開發環境以Java 8 為例MacJava開發環境
- 從零搭建 Node.js 線上環境Node.js
- 從零搭建嵌入式開發環境開發環境
- 從零搭建Golang開發環境--go修仙序章Golang開發環境
- 從零開始搭建本地 Docker 開發環境Docker開發環境
- Angular環境搭建及簡單體驗Angular
- 從零開始搭建webpack+react開發環境WebReact開發環境
- 通過 create-react-app 從零搭建 React 環境ReactAPP
- Laravel 從零單排系列教程 01 :Homestead 環境搭建Laravel
- Opencl從零實戰(一)--windows搭建開發環境Windows開發環境
- 從零搭建前端開發環境----React+Ts+Webpack基礎搭建前端開發環境ReactWeb
- 搭建Ansible實驗環境
- Windows環境下的Nginx環境搭建WindowsNginx
- window環境下testlink環境搭建(xammp)
- 阿里雲體驗實驗室 教你如何《搭建Hadoop環境》阿里Hadoop
- 阿里雲體驗實驗室 教你《快速搭建Docker環境》阿里Docker
- 阿里雲體驗實驗室教程《快速搭建LAMP環境》阿里LAMP
- 從零開發一個單機儲存引擎-以VDL Logstore設計為例儲存引擎
- 以太坊-Win環境下remix環境搭建REM
- 無需搭建環境,零門檻帶你體驗Open-Sora文生影片應用Sora
- 阿里雲體驗實驗室 教你如何《快速搭建LNMP環境》阿里LNMP
- 從零搭建docker+jenkins+node.js自動化部署環境DockerJenkinsNode.js
- 從零開始使用 Webpack 搭建 Vue3 開發環境WebVue開發環境
- Windows 下搭建 lnmp 環境WindowsLNMP
- Centos下搭建golang環境CentOSGolang
- docker下LNMP環境搭建DockerLNMP
- mac 下搭建flutter環境MacFlutter
- windows下搭建lisp環境WindowsLisp
- 基於docker環境下搭建redis主從叢集DockerRedis
- 體驗有禮:基於ECS快速搭建Docker環境Docker
- RHEL9.4搭建虛擬機器實驗環境虛擬機
- ubuntu環境下搭建以太坊開發環境Ubuntu開發環境
- CD 從抓軌到搭建流媒體伺服器 —— 以《月臨寐鄉》為例伺服器
- 阿里雲體驗實驗室 教程《搭建Java Web開發環境》阿里JavaWeb開發環境