阿里云服務器ECS部署LNMP環境(CentOS 7)

前提條件

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

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

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

一:準備編譯環境

  1. 遠程連接需要部署LNMP環境的ECS實例
  2. 關閉防火墻
1. 查看防火墻狀態
systemctl status firewalld
2. 如果防火墻的狀態參數是active,則防火墻為開啟狀態。如果防火墻為關閉狀態可以忽略此步驟。
如果您想臨時關閉防火墻,需要運行以下命令:
systemctl stop firewalld
如果您想永久關閉防火墻,需要依次運行以下命令:
# 關閉防火墻
systemctl stop firewalld
# 實例開機時,禁止啟動防火墻服務。
systemctl disable firewalld
  1. 關閉SELinux。
運行getenforce命令查看SELinux的當前狀態
如果是Disabled,則SELinux為關閉狀態
如果是Enforcing,則為開啟狀態
SELinux關閉的方式分為臨時關閉和永久關閉,請根據自身業務需求進行選擇。

二:安裝Nginx

1. 安裝Nginx。
yum -y install nginx
2. 查看Nginx版本。
nginx -v
返回結果如下所示,表示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驗證不通過,所以在yum install 版本后面加上 --nogpgcheck,繞過GPG驗證。即:yum install mysql-community-server --nogpgcheck
3. 查看MySQL版本號
mysql -V
返回結果如下所示,表示MySQL安裝成功。
mysql  Ver 14.14 Distrib 5.7.37, for Linux (x86_64) using  EditLine wrapper
4. 啟動MySQL
systemctl start mysqld
5. 設置開機啟動MySQL。
systemctl enable mysqld
systemctl daemon-reload

四:安裝PHP

1. 更新YUM源
運行以下命令添加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
返回結果如下所示,表示安裝成功。
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/替換為您的網站根目錄。
        fastcgi_pass 127.0.0.1:9000;   #Nginx通過本機的9000端口將PHP請求轉發給PHP-FPM進行處理。
        fastcgi_index index.php;
        fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;
        include fastcgi_params;   #Nginx調用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服務
systemctl start nginx 
5. 設置Nginx服務開機自啟動
systemctl enable nginx

六:配置MySQL

1. 查看/var/log/mysqld.log文件,請自行保存root用戶的初始密碼,我這里的臨時密碼是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 設置新密碼
New password: #輸入新密碼。長度為8至30個字符,必須同時包含大小寫英文字母、數字和特殊符號。特殊符號包含()` ~!@#$%^&*-+=|{}[]:;‘<>,.?/

Re-enter new password: #確認新密碼。

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

#新密碼設置完成后,需要再次驗證新密碼。
New password:#再次輸入新密碼。

Re-enter new password:#再次確認新密碼。

#輸入Y,再次確認使用新密碼。
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遠程登錄MySQL。
Disallow root login remotely? (Press y|Y for Yes, any other key for No) :Y 

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

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

七:配置PHP

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

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

在瀏覽器的地址欄輸入http://<ECS實例公網IP地址>/phpinfo.php進行訪問。
訪問結果如下圖所示,表示LNMP環境部署成功。


image.png

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

源碼安裝PHP7.3.4

#在此目錄下進行
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
#配置編譯參數
./configure --prefix=/usr/local/php73 --with-config-file-path=/usr/local/php73/etc
# 安裝
make && make install
# 查看是否安裝成功
/usr/local/php73/bin/php -v

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

設置快捷命令

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

復制php.ini文件

1. 復制源碼包里面的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

編譯安裝擴展

1. 在 源碼包 /usr/local/src/php-7.3.4/ext/ 目錄下可以看到 php 所有的原生擴展,
/usr/local/src/php-7.3.4/ext/
# 以安裝 sockets 為例,切換到sockets目錄
cd sockets
# 執行 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 監聽端口

# 復制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前面的分號
# 復制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
# 關閉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;
    }

    # 沒有匹配到以上兩種路由,默認走 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. 運行以下命令查看PHP版本是否對應
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
依次訪問以下路徑,查看對應版本
http://<ECS實例公網IP地址>/php73/phpinfo.php
http://<ECS實例公網IP地址>/php70/phpinfo.php
http://<ECS實例公網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使用國內鏡像庫,這里切換為阿里云 Composer 鏡像
composer config -g repo.packagist composer https://mirrors.aliyun.com/composer/
4. 輸入composer驗證是否安裝成功
這里注意下,Composer不允許使用root用戶執行,所以執行會報這個錯誤
Do not run Composer as root/super user! See https://getcomposer.org/root for detail
回車,出現以下信息表示安裝成功
  ______
  / ____/___  ____ ___  ____  ____  ________  _____
 / /   / __ \/ __ `__ \/ __ \/ __ \/ ___/ _ \/ ___/
/ /___/ /_/ / / / / / / /_/ / /_/ (__  )  __/ /
\____/\____/_/ /_/ /_/ .___/\____/____/\___/_/
                    /_/
Composer version 2.2.6 2022-02-04 17:00:38
解決辦法:創建一個新用戶 , 使用新用戶執行操作 即可 .
# 創建新用戶
useradd newname
# 設置密碼
passwd newname,輸入密碼
# 切換到新用戶
su newname
執行 原來的操作 , 順利完成 composer 指令
多版本PHP執行composer安裝
/usr/local/php73/bin/php /usr/local/bin/composer install
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 228,345評論 6 531
  • 序言:濱河連續發生了三起死亡事件,死亡現場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機,發現死者居然都...
    沈念sama閱讀 98,494評論 3 416
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事。” “怎么了?”我有些...
    開封第一講書人閱讀 176,283評論 0 374
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 62,953評論 1 309
  • 正文 為了忘掉前任,我火速辦了婚禮,結果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當我...
    茶點故事閱讀 71,714評論 6 410
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發上,一...
    開封第一講書人閱讀 55,186評論 1 324
  • 那天,我揣著相機與錄音,去河邊找鬼。 笑死,一個胖子當著我的面吹牛,可吹牛的內容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 43,255評論 3 441
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 42,410評論 0 288
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當地人在樹林里發現了一具尸體,經...
    沈念sama閱讀 48,940評論 1 335
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 40,776評論 3 354
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發現自己被綠了。 大學時的朋友給我發了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 42,976評論 1 369
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 38,518評論 5 359
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質發生泄漏。R本人自食惡果不足惜,卻給世界環境...
    茶點故事閱讀 44,210評論 3 347
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 34,642評論 0 26
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 35,878評論 1 286
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 51,654評論 3 391
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 47,958評論 2 373

推薦閱讀更多精彩內容