前提條件
- 已創(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)境
- 遠(yuǎn)程連接需要部署LNMP環(huán)境的ECS實(shí)例
- 關(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
- 關(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
設(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