阿里云服務(wù)器ECS部署LNMP環(huán)境(CentOS 7)

前提條件

  • 已創(chuàng)建ECS實(shí)例并為實(shí)例分配公網(wǎng)IP地址
    我使用的是以下配置的ECS實(shí)例:
    實(shí)例規(guī)格:ecs.n4.small
    操作系統(tǒng):CentOS 7.9 64位
    網(wǎng)絡(luò)類型:專有網(wǎng)絡(luò)
    IP地址:公網(wǎng)IP
  • 已在實(shí)例安全組的入方向添加安全組規(guī)則并放行22、80、443、3306端口。具體操作,請參見添加安全組規(guī)則。

安裝完成后的軟件版本信息

Nginx版本:Nginx 1.20.1
MySQL版本:MySQL 5.7.37
PHP版本:PHP 7.0.33

一:準(zhǔn)備編譯環(huán)境

  1. 遠(yuǎn)程連接需要部署LNMP環(huán)境的ECS實(shí)例
  2. 關(guān)閉防火墻
1. 查看防火墻狀態(tài)
systemctl status firewalld
2. 如果防火墻的狀態(tài)參數(shù)是active,則防火墻為開啟狀態(tài)。如果防火墻為關(guān)閉狀態(tài)可以忽略此步驟。
如果您想臨時(shí)關(guān)閉防火墻,需要運(yùn)行以下命令:
systemctl stop firewalld
如果您想永久關(guān)閉防火墻,需要依次運(yùn)行以下命令:
# 關(guān)閉防火墻
systemctl stop firewalld
# 實(shí)例開機(jī)時(shí),禁止啟動防火墻服務(wù)。
systemctl disable firewalld
  1. 關(guān)閉SELinux。
運(yùn)行g(shù)etenforce命令查看SELinux的當(dāng)前狀態(tài)
如果是Disabled,則SELinux為關(guān)閉狀態(tài)
如果是Enforcing,則為開啟狀態(tài)
SELinux關(guān)閉的方式分為臨時(shí)關(guān)閉和永久關(guān)閉,請根據(jù)自身業(yè)務(wù)需求進(jìn)行選擇。

二:安裝Nginx

1. 安裝Nginx。
yum -y install nginx
2. 查看Nginx版本。
nginx -v
返回結(jié)果如下所示,表示Nginx安裝成功。
nginx version: nginx/1.20.1

三:安裝MySQL

1. 更新YUM源。
rpm -Uvh  http://dev.mysql.com/get/mysql57-community-release-el7-9.noarch.rpm
2. 安裝MySQL
yum -y install mysql-community-server 
注:我這里GPG驗(yàn)證不通過,所以在yum install 版本后面加上 --nogpgcheck,繞過GPG驗(yàn)證。即:yum install mysql-community-server --nogpgcheck
3. 查看MySQL版本號
mysql -V
返回結(jié)果如下所示,表示MySQL安裝成功。
mysql  Ver 14.14 Distrib 5.7.37, for Linux (x86_64) using  EditLine wrapper
4. 啟動MySQL
systemctl start mysqld
5. 設(shè)置開機(jī)啟動MySQL。
systemctl enable mysqld
systemctl daemon-reload

四:安裝PHP

1. 更新YUM源
運(yùn)行以下命令添加epel源。
yum install https://repo.ius.io/ius-release-el7.rpm https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm
添加Webtatic源
rpm -Uvh https://mirror.webtatic.com/yum/el7/webtatic-release.rpm
2. 安裝PHP
yum -y install php70w-devel php70w.x86_64 php70w-cli.x86_64 php70w-common.x86_64 php70w-gd.x86_64 php70w-ldap.x86_64 php70w-mbstring.x86_64 php70w-mcrypt.x86_64  php70w-pdo.x86_64   php70w-mysqlnd  php70w-fpm php70w-opcache php70w-pecl-redis php70w-pecl-mongodb
3. 查看PHP版本
php -v
返回結(jié)果如下所示,表示安裝成功。
PHP 7.0.33 (cli) (built: Dec  6 2018 22:30:44) ( NTS )

