Ubuntu 16.04+多重php+php-fpm+nodejs +redis+memcached+mongodb 4+ MariaDB 10….

Ubuntu 16.04+多重php+php-fpm+nodejs 12 +redis+memcached+mongodb 4+ MariaDB 10.2.20 + python 3.X

安裝PHP 要往前看 不能往後看 舊版本最好是用另外一個 VM 來包裝 避免 系統內部執行混亂
伺服器具備程式庫工具

[系統設定 crontab ]

10 10 */1 * * /usr/sbin/ntpdate tock.stdtime.gov.tw && /sbin/hwclock -w

清除 windows 10 DNS 快取

[vestacp]

Github Repo
Documentation
Demo
Plugins
https://github.com/cdgco/vestawebinterface

路徑表
http://vestacp.com/docs/#config-log-location-debian-ubuntu

[資料庫]
mariadb

mongodb 4
https://docs.mongodb.com/ecosystem/drivers/php/#installation

[網頁伺服器]
apache
nginx
nodejs

[編譯語言]
php 7.2
python 3.X
java

[php 模組]
Mssql 連線模組
phpfpm
php-ssh2
zeromq

[管理套件]
logwatch
webmin

[網站系統控制台]
vestacp
ispconfig   [考慮….]

[快取系統]
xcache
memcached
redis

[工具函數庫]
wkhtmltopdf
ImageMagick wkhtmltopdf [ wkhtmltox-0.12.4_linux-generic-amd64.tar.xz ]
scp
composer

nvm
npm

[ubuntu 必裝]
sysv-rc-conf

curl -s -o /tmp/vst-install-ubuntu.sh https://vestacp.com/pub/vst-install-ubuntu.sh
sed -i -e "s/mysql\-/mariadb\-/g" /tmp/vst-install-ubuntu.sh

[這指令可以 reload root 的  bashrc]
. ~/.bashrc

[這個要先跑]

10.4 版本有一點難搞 因為有太多新變革

[10.2]
sudo apt-get install software-properties-common
apt-key adv –recv-keys –keyserver hkp://keyserver.ubuntu.com:80 0xF1656F24C74CD1D8
add-apt-repository 'deb [arch=amd64,i386] https://mirrors.evowise.com/mariadb/repo/10.2/ubuntu xenial main'

[10.3]sudo apt-get install software-properties-common
sudo apt-key adv –recv-keys –keyserver hkp://keyserver.ubuntu.com:80 0xF1656F24C74CD1D8
sudo add-apt-repository 'deb [arch=amd64,arm64,i386,ppc64el] http://ftp.igh.cnrs.fr/pub/mariadb/repo/10.3/ubuntu xenial main'

注意要跑
sudo apt update

[步驟]
curl -s -o /tmp/vst-install-ubuntu.sh https://vestacp.com/pub/vst-install-ubuntu.sh
sed -i -e "s/mysql\-/mariadb\-/g" /tmp/vst-install-ubuntu.sh
bash /tmp/vst-install-ubuntu.sh –nginx no –apache yes –phpfpm no –named yes –remi yes –vsftpd yes –proftpd no –iptables yes –fail2ban no –quota no –exim no –dovecot no –spamassassin no –clamav no –softaculous no –mysql yes –postgresql no –hostname webserv1 –email tonny.markx@gmail.com –password 2gaujrgr

[php dev 一定要裝 編譯會用到]
apt-get install php7.x-dev
apt-get install php7.0-dev
apt-get install php7.2-dev
apt-get install php7.3-dev

[如何在多個 php 版本切換]
注意可以透過 sudo update-alternatives –auto php7.2 來設定成自動模式

可以透過 a2enmod 和 a2dismod 兩個指令 來切換 apache2 的 PHP 版本 –> ex. a2enmod php7.2

[這是設定目前CLI模式的PHP 是 7.2]
update-alternatives –set php /usr/bin/php7.2

[切換PHP 完整版]
sudo update-alternatives –set php /usr/bin/php7.2
sudo update-alternatives –set phar /usr/bin/phar7.2
sudo update-alternatives –set phar.phar /usr/bin/phar.phar7.2
sudo update-alternatives –set phpize /usr/bin/phpize7.2
sudo update-alternatives –set php-config /usr/bin/php-config7.2
注意對應關係 這些在後面 編譯的時候 可能會遇到

在“自動模式”下,update-alternatives將始終選擇優先級最高的替代項。如果安裝的新軟件包或升級軟件包的優先級高於其他任何軟件包,則它將被選作自動替代。
在“手動模式”下,update-alternatives無論替代方法的相對優先級如何,都絕不會覆蓋sysadmin的選擇。操作員已經做出選擇,並且系統將堅持下去,直到並且除非操作員做出其他選擇(包括選擇返回“自動模式”)。

[apache2 的 fpm 設定 基本上這樣就可以跑]
<FilesMatch .php$>
    # Apache 2.4.10+ can proxy to unix socket
    SetHandler "proxy:unix:/var/run/php/php7.2-fpm.sock|fcgi://localhost/"
</FilesMatch>

