中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

如何用源碼方式搭建LNMP環境

發布時間:2023-03-29 17:03:11 來源:億速云 閱讀:100 作者:iii 欄目:編程語言

這篇文章主要講解了“如何用源碼方式搭建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環境”的內容了,經過本文的學習后,相信大家對如何用源碼方式搭建LNMP環境這一問題有了更深刻的體會,具體使用情況還需要大家實踐驗證。這里是億速云,小編將為大家推送更多相關知識點的文章,歡迎關注!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

柏乡县| 平乐县| 峨眉山市| 旺苍县| 永昌县| 杨浦区| 河北省| 昭觉县| 松滋市| 宁陕县| 苏州市| 瑞丽市| 翁牛特旗| 茌平县| 临朐县| 天水市| 彭泽县| 留坝县| 遵义市| 永川市| 弥勒县| 大英县| 固镇县| 高州市| 胶南市| 汶上县| 石景山区| 锦屏县| 五大连池市| 仙居县| 贡觉县| 东山县| 明溪县| 墨竹工卡县| 济宁市| 临猗县| 宝鸡市| 博野县| 尉氏县| 崇左市| 家居|