五:配置Nginx

1. 備份Nginx配置文件
cp /etc/nginx/nginx.conf /etc/nginx/nginx.conf.bak
2. 編輯Ngnix配置文件
vim /etc/nginx/nginx.conf,按i,修改配置如下,:wq保存退出
部分代碼如下:
server {
    listen       80;
    listen       [::]:80;
    server_name  _;
    root         /usr/share/nginx/html;

    # Load configuration files for the default server block.
    include /etc/nginx/default.d/*.conf;

    # 添加下列信息
    location / {
        index index.php index.html index.htm;
    }

    # 添加下列信息,配置Nginx通過fastcgi方式處理您的PHP請求。
    location ~ .php$ {
        root /home/www;    #將/home/www/替換為您的網(wǎng)站根目錄。
        fastcgi_pass 127.0.0.1:9000;   #Nginx通過本機(jī)的9000端口將PHP請求轉(zhuǎn)發(fā)給PHP-FPM進(jìn)行處理。
        fastcgi_index index.php;
        fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;
        include fastcgi_params;   #Nginx調(diào)用fastcgi接口處理PHP請求。
    }

    error_page 404 /404.html;
    location = /404.html {
    }

    error_page 500 502 503 504 /50x.html;
    location = /50x.html {
    }
}
3. 查看nginx配置是否正確
nginx -t
4. 啟動Nginx服務(wù)
systemctl start nginx 
5. 設(shè)置Nginx服務(wù)開機(jī)自啟動
systemctl enable nginx

六:配置MySQL

1. 查看/var/log/mysqld.log文件,請自行保存root用戶的初始密碼,我這里的臨時(shí)密碼是TuXoQw.gs0W,
grep 'temporary password' /var/log/mysqld.log
返回:2022-02-19T02:30:15.533743Z 1 [Note] A temporary password is generated for root@localhost: TuXoQw.gs0W,
2. 配置MySQL的安全性
mysql_secure_installation
Enter password for user root: #輸入上一步獲取的root用戶初始密碼

2.1 設(shè)置新密碼
New password: #輸入新密碼。長度為8至30個(gè)字符,必須同時(shí)包含大小寫英文字母、數(shù)字和特殊符號。特殊符號包含()` ~!@#$%^&*-+=|{}[]:;‘<>,.?/

Re-enter new password: #確認(rèn)新密碼。

Estimated strength of the password: 100 #返回結(jié)果包含您設(shè)置的密碼強(qiáng)度。
Change the password for root ? ((Press y|Y for Yes, any other key for No) :Y #輸入Y確認(rèn)使用新密碼。

#新密碼設(shè)置完成后,需要再次驗(yàn)證新密碼。
New password:#再次輸入新密碼。

Re-enter new password:#再次確認(rèn)新密碼。

#輸入Y,再次確認(rèn)使用新密碼。
Do you wish to continue with the password provided?(Press y|Y for Yes, any other key for No) :Y 

#輸入Y刪除匿名用戶
Remove anonymous users? (Press y|Y for Yes, any other key for No) :Y 

#輸入Y禁止使用root遠(yuǎn)程登錄MySQL。
Disallow root login remotely? (Press y|Y for Yes, any other key for No) :Y 

#輸入Y刪除test庫以及用戶對test庫的訪問權(quán)限。
Remove test database and access to it? (Press y|Y for Yes, any other key for No) :Y 

#輸入Y重新加載授權(quán)表。
Reload privilege tables now? (Press y|Y for Yes, any other key for No) :Y 

七:配置PHP

1. 在網(wǎng)站根目錄新建phpinfo.php,這里只是測試使用,正式環(huán)境請把phpinfo.php刪除
vim /home/www/phpinfo.php,按i,輸入以下代碼,按Esc鍵,輸入:wq并回車,保存關(guān)閉配置文件
<?php echo phpinfo(); ?>
2. 啟動PHP-FPM
systemctl start php-fpm
3. PHP-FPM開機(jī)自啟動
systemctl enable php-fpm

八:測試訪問LNMP配置信息頁面

在瀏覽器的地址欄輸入http://<ECS實(shí)例公網(wǎng)IP地址>/phpinfo.php進(jìn)行訪問。
訪問結(jié)果如下圖所示,表示LNMP環(huán)境部署成功。


image.png

到這里已經(jīng)安裝完成了,接下來是安裝多版本PHP,如果不需要,可以忽略

源碼安裝PHP7.3.4

#在此目錄下進(jìn)行
cd /usr/local/src/
#下載源碼包
wget https://www.php.net/distributions/php-7.3.4.tar.gz
# 解壓
tar -zxvf php-7.3.4.tar.gz
# 切換到php-7.3.4目錄
cd php-7.3.4
#配置編譯參數(shù)
./configure --prefix=/usr/local/php73 --with-config-file-path=/usr/local/php73/etc
# 安裝
make && make install
# 查看是否安裝成功
/usr/local/php73/bin/php -v

PHP編譯常見錯誤以及解決方法

設(shè)置快捷命令

1. vi ~/.bash_profile
# 加入以下兩行后保存退出
alias php73="/usr/local/php73/bin/php"
alias php70="/usr/bin/php"
# 默認(rèn)使用7.3.4版本
alias php="php73"
2. source ~/.bash_profile

復(fù)制php.ini文件

1. 復(fù)制源碼包里面的php.ini-development到/usr/local/php73/etc目錄下
cp /usr/local/src/php-7.3.4/php.ini-development /usr/local/php73/etc/php.ini
2. 測試php.ini加載問題
php --ini
返回以下信息說明配置成功:
Configuration File (php.ini) Path: /usr/local/php73/etc
Loaded Configuration File:         /usr/local/php73/etc/php.ini

編譯安裝擴(kuò)展

1. 在 源碼包 /usr/local/src/php-7.3.4/ext/ 目錄下可以看到 php 所有的原生擴(kuò)展,
/usr/local/src/php-7.3.4/ext/
# 以安裝 sockets 為例,切換到sockets目錄
cd sockets
# 執(zhí)行 phpize
/usr/local/php73/bin/phpize
# 配置編譯
./configure --with-php-config=/usr/local/php73/bin/php-config
# 編譯并且安裝
make && make install
# 在/usr/local/php73/etc/php.ini配置文件加入模塊
`extension=sockets`
# 查看模塊是否安裝成功
php73 -m | grep sockets
返回 `sockets` 說明安裝成功

修改 php-fpm 監(jiān)聽端口

# 復(fù)制php7.3.4的php-fpm 配置文件
cp /usr/local/php73/etc/php-fpm.conf.default /usr/local/php73/etc/php-fpm.conf
# 編輯php-fpm.conf
vim /usr/local/php73/etc/php-fpm.conf
去掉;pid = run/php-fpm.pid前面的分號
# 復(fù)制www.conf文件
cp /usr/local/php73/etc/php-fpm.d/www.conf.default /usr/local/php73/etc/php-fpm.d/www.conf
vim /usr/local/php73/etc/php-fpm.d/www.conf
輸入 /9000 回車,找到 listen = 127.0.0.1:9000 這一行將 9000 修改為 9073
# 關(guān)閉php-fpm
killall php-fpm
# 重啟 php-fpm
/usr/sbin/php-fpm
/usr/local/php73/sbin/php-fpm

Nginx配置多版本PHP

1. 修改nginx配置文件
vim /etc/nginx/nginx.conf
修改如下:
server {
    listen       80;
    listen       [::]:80;
    server_name  _;

    set $root "/home/www";

    # Load configuration files for the default server block.
    include /etc/nginx/default.d/*.conf;

    location / {
        root   $root;
        index index.php index.html index.htm;
    }

    # php73 匹配路由
    location ^~ /php73 {
        root           $root;
        fastcgi_pass   127.0.0.1:9073; # 這里端口需和前面 php-fpm 修改的端口保持一致
        fastcgi_index  index.php;
        fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;
        include        fastcgi_params;
    }

    # php70
    location ^~ /php70 {
        root           $root;
        fastcgi_pass   127.0.0.1:9000; # 這里端口需和前面 php-fpm 修改的端口保持一致
        fastcgi_index  index.php;
        fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;
        include        fastcgi_params;
    }

    # 沒有匹配到以上兩種路由,默認(rèn)走 php73
    location ~ \.php$ {
        root           $root;
        fastcgi_pass   127.0.0.1:9073;
        fastcgi_index  index.php;
        fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;
        include        fastcgi_params;
    }

    error_page 404 /404.html;
    location = /404.html {
    }

    error_page 500 502 503 504 /50x.html;
    location = /50x.html {
    }
}

# 2. 重啟 Nginx
systemctl restart nginx.service

測試PHP多版本

1. 運(yùn)行以下命令查看PHP版本是否對應(yīng)
php -v
php73 -v
php70 -v
2. 瀏覽器訪問測試
mkdir /home/www/php73
mkdir /home/www/php70
cp /home/www/phpinfo.php /home/www/php73/phpinfo.php
cp /home/www/phpinfo.php /home/www/php70/phpinfo.php
依次訪問以下路徑,查看對應(yīng)版本
http://<ECS實(shí)例公網(wǎng)IP地址>/php73/phpinfo.php
http://<ECS實(shí)例公網(wǎng)IP地址>/php70/phpinfo.php
http://<ECS實(shí)例公網(wǎng)IP地址>/phpinfo.php

接下來的代碼管理需要用到的工具安裝

安裝Git版本控制工具

1. yum安裝Git
yum -y install git
2. 輸入 git --version查看Git是否安裝完成以及查看其版本號
git --version
返回以下信息說明安裝成功:
git version 1.8.3.1
yum安裝的git被安裝在/usr/libexec/git-core目錄下

安裝composer

1. 下載composer
curl -sS https://getcomposer.org/installer | php
2. 將composer.phar文件移動到bin目錄以便全局使用composer命令
mv composer.phar /usr/local/bin/composer
3. 配置composer使用國內(nèi)鏡像庫,這里切換為阿里云 Composer 鏡像
composer config -g repo.packagist composer https://mirrors.aliyun.com/composer/
4. 輸入composer驗(yàn)證是否安裝成功
這里注意下,Composer不允許使用root用戶執(zhí)行,所以執(zhí)行會報(bào)這個(gè)錯誤
Do not run Composer as root/super user! See https://getcomposer.org/root for detail
回車,出現(xiàn)以下信息表示安裝成功
  ______
  / ____/___  ____ ___  ____  ____  ________  _____
 / /   / __ \/ __ `__ \/ __ \/ __ \/ ___/ _ \/ ___/
/ /___/ /_/ / / / / / / /_/ / /_/ (__  )  __/ /
\____/\____/_/ /_/ /_/ .___/\____/____/\___/_/
                    /_/
Composer version 2.2.6 2022-02-04 17:00:38
解決辦法:創(chuàng)建一個(gè)新用戶 , 使用新用戶執(zhí)行操作 即可 .
# 創(chuàng)建新用戶
useradd newname
# 設(shè)置密碼
passwd newname,輸入密碼
# 切換到新用戶
su newname
執(zhí)行 原來的操作 , 順利完成 composer 指令
多版本PHP執(zhí)行composer安裝
/usr/local/php73/bin/php /usr/local/bin/composer install
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容