注意 原本的 conf-available  和  conf-enabled 資料夾是沒用的 可能是vestacp的關係
兩個資料夾可能會變得沒用 conf 並沒有 include 到

[fpm 組態]
如果 apache2 要啟用 conf –> a2enconf php7.2-fpm  這樣就可以啟用組態
但注意  proxy proxy_fcgi setenvif

[安裝好之後 開始改 mysql 相關設定]
[注意 phpmyadmin 為何都不能用root 登入 就是因為沒有清掉 plugin ]
sudo mysql -u root
[mysql] use mysql;
[mysql] update user set plugin='' where User='root';
[mysql] flush privileges;

檢視 root 密碼
more /usr/local/vesta/conf/mysql.conf

修改
nano /etc/mysql/my.cnf
加上  –>  sql-mode=NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION
修改/etc/phpmyadmin/config.inc.php

增加
$cfg[‘Servers’][$i][‘pmadb’] = 'phpmyadmin';
$cfg[‘Servers’][$i][‘bookmarktable’] = 'pma__bookmark';
$cfg[‘Servers’][$i][‘relation’] = 'pma__relation';
$cfg[‘Servers’][$i][‘table_info’] = 'pma__table_info';
$cfg[‘Servers’][$i][‘table_coords’] = 'pma__table_coords';
$cfg[‘Servers’][$i][‘pdf_pages’] = 'pma__pdf_pages';
$cfg[‘Servers’][$i][‘column_info’] = 'pma__column_info';
$cfg[‘Servers’][$i][‘history’] = 'pma__history';
$cfg[‘Servers’][$i][‘table_uiprefs’] = 'pma__table_uiprefs';
$cfg[‘Servers’][$i][‘tracking’] = 'pma__tracking';
$cfg[‘Servers’][$i][‘userconfig’] = 'pma__userconfig';
$cfg[‘Servers’][$i][‘recent’] = 'pma__recent';
$cfg[‘Servers’][$i][‘favorite’] = 'pma__favorite';
$cfg[‘Servers’][$i][‘users’] = 'pma__users';
$cfg[‘Servers’][$i][‘designer_settings’] = 'pma__designer_settings';
$cfg[‘Servers’][$i][‘usergroups’] = 'pma__usergroups';
$cfg[‘Servers’][$i][‘export_templates’] = 'pma__export_templates';
$cfg[‘Servers’][$i][‘navigationhiding’] = 'pma__navigationhiding';
$cfg[‘Servers’][$i][‘savedsearches’] = 'pma__savedsearches';
$cfg[‘Servers’][$i][‘central_columns’] = 'pma__central_columns';

帳號密碼 都在 /etc/phpmyadmin/config-db.php
phpmyadmin 建議版本是 phpMyAdmin-4.5.4.1-all-languages  
注意 要回 mysql 開 phpmyadmin  帳號   

[接下來要安裝多個 php 版本]
apt-get update
apt-get install python-software-properties
LC_ALL=C.UTF-8 add-apt-repository ppa:ondrej/php
apt-get update

[如果你想用不同的 內建 PHP 版本 而非 FPM]
請用 a2enmod php7.0 這指令切換

所有版本都比照7.2 來安裝
apt-get install php7.2 php7.2-common  php7.2-fpm php-pear php7.2-curl php7.2-dev php7.2-gd php7.2-mbstring php7.2-zip php7.2-mysql php7.2-xml
php7.2-bcmath php7.2-cli php7.2-cli  php7.2-gd  php7.2-ldap php7.2-soap php7.2-tidy php7.2-memcached php7.2-ssh2 php7.2-sockets

a2enmod proxy_fcgi setenvif a2enconf php7.2-fpm
a2enconf php7.2-fpm

[注意多重php 就要安裝下面的套件]
apt-get install php7.0-dev
apt-get install php7.2-dev
apt-get install php5.6-dev

[多重php下啟用模組]
phpenmod -v 7.2 sqlsrv

如何知道 PHP 的所有模組
–> php -m  
–>php -m | grep -i ftp
–>dpkg –get-selections | grep -i php
查出目前版本 ext 的目錄
php -i | grep extension_dir

[安裝 memcached 需要額外的東西]

注意 php的 extension 要職接下來 apt-get install 來安裝
但是 Linux 內部的執行檔 可以手動編譯

apt-get install libevent-dev

apt-get install zlib1g-dev

[注意安裝路徑 這個要記下來]
libevent-2.1.11-stable.tar.gz
./configure –prefix=/opt/libevent
make & make install

memcached-1.5.19.gz.tar
./configure –prefix=/opt/memcached –with-libevent=/opt/libevent
make & make install

啟動
adduser memcache

./memcached -p 11211 -m 64m -d -u memcache

echo "stats settings" | nc localhost 11211

ps aux | grep memcached

wkhtmltopdf 0.12.4 – Ubuntu 16.04 x64
$ sudo apt-get install libxrender1
wget https://github.com/wkhtmltopdf/w … eneric-amd64.tar.xz
$ tar -xvf wkhtmltox-0.12.4_linux-generic-amd64.tar.xz
$ cd wkhtmltox/bin/
$ sudo mv wkhtmltopdf /usr/bin/wkhtmltopdf
$ sudo mv wkhtmltoimage /usr/bin/wkhtmltoimage
$ sudo chmod a+x /usr/bin/wkhtmltopdf
$ sudo chmod a+x /usr/bin/wkhtmltoimage

wkhtmltopdf 1.要先去 c:\windows\system\fonts\ 系統複製    simsun.ttc  
2. 建立 /usr/share/fonts/simsun 資料夾 複製  simsun.ttc 過來
3. 微軟正黑體  建立 /usr/share/fonts/simsun 資料夾  然後把 msjh.ttc 放進去  就可以使用正黑體

接下來安裝  php 的外掛程式

[scp 安裝]
apt-get install openssh-client

[安裝 MSSQL 驅動]

apt-get install unixodbc-dev

wget https://pecl.php.net/get/sqlsrv-5.6.1.tgz # pdo_sqlsrv 依賴 sqlsrv

tar xvzf sqlsrv-5.6.1.tgz

cd sqlsrv-5.6.1/

phpize

./configure –with-php-config=/usr/bin/php-config

make & make install

[composer 安裝]
curl -s https://getcomposer.org/installer | php
mv composer.phar /usr/local/bin/composer

[安裝redis]
apt-get install build-essential tcl
來這抓
http://download.redis.io/releases/

進去目錄後 make & make install
cp /tmp/redis-stable/redis.conf /etc/redis
nano /etc/redis/redis.conf

本來是 supervised no –> supervised systemd

本來是 dir ./ –> /home/redisdb

建立服務檔案
nano /etc/systemd/system/redis.service
[Unit]
Description=Redis In-Memory Data Store
After=network.target

[Unit]
Description=Redis In-Memory Data Store
After=network.target

[Service]
User=redis
Group=redis
ExecStart=/usr/local/bin/redis-server /etc/redis/redis.conf
ExecStop=/usr/local/bin/redis-cli shutdown
Restart=always

[Install]
WantedBy=multi-user.target
存檔

新增群組和user
adduser –system –group –no-create-home redis
chown redis:redis /home/redisdb

systemctl start redis
systemctl status redis

設定為開機啟動
systemctl enable redis

[Vestacp 進階設定]
https://vestacp.com/docs/

網站套用樣板
/usr/local/vesta/data/templates/web

控制台網頁
/usr/local/vesta/web
/usr/local/vesta/web/templates/admin

[NG安裝]
之後把nginx 移除 安裝穩定版本[完全移除nginx]
sudo apt-get remove nginx nginx-common
sudo apt-get purge nginx nginx-common
sudo apt-get autoremove

然後 新增 PPA 程式庫注意 nginx 可能會給你裝下去 這時候 你要用 穩定版本[Nginx 外掛]
add-apt-repository ppa:nginx/stableapt-get update
apt-get install nginx nginx-extras

[在 Ubuntu 16.04 上安裝 mssql-tools ]
遵循下列步驟,在 Ubuntu 上安裝 mssql-tools。
匯入公開存放庫 GPG 金鑰。
bash

複製
curl https://packages.microsoft.com/keys/microsoft.asc | sudo apt-key add –
註冊 Microsoft Ubuntu 存放庫。
bash

複製
curl https://packages.microsoft.com/config/ubuntu/16.04/prod.list | sudo tee /etc/apt/sources.list.d/msprod.list
更新來源清單,並使用 unixODBC 開發人員套件執行安裝命令。
bash

複製
sudo apt-get update
sudo apt-get install mssql-tools unixodbc-dev
注意

若要更新為最新版本的 mssql-tools,請執行下列命令:
bash

複製
sudo apt-get update
sudo apt-get install mssql-tools
選擇性:在 Bash Shell 中將 /opt/mssql-tools/bin/ 新增至您的 PATH 環境變數。
若要讓登入工作階段的 Bash Shell 可存取 sqlcmd/bcp,請使用下列命令修改您在 ~/.bash_profile 檔案中的 PATH:
bash

複製
echo 'export PATH="$PATH:/opt/mssql-tools/bin"' >> ~/.bash_profile
若要讓互動式/非登入工作階段的 Bash Shell 可存取 sqlcmd/bcp,請使用下列命令修改 ~/.bashrc 檔案中的 PATH:
bash

複製
echo 'export PATH="$PATH:/opt/mssql-tools/bin"' >> ~/.bashrc
source ~/.bashrc

[mangodb 4.X 安裝]
看官方網站即可

service mongod start
service mongod stop

[python3安裝]
sudo update-alternatives –install /usr/bin/python3 python3 /usr/bin/python3.5 1
sudo update-alternatives –install /usr/bin/python3 python3 /usr/bin/python3.6 2
sudo update-alternatives –config python3
最後確認一下 python3 -V

[掛載NAS磁碟機]
mount -t cifs  -o username="backuper",password="2gaujrgr" //192.168.1.11/backuper/server15 /nas_backup

[python 結合 vestacp]

apt-get install libapache2-mod-wsgi-py3

注意在 god.net.apache2.conf  網站的設定檔裡面  socket-user=admin 可能跑不起來 因為 WSGISocketPrefix 沒有設定