前提條件
- 已創建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
一:準備編譯環境
- 遠程連接需要部署LNMP環境的ECS實例
- 關閉防火墻
1. 查看防火墻狀態
systemctl status firewalld
2. 如果防火墻的狀態參數是active,則防火墻為開啟狀態。如果防火墻為關閉狀態可以忽略此步驟。
如果您想臨時關閉防火墻,需要運行以下命令:
systemctl stop firewalld
如果您想永久關閉防火墻,需要依次運行以下命令:
# 關閉防火墻
systemctl stop firewalld
# 實例開機時,禁止啟動防火墻服務。
systemctl disable firewalld
- 關閉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
設置快捷命令
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