標籤

BAT (38) shell (34) Virtual Machine (33) Xubuntu (29) acfs (25) PHP (24) CentOS (21) Virtul Box (20) 編輯器 (17) 資料庫 (15) lubuntu (13) windows (13) CPP (12) ubuntu (12) chrome (11) laravel (10) Docker (9) Python (9) 5A88 (7) VMware (6) 資料結構 (6) Javascript (5) Node (5) Proxmox VE (5) 公告系統 (5) 程式積木 (5) Android Studio (4) ANN (3) OB2D2016x64 (3) Xoops (3) clonezilla (3) samba (3) 公文 (3) 其他 (3) 硬體 (3) API (2) Android (2) AppInvent2 (2) Html (2) Hyper-V (2) Nas (2) botnet (2) mbot (2) swift (2) wordpress (2) 樣板 (2) 防火牆 (2) AD的應用 (1) Ansible (1) Arduino (1) CSS (1) GitLab (1) HA Proxy (1) LegoEV3 (1) PowerShell (1) Scratch (1) VM (1) XenServer (1) kotlin (1) linuxmint (1) lxc (1)

2019年9月10日 星期二

在 xubuntu 16.04 實作 用 shell 為每個站點設定不同的php 版本

自從網頁主機集中,想要留舊網頁資料,提供查詢。
但又要建立新網頁,因應安全性需做更新。
以往的作法是在學校架新主機、新LAMP、xoops 新版本。
現在則是要在原有主機上,為每個站點設定不同php版本,以因應新的xoops版本。
看到網路資料,想實作看看。

1.安裝 apache2
sudo apt-get install -y apache2

2.安裝 mysql
sudo apt install -y mysql-server mysql-client libmysqlclient-dev mysql-workbench

3.安裝 php5.6
sudo add-apt-repository ppa:ondrej/php
sudo apt-get update
sudo apt-get install -y php5.6-common php5.6-mbstring php5.6-mcrypt php5.6-mysql php5.6-xml php5.6-gd php5.6-curl php5.6-json php5.6-fpm php5.6-zip php5.6-mcrypt libapache2-mod-php5.6

4.安裝:php7.0
sudo apt-get install -y php7.0-common php7.0-mbstring php7.0-mcrypt php7.0-mysql php7.0-xml php7.0-gd php7.0-curl php7.0-json php7.0-fpm php7.0-zip php7.0-mcrypt libapache2-mod-php7.0

5.安裝:php7.1
sudo apt-get install -y php7.1-common php7.1-mbstring php7.1-mcrypt php7.1-mysql php7.1-xml php7.1-gd php7.1-curl php7.1-json php7.1-fpm php7.1-zip php7.1-mcrypt libapache2-mod-php7.1

6.開啟重寫轉向
sudo a2enmod rewrite
sudo a2enmod headers

7.重啟 apache2
sudo service apache2 restart

8.編輯bashrc 加入自定義命令,方便在不同php版本間切換
sudo vi .bashrc

寫入.bashrc, 其內容為
alias php56='sudo a2dismod php7.0 && sudo a2dismod php7.1 && sudo a2enmod php5.6 && sudo service apache2 restart'
alias php70='sudo a2dismod php5.6 && sudo a2dismod php7.1 && sudo a2enmod php7.0 && sudo service apache2 restart'
alias php71='sudo a2dismod php5.6 && sudo a2dismod php7.0 && sudo a2enmod php7.1 && sudo service apache2 restart'

安裝完成後,重啟電腦,預設是執行5.6版本的php
但命令列下php-v 是顯示最高版本7.1
在/etc/php目錄下有對應版本號的資料夾,

編輯相應的php.ini可配置相應的php版本,
命令列下php56可切換到php5.6版本
命令列下php70可切換到php7.0版本
命令列下php71可切換到php7.1版本

9.備份/etc/apache2/site-available/000-default.conf後修改,其指令為
cd /etc/apache2/site-available/
sudo cp 000-default.conf 000-default.conf.bk
sudo pico 000-default.conf 
其內容如下:
<VirtualHost *:80>
        ServerAdmin webmaster@localhost
        DocumentRoot /var/www/html
        <Directory "/var/www/html/php56">
         Options FollowSymLinks
         AllowOverride All
         #Require all denied
         Require all granted
         <FilesMatch \.php$>
            SetHandler "proxy:unix:/run/php/php5.6-fpm.sock|fcgi://localhost"
         </FilesMatch>
        </Directory>
        <Directory "/var/www/html/php70">
         Options FollowSymLinks
         AllowOverride All
         #Require all denied
         Require all granted
         <FilesMatch \.php$>
            SetHandler "proxy:unix:/run/php/php7.0-fpm.sock|fcgi://localhost"
         </FilesMatch>
        </Directory>
        <Directory "/var/www/html/php71">
         Options FollowSymLinks
         AllowOverride All
         #Require all denied
         Require all granted
         <FilesMatch \.php$>
            SetHandler "proxy:unix:/run/php/php7.1-fpm.sock|fcgi://localhost"
         </FilesMatch>
        </Directory>
        ErrorLog ${APACHE_LOG_DIR}/error.log
        CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>

啟用Apache2 模組 proxy proxy_fcgi 
sudo a2enmod proxy proxy_fcgi

重啟 Apache2
sudo service apache2 restart

10.在/var/www/html/,新增三個資料夾,分別為 php56 php70 php71
在這三個資料夾,新增index.php,其內容為 <?php  phpinfo(); ?>
變更 這三個資料夾及其內容 的權限。其指令如下:
cd /var/www/html/
sudo mkdir php56 php70 php71
sudo touch index.php
sudo echo "<?php  phpinfo(); ?>" > index.php
sudo cp index.php /var/www/html/php56/
sudo cp index.php /var/www/html/php70/
sudo mv index.php /var/www/html/php71/
sudo chmod 755 php56 php70 php71 -R

11.打開瀏覽器,並在其網址列,打上 http://IP/php56、http://IP/php70、http://IP/php71
可以看到如下
目前伺服器位址為:192.168.32.199


或是在linux 命令列
x-www-browser 'http://192.168.32.199/php56'
x-www-browser 'http://192.168.32.199/php70'
x-www-browser 'http://192.168.32.199/php71'


現在我們將上述步驟1~步驟10寫成shell,其檔名為lampmulti.sh
其內容如下:
#!/bin/sh
apt-get install -y apache2
apt install -y mysql-server mysql-client libmysqlclient-dev mysql-workbench
add-apt-repository ppa:ondrej/php -y
apt-get update
apt-get install -y php5.6-common php5.6-mbstring php5.6-mcrypt php5.6-mysql php5.6-xml php5.6-gd php5.6-curl php5.6-json php5.6-fpm php5.6-zip php5.6-mcrypt libapache2-mod-php5.6
apt-get install -y php7.0-common php7.0-mbstring php7.0-mcrypt php7.0-mysql php7.0-xml php7.0-gd php7.0-curl php7.0-json php7.0-fpm php7.0-zip php7.0-mcrypt libapache2-mod-php7.0
apt-get install -y php7.1-common php7.1-mbstring php7.1-mcrypt php7.1-mysql php7.1-xml php7.1-gd php7.1-curl php7.1-json php7.1-fpm php7.1-zip php7.1-mcrypt libapache2-mod-php7.1
a2enmod rewrite
a2enmod headers
service apache2 restart
echo "alias php56='sudo a2dismod php7.0 && sudo a2dismod php7.1 && sudo a2enmod php5.6 && sudo service apache2 restart'" >> .bashrc
echo "alias php70='sudo a2dismod php5.6 && sudo a2dismod php7.1 && sudo a2enmod php7.0 && sudo service apache2 restart'" >> .bashrc
echo "alias php71='sudo a2dismod php5.6 && sudo a2dismod php7.0 && sudo a2enmod php7.1 && sudo service apache2 restart'" >> .bashrc
cd /etc/apache2/sites-available/
cp 000-default.conf 000-default.conf.bk
echo "<VirtualHost *:80>" > 000-default.conf
echo "  ServerAdmin webmaster@localhost" >> 000-default.conf
echo "  DocumentRoot /var/www/html" >> 000-default.conf
echo "    <Directory \"/var/www/html/php56\">" >> 000-default.conf
echo "           Options FollowSymLinks" >> 000-default.conf
echo "           AllowOverride All" >> 000-default.conf
echo "           #Require all denied" >> 000-default.conf
echo "           Require all granted" >> 000-default.conf
echo "           <FilesMatch \.php$>" >> 000-default.conf
echo "              SetHandler \"proxy:unix:/run/php/php5.6-fpm.sock|fcgi://localhost\"" >> 000-default.conf
echo "           </FilesMatch>" >> 000-default.conf
echo "    </Directory>" >> 000-default.conf
echo "    <Directory \"/var/www/html/php70\">" >> 000-default.conf
echo "           Options FollowSymLinks" >> 000-default.conf
echo "           AllowOverride All" >> 000-default.conf
echo "           #Require all denied" >> 000-default.conf
echo "           Require all granted" >> 000-default.conf
echo "           <FilesMatch \.php$>" >> 000-default.conf
echo "              SetHandler \"proxy:unix:/run/php/php7.0-fpm.sock|fcgi://localhost\"" >> 000-default.conf
echo "           </FilesMatch>" >> 000-default.conf
echo "    </Directory>" >> 000-default.conf
echo "    <Directory \"/var/www/html/php71\">" >> 000-default.conf
echo "           Options FollowSymLinks" >> 000-default.conf
echo "           AllowOverride All" >> 000-default.conf
echo "           #Require all denied" >> 000-default.conf
echo "           Require all granted" >> 000-default.conf
echo "           <FilesMatch \.php$>" >> 000-default.conf
echo "              SetHandler \"proxy:unix:/run/php/php7.1-fpm.sock|fcgi://localhost\"" >> 000-default.conf
echo "           </FilesMatch>" >> 000-default.conf
echo "           </Directory>" >> 000-default.conf
echo "           ErrorLog ${APACHE_LOG_DIR}/error.log" >> 000-default.conf
echo "           CustomLog ${APACHE_LOG_DIR}/access.log combined" >> 000-default.conf
echo "</VirtualHost>" >> 000-default.conf
a2enmod proxy proxy_fcgi
service apache2 restart
cd /var/www/html/
mkdir php56 php70 php71
touch index.php
echo "<?php  phpinfo(); ?>" > index.php
cp index.php /var/www/html/php56/
cp index.php /var/www/html/php70/
mv index.php /var/www/html/php71/
chmod 755 php56 php70 php71 -R
service apache2 restart

直接用 SSH 連接到Server,
用 sudo pico lampmulti.sh,將上面紅色字貼到lampmulti.sh
接下來,將lampmulti.sh權限改為可執行,其指令為 sudo chmod +x lampmulti.sh
執行lampmulti.sh,其指令為 sudo sh lampmulti.sh

注意事項:
1.有些時候會無法完整安裝,這時要下指令要加--fix-missing
   意即 sudo sh lampmulti --fix-missing
   才能夠針對缺項進行完整安裝

2.網頁編碼的問題,可加上
<?php
header("Content-Type:text/html; charset=utf-8");
?>
1.在 xubuntu 16.04中
需先檢查/etc/apache2/conf-available/chartset.conf
AddDefaultCharset UTF-8 前面是否加上 # ,即#AddDefaultCharset UTF-8

2.在 xubuntu 16.04中
需先檢查/etc/php/5.6/apahe2/php.ini 中的default_charset = "UTF-8" 前面要加;,即;default_charset = "UTF-8"
需先檢查/etc/php/7.0/apahe2/php.ini 中的default_charset = "UTF-8" 前面要加;,即;default_charset = "UTF-8"
需先檢查/etc/php/7.1/apahe2/php.ini 中的default_charset = "UTF-8" 前面要加;,即;default_charset = "UTF-8"

目前實驗在此伺服器中,安裝sfs3,其目錄在php56/sfs3。
登入後,會出現錯誤


3.使用adminer 作為MySQL資料庫管理工具

資料來源:
1.ubuntu php多版本共存切換,為每個站點設定不同的php版本
2.詳解Ubuntu/CentOS下Apache多站點配置
3.Shell echo命令
4.Mac/Linux/Windows通過命令調用瀏覽器打開某網頁
5.網頁(UTF-8) 於 瀏覽器 出現亂碼解法
6.強迫網頁預設編碼語系 
7.Adminer羽量級MySQL資料庫管理工具,可完全取代phpMyAdmin,且無檔案匯入大小限制

3 則留言:

  1. Hello
    我照你的方式在WSL 系統上安裝 最後網頁會顯示
    Service Unavailable
    The server is temporarily unable to service your request due to maintenance downtime or capacity problems. Please try again later.

    Apache/2.4.29 (Ubuntu) Server at IP Port 80

    請問是哪邊有出問題嗎?

    回覆刪除

在 Windows 10 x64 1909版,使用BAT快速安裝公文系統與人事服務網(自然人憑證)版

相關內容移往 https://skjhcreator.blogspot.com/2021/02/windows-10-x64-1909bat.html