您好,登錄后才能下訂單哦!
這篇文章主要講解了“如何用源碼方式搭建LNMP環境”,文中的講解內容簡單清晰,易于學習與理解,下面請大家跟著小編的思路慢慢深入,一起來研究和學習“如何用源碼方式搭建LNMP環境”吧!
源碼方式搭建LNMP環境
1、安裝 RedHat8
Centos8,或其他都可。虛擬機是 VMware ,網上有安裝教程,這里就不啰嗦了。
2、配置本地的軟件倉庫
// 把系統鏡像掛載到/media/cdrom目錄。
mkdir -p /media/cdrom
mount /dev/cdrom /media/cdrom
// mount: /media/cdrom: WARNING: device write-protected, mounted read-only.
// 創建軟件倉庫的配置文件
~]# vi /etc/yum.repos.d/rhel8.repo
[BaseOS]
name=BaseOS
baseurl=file:///media/cdrom/BaseOS
enabled=1
gpgcheck=0
[AppStream]
name=AppStream
baseurl=file:///media/cdrom/AppStream
enabled=1
gpgcheck=0
測試安裝一下 vim, wget
dnf install vim wget -y
3、安裝編譯需要的工具
dnf -y install apr* autoconf automake numactl bison bzip2-devel cpp curl-devel fontconfig-devel freetype-devel gcc gcc-c++ gd-devel gettext-devel kernel-headers keyutils-libs-devel krb5-devel libcom_err-devel libpng-devel libjpeg* libsepol-devel libselinux-devel libstdc++-devel libtool* libxml2-devel libXpm* libxml* libXaw-devel libXmu-devel libtiff* make openssl-devel patch pcre-devel perl php-common php-gd telnet zlib-devel libtirpc-devel gtk* ntpstat na* bison* lrzsz cmake ncurses-devel libzip-devel libxslt-devel gdbm-devel readline-devel gmp-devel
4、下載所需軟件源碼包
統一放到 /lnmp 目錄下保存。
mkdir /lnmp
cd /lnmp
wget https://www.linuxprobe.com/Software/rpcsvc-proto-1.4.tar.gz
wget https://www.linuxprobe.com/Software/nginx-1.16.0.tar.gz
wget https://www.linuxprobe.com/Software/mysql-8.0.18.tar.xz
wget https://www.linuxprobe.com/Software/php-7.3.5.tar.gz
wget https://www.linuxprobe.com/Software/wordpress.tar.gz
5、安裝 rpcsvc-proto
rpcsvc-proto 是一款包含 rcpsvc 協議文件支持的軟件包名稱,rcpsvc 協議在后續 Nginx 與 MySQL 服務程序的部署過程中都需要被調用到。
tar xzvf rpcsvc-proto-1.4.tar.gz
cd rpcsvc-proto-1.4/
./configure
make
make install
cd ..
6、安裝 Nginx
為 Nginx 的運行創建一個賬號
程序是由一個用戶運行的,為了安全性,當然不能是 root 了。
并且它也不需要家目錄,不需要登錄,僅是拿來運行 Nginx。
useradd nginx -M -s /sbin/nologin // -M 不創建家目錄,-s 指定 shell
id nginx // 查詢是否創建成功了
uid=1000(nginx) gid=1000(nginx) 組=1000(nginx)
安裝 Nginx
lnmp]# tar zxvf nginx-1.16.0.tar.gz
lnmp]# cd nginx-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]# make
nginx-1.16.0]# make install
nginx-1.16.0]# cd ..
配置 Nginx
使用 prefix 參數指定了安裝路徑,那么 Nginx 配置文件在 /usr/local/nginx 下。
提供程序運行的 user 屬主,group 屬組
vim /usr/local/nginx/conf/nginx.conf
// 打開文件后,我們在英文模式下,按下 shift + 冒號,輸入2,回車,定位到第2行。
// 連按兩次 ESC,取消當前使用模式
// 再次 shift + 冒號,輸入 set nu,回車,我們可以顯示行號
1
2 user nginx nginx; // 第二行,修改為這樣
在第 45 行,index 配置(可以做默認首頁的文件)里加入 index.php。
43 location / {
44 root html;
45 index index.php index.html index.htm;
46 }
刪除第 65~71 行前面的注釋符#,來啟用虛擬主機功能,然后將第 69 行后面對應的網站根目錄修改為 /usr/local/nginx/html,其中的 fastcgi_script_name 參數用于指代腳本名稱,也就是用戶請求的 URL。只有信息填寫正確了,才能使 Nginx 正確解析用戶請求,否則訪問的頁面會提示 “404 Not Found” 的錯誤。
63 # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
64 #
65 location ~ \.php$ {
66 root html;
67 fastcgi_pass 127.0.0.1:9000;
68 fastcgi_index index.php;
69 fastcgi_param SCRIPT_FILENAME /usr/local/nginx/html$fastcgi_script_name;
70 include fastcgi_params;
71 }
源碼編譯安裝的軟件,默認不能被 systemctl 所管理,我們可以直接用其自身的 /usr/local/nginx/sbin/nginx 管理。建議將 /usr/local/nginx/sbin 路徑加入到 PATH 環境變量中,我們就可以直接輸入 nginx,不用加路徑了。
然后用 source 命令,讓此修改立即生效。
lnmp]# vim ~/.bash_profile
# .bash_profile
# Get the aliases and functions
if [ -f ~/.bashrc ]; then
. ~/.bashrc
fi
# User specific environment and startup programs
PATH=$PATH:$HOME/bin:/usr/local/nginx/sbin // 這里加上 Nginx 的 sbin 路徑
export PATH
lnmp]# source ~/.bash_profile // 讓修改立即生效
lnmp]# nginx // 啟動 nginx 服務
打開瀏覽器訪問,192.168.89.128 (我的虛擬機地址),訪問失敗
關閉防火墻
systemctl status firewalld.service // 查看是否在運行
systemctl stop firewalld.service // 臨時停止
systemctl disable firewalld.service // 永久關閉
再次訪問,發現可以了。
7、安裝 MySQL
創建一個 mysql 用戶,負責運行 MySQL 數據庫。同樣該用戶也是不需要登錄的。
lnmp]# useradd mysql -M -s /sbin/nologin
安裝
// 解壓MySQL安裝軟件包
lnmp]# tar xvf mysql-8.0.18.tar.xz
// 將解壓出的程序目錄改名并移動到/usr/local目錄下
lnmp]# mv mysql-8.0.18-linux-glibc2.12-x86_64 mysql
lnmp]# mv mysql /usr/local
/usr/local/mysql 是保存 MySQL 程序文件的路徑,/usr/local/mysql/data 是存儲數據的地方,每個數據庫就是它下面的一個目錄。我們還需要手動創建它。
lnmp]# cd /usr/local/mysql
mysql]# mkdir data
初始化 MySQL,對目錄授權,保證數據能被 mysql 用戶訪問,初始化之前,要先用 mysqld 命令確認管理 MySQL 服務的用戶名,數據存放目錄,編碼信息,信息無誤后,開始初始化。初始化后,系統會給用戶分配一個初始的臨時密碼。要記得保存一下。
下面示例中分配的密碼是 qfroRs,Ei4Ls。
[root@linuxprobe mysql]# chown -R mysql:mysql /usr/local/mysql
[root@linuxprobe mysql]# cd bin
[root@linuxprobe bin]# ./mysqld --initialize --user=mysql --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data
2021-05-06T07:07:06.243270Z 0 [System] [MY-013169] [Server] /usr/local/mysql/bin/mysqld (mysqld 8.0.18) initializing of server in progress as process 7606
2021-05-06T07:07:08.116268Z 5 [Note] [MY-010454] [Server] A temporary password is generated for root@localhost: qfroRs,Ei4Ls
和 nginx 差不多,MySQL 的一些二進制可執行命令,存放在自身程序目錄的 /usr/local/mysql/bin 中,我們也可以加入到 PATH 環境變量中,方便訪問。
[root@linuxprobe bin]# vim ~/.bash_profile
# .bash_profile
# Get the aliases and functions
if [ -f ~/.bashrc ]; then
. ~/.bashrc
fi
# User specific environment and startup programs
PATH=$PATH:$HOME/bin:/usr/local/nginx/sbin:/usr/local/mysql/bin
export PATH
[root@linuxprobe bin]# source ~/.bash_profile
將啟動腳本 mysql.server 放入到 /etc/init.d 中,讓服務器每次重啟后,都能自動啟動數據庫。并給予可執行權限。
libtinfo.so.5 文件是 MySQL 8.0 版本后新添加的重要的函數庫文件,但默認不存在,需要將 libtinfo.so.6.1 文件復制過來或者作為鏈接文件才能正常啟動:
[root@linuxprobe bin]# cd /usr/local/mysql
[root@linuxprobe mysql]# cp -a support-files/mysql.server /etc/init.d/
[root@linuxprobe mysql]# chmod a+x /etc/init.d/mysql.server
[root@linuxprobe mysql]# ln -s /usr/lib64/libtinfo.so.6.1 /usr/lib64/libtinfo.so.5
執行 MySQL 數據庫服務啟動文件,并進行初始化工作。為了安全著想,MySQL 自 8.0 版本起不再允許用戶使用臨時密碼來管理數據庫內容,也不能進行遠程控制,用戶必須修改初始化密碼后才能使用 MySQL 數據庫。數據庫作為系統重要的組成服務,密碼位數不建議少于 20 位。例如,下面將密碼修改為 “PObejCBeDzTRCncXwgBy”。
[root@linuxprobe mysql]# /etc/init.d/mysql.server start
Starting MySQL.Logging to '/usr/local/mysql/data/linuxprobe.com.err'.
. SUCCESS!
[root@linuxprobe mysql]# mysql -u root -p
Enter password: 輸入初始化時給的原始密碼
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 8
Server version: 8.0.18
Copyright (c) 2000, 2019, Oracle and/or its affiliates. All rights reserved.
Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
mysql> alter user 'root'@'localhost' identified by 'PObejCBeDzTRCncXwgBy';
Query OK, 0 rows affected (0.01 sec)
mysql>
但這樣還是不行,還需要繼續切換到 mysql 數據庫中,修改 user 表單的密碼值。這也是從 MySQL 數據庫 8.0 版本之后才有的新安全要求。
mysql> use mysql;
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A
Database changed
mysql> show tables;
+---------------------------+
| Tables_in_mysql |
+---------------------------+
| columns_priv |
| tables_priv |
| time_zone |
| time_zone_leap_second |
| time_zone_name |
| time_zone_transition |
| time_zone_transition_type |
| user |
| …………省略部分輸出信息………… |
+---------------------------+
33 rows in set (0.00 sec)
mysql> ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'PObejCBeDzTRCncXwgBy';
Query OK, 0 rows affected (0.01 sec)
// 創建一個數據庫
create database linuxcool;
8、安裝 PHP
解壓 php 源碼包,并編譯安裝
[root@linuxprobe mysql]# cd /lnmp
[root@linuxprobe lnmp]# tar xvf php-7.3.5.tar.gz
[root@linuxprobe lnmp]# cd php-7.3.5/
[root@linuxprobe php-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@linuxprobe php-7.3.5]# make
[root@linuxprobe php-7.3.5]# make install
將生成的 php.ini 配置文件復制到安裝目錄中(/usr/local/php/),讓其生效。現在主配置文件有了,接下來還需要 php-fpm 的配置文件,好在 /usr/local/php/etc/ 目錄中也已經提供,只需要復制模板即可:
[root@linuxprobe php-7.3.5]# cp php.ini-development /usr/local/php/lib/php.ini
[root@linuxprobe php-7.3.5]# cd /usr/local/php/etc/
[root@linuxprobe etc]# mv php-fpm.conf.default php-fpm.conf
// 復制一個模板文件到php-fpm.d的目錄中,用于后續控制網站的連接性能:
[root@linuxprobe etc]# mv php-fpm.d/www.conf.default php-fpm.d/www.conf
把 php 服務加入到啟動項中,使其重啟后依然生效
[root@linuxprobe etc]# cd /lnmp/php-7.3.5
[root@linuxprobe php-7.3.5]# cp sapi/fpm/init.d.php-fpm /etc/init.d/php-fpm
[root@linuxprobe php-7.3.5]# chmod 755 /etc/init.d/php-fpm
禁用一些函數
[root@linuxprobe php-7.3.5]# vim /usr/local/php/lib/php.ini
307 ; This directive allows you to disable certain functions for security reasons.
308 ; It receives a comma-delimited list of function names.
309 ; http://php.net/disable-functions
310 disable_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@linuxprobe php-7.3.5]# /etc/init.d/php-fpm start
Starting php-fpm done
我們在 /usr/local/nginx/html 下創建一個 index.php 文件測試下
<?php
phpinfo();
瀏覽器訪問地址即可。
9、搭建一個 WordPress
把 Nginx 服務程序根目錄的內容清空后,將 WordPress 解壓后的網站文件復制進去:
[root@linuxprobe php-7.3.5]# cd ..
[root@linuxprobe lnmp]# rm -f /usr/local/nginx/html/*
[root@linuxprobe lnmp]# tar xzvf wordpress.tar.gz
[root@linuxprobe lnmp]# mv wordpress/* /usr/local/nginx/html/
為了能夠讓網站文件被 Nginx 服務程序順利讀取,應設置目錄所有權的身份及可讀寫的權限:
[root@linuxprobe lnmp]# chown -Rf nginx:nginx /usr/local/nginx/html
[root@linuxprobe lnmp]# chmod -Rf 777 /usr/local/nginx/html
輸入虛擬機 IP 地址訪問 WordPress 網站的首頁面。
后面按說明一步步操作下去即可。
感謝各位的閱讀,以上就是“如何用源碼方式搭建LNMP環境”的內容了,經過本文的學習后,相信大家對如何用源碼方式搭建LNMP環境這一問題有了更深刻的體會,具體使用情況還需要大家實踐驗證。這里是億速云,小編將為大家推送更多相關知識點的文章,歡迎關注!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。