Posts

Showing posts with the label Linux

CentOS7: How to install Mono in the apache2

CentOS7 上面要支援 ASP / ASP.NET 有兩種方式 一種是本篇文章要介紹的 Mono 另外一種是 Microsoft 自己開發的 DotNET Core 兩種都有跨平台支援 網路上的教學安裝了太多的套件 我只想跑 ASP 而已 僅列出我需要的環境教學 我的環境是: CentOS 7.5.1804 x86_64 Apache 2.4 安裝步驟 1. 匯入 Repo $ rpm --import "https://keyserver.ubuntu.com/pks/lookup?op=get&search=0x3FA7E0328081BFF6A14DA29AA6A19B38D3D831EF" $ su -c 'curl https://download.mono-project.com/repo/centos7-stable.repo | tee /etc/yum.repos.d/mono-centos7-stable.repo' 2. 安裝 mono 套件 $ yum install mod_mono 3. 修改 mod_mono.conf $ vi /etc/httpd/conf.d/mod_mono.conf 將這段加到最下面 MonoServerPath /usr/bin/mod-mono-server4 如果要跑 asp 請加入這行 AddType application/x-asp-net .asp 如果要讓 index.asp 變為預設首頁請加入這行 DirectoryIndex index.asp 4. 重開 apache $ systemctl restart httpd

CentOS7 上安裝 SQL Server

Image
原來 Microsoft 早在 2016 年就讓 SQL Server 搬上了 Linux 了! 這真是個可喜可賀的好消息啊! 加入來源 $ sudo curl -o /etc/yum.repos.d/mssql-server.repo https://packages.microsoft.com/config/rhel/7/mssql-server-2017.repo 安裝 SQL Server $ sudo yum install -y mssql-server 設定 SQL Server 的版本及密碼 $ sudo /opt/mssql/bin/mssql-conf setup  選擇版本的時候會出現下面選項,如果用量不大的話可選擇免費的 Express  設定防火牆 $ firewall-cmd --permanent --zone=public --add-rich-rule='rule family="ipv4" source address="你的ip" port protocol="tcp" port="1433" accept' $ firewall-cmd --reload 參考來源: https://docs.microsoft.com/zh-tw/sql/linux/quickstart-install-connect-red-hat How to open port for a specific IP address with firewall-cmd on CentOS? [duplicate]

Linux 下如何安裝 drush

Image
這篇主要是針對 Druapl8 安裝 drush 做講解 安裝 drush # composer global require drush/drush 如果遇到 git 找不到的話 Failed to clone https://git.drupal.org/project/coder.git, git was not found, check that it is installed     and in your PATH env. 請先安裝 git # apt-get install git 編輯環境變數 把 drupal 下面的 drush 路徑加到 PATH 去 # vi ~/.bashrc (for debian) # vi  ~/.bash_profile (for CentOS) 把紅色這段加進去,請用小寫冒號 : 分隔 PATH="/opt/lampp/bin:$PATH: /opt/lampp/htdocs/course/vendor/bin " 然後執行下面指令重新載入環境變數 # source ~/.bashrc (for debian) # source ~/.bash_profile (for CentOS) 然後 echo 看看 $PATH 是否有出現剛加入的路徑 # echo $PATH 以上的路徑可能會隨著不同 linux 有些不同 現在就可以執行 drush 囉! # drush help Reference How do I reload .bashrc without logging out and back in?

Warning: proc_open(): fork failed - Cannot allocate memory in phar:///usr/local/bin/composer/vendor/symfony/console/Application.php on line 979

最近使用  xampp-vm 來架設測試環境 有在裡面安裝了 Drupal8 想要來測試 webform 由於太久沒使用 Druapl 想要更新套件他一直要我使用 ftp 的方式 上網查 Drupal 除了支援很久的 drush 以外也支援 composer 之前安裝 Lumen 的時候也是使用 composer 安裝的 不用去設定一些環境變數非常的方便 所以這次也使用 composer 來安裝 drush # composer require drush/drush 安裝過程中出現了以下錯誤 Warning: proc_open(): fork failed - Cannot allocate memory in phar:///usr/local/bin/composer/vendor/symfony/console/Application.php on line 979 這是因為 php 最大可使用的 memory 不夠 到 /etc/php.ini 修改 # memory_limit=256M 內建是 128M 改成 256M 重開 apache 就好囉! drush 的使用可參考這邊文章 如何在Drupal8的環境下,安全的更新core與module?

vsftpd: 500 OOPS: cannot change directory

在網路上找到的資料大多都是 selinux 權限的問題 由於我 selinux 早就關掉 也都確認目錄權限 甚至都改 777 了 都還是一樣出現這個問題 情況是這樣的 我有一個 aaa 的帳號 我把他的 home directory 設定到 /var/www/html/aaa 下 但我把其中一個資料夾搬到 /home/aaa 下 搬了之後就發生 500 OOPS: cannot change directory /home/aaa/upload 也都確認 upload 的 group 是 aaa 沒錯 這邊的 owner 我設定成 apache 後來我把 /home/aaa 改成 755 就可以了 chmod -R 755 /home/aaa

如何用 SSH 的方式 Mount Linux 資料夾

如果主機沒開放 Samba 但又想要 mount 該台主機的資料夾 就可以考慮用 SSHFS 掛載的方式 簡單的說,可以用 SSH 連線來掛載遠端的資料夾 如果是用 CentOS 可以用 yum install sshfc 的方式下載這個套件 掛載方式如下 # sshfs USER@IP:/home/dir /mnt/local_dir 上面方式適用一次性的掛載 如果要開機就掛載 可以把下面這段寫到 /etc/rc.local 中 # echo PASSWORD | sshfs USER@IP:/home/dir /mnt/local_dir -o workaround=rename -o password_stdin [2015-05-25 Updated] 如果想要讓該資料夾可以被 root 以外的使用者存取 可加入  -o allow_other 參數 # echo PASSWORD | sshfs   -o allow_other USER@IP:/home/dir /mnt/local_dir -o workaround=rename -o password_stdin 參考資料 Automating sshfs command sshfs mount, sudo gets permission denied

如何找到之前 compile 的指令

因為手殘的關係 不小心把之前紀錄 compile 指令的檔案砍了 想說原本的 compile 的 source 裡面應該有當時下的 compile 參數 果不其然! 在 source 的 config.nice 裡面 #! /bin/sh # # Created by configure './configure' \ '--prefix=/usr/local/php5' \ '--with-apxs2=/usr/local/apache2/bin/apxs' \ '--with-mysql=/usr/local/mysql' \ '--with-mysqli=/usr/local/mysql/bin/mysql_config' \ '--with-config-file-path=/usr/local/php5' \ '--enable-mbstring' \ '--enable-ftp' \ '--with-zlib' \ '--with-regex=php' \ '--with-xmlrpc' \ '--with-gd' \ '--enable-gd-native-ttf' \ '--enable-exif' \ '--with-jpeg-dir=/usr/lib' \ '--with-png-dir=/usr/lib' \ '--with-freetype-dir=/usr/lib' \ '--with-xpm-dir=/usr/lib' \ '--with-gettext' \ '--enable-soap' \ '--with-pdo-mysql=/usr/local/mysql' \ '--with-mhash' \ '--with-mcrypt' \ '--with-openssl' \ '--with-curl' \ '--enabl...

Apache run multiple SSL Virtual Host

基本上要 run single SSL site 在 Apache 上還蠻容易的 但再加上了一個 SSL site 問題就來了 不就在 SSL zone (httpd-ssl.conf)那邊加上另外一個 Virtual Host 就好了嗎? SSL 的 Virtual Host 從 Name Based 換到 IP Based 再加上額外的 Private IP 也是不行 後來用瀏覽器連 Private IP 的 SSL 卻是正常的 才想到說應該把那 Private IP 也 mapping 到另外一個 Public IP 由於我們公司主機在防火牆下 所以除了更改 DNS 外,還有修改一下防火牆的規則 舉個實際例子說明: Public IP 200.200.200.1 (80 & 443) 原本對應到 Private IP 10.1.1.1 後來加入了一個 10.1.1.2 的 Private IP 但連 https://b.test.com 他顯示的認證還是 b.test.com 的 如果只有一個 Public IP 那就只能指定其他的 port(如 https://200.200.200.1:4433) 了 80 跟 443 以外的 port 一般人都蠻難接受的(要公開的話很不方便,自用就還好) 所以還是多個 IP 好辦事阿~ 提供 Apache 的相關設定供參考 這邊僅提供 SSL Virtual Host 的部份 我並沒有去設別設定 Port 80 (httpd-vhost.conf)那邊 Port 80 (httpd-vhost.conf)那邊還是維持 Name Based 的方式 Listen 10.1.1.1:443 Listen 10.1.1.2:443 NameVirtualHost 10.1.1.1:443 NameVirtualHost 10.1.1.2:443   DocumentRoot "/home/www/a.test.com"   ServerName a.test.com:443   ServerAdmin service@test.com   ErrorLog "/usr/local/apache2/logs/error...

升級 mysql 5.1 to 5.5 後遇到的問題

Image
從原本的 mysql 5.1.56 升級到 mariadb 5.5.28a 除了匯出時有個 db 的 views 有問題以外,其他都一切正常 轉換到新的資料庫後重新編譯 php, 重開 apache 後就可正常連線了 不過 function 的部份似乎出了點問題 原本想要開啟 navicat 將 function 重匯 不過卻出現下面的錯誤 1548 - Cannot load from mysql.proc. The Table is probably corrupted 上網查了一下解決方式蠻簡單的 只要下指令修復即可 /usr/local/mysql/bin/mysql_upgrade -u root -p 升級過程: dump all databases /usr/local/mysql/bin/mysqldump -u root -p --all-databases > /home/all.sql backup user privileges shutdown mysql, change my.ini settings start mysql restore all databases /usr/local/mysql/bin/mysql -u root -p --socket=/tmp/mysql.sock < /home/all.sql restore user privileges stop apache recompile php start apache 環境: CentOS x86_64 5.8 Apache 2.2.22 / PHP 5.3.19 Reference: Fix: Cannot load from mysql.proc. The table is probably corrupted

libmemcache 1.0.11 & 1.0.12 have problem !

我在 CentOS 5.8 x86_64 上面將 php 5.2 升級到 5.3 去 先升級 memcache 到 1.4.15, libmemcached 到 1.0.12(原本是 0.x) 到 php 5.3 要用 pecl 安裝 memcached 會出現下面問題 # /usr/local/php5/bin/pecl install memcached WARNING: channel "pecl.php.net" has updated its protocols, use "pecl channel-update pecl.php.net" to update downloading memcached-2.1.0.tgz ... Starting to download memcached-2.1.0.tgz (39,095 bytes) ..........done: 39,095 bytes 11 source files, building WARNING: php_bin /usr/local/php5/bin/php appears to have a suffix 5/bin/php, but config variable php_suffix does not match running: phpize Configuring for: PHP Api Version:         20090626 Zend Module Api No:      20090626 Zend Extension Api No:   220090626 building in /tmp/pear/temp/pear-build-rootSXEpVq/memcached-2.1.0 running: /tmp/pear/temp/memcached/configure checking for egrep... grep -E checking for a sed that does not truncate output... /bin/sed checking for C compiler default output file name... a.out ...

安裝 memcached

如何在 CentOS 5.5 Zend Server 5.0.3 下安裝 memcached 由於 Zend Server 也是用 apache 所以設定上大致相同 php pecl 同時有 memcache 跟 memcache d 兩個套件 建議安裝 memcache d 這個後續還有在維護的套件 1. 安裝所需套件 libevent-devel yum install libevent-devel 2. 下載 libmemcached http://download.tangent.org/libmemcached-0.44.tar.gz ./configure make && make install 3. 啟動 memcached /usr/local/bin/memcached -d -u root -m 512 -p 11211 4. 安裝 pecl memcached /usr/local/zend/bin/pecl install memcached 然後在 php.ini 加入設定 extension = memcached.so ;extension = /usr/local/zend/lib/php_extensions/memcached.so(請不要設定直接路徑,會抓不到,請以上面設定為主) 5. 重開後看看 phpinfo 裡面是否有 memcached

安裝 AIR @ CentOS

在 CentOS 上安裝 AIR runtime 發生了以下的錯誤訊息 [root@dev www]# rpm -ivh adobeair.i386.rpm warning: adobeair.i386.rpm: Header V3 DSA signature: NOKEY, key ID f6777c67 error: Failed dependencies: /usr/lib/libxslt.so.1 is needed by adobeair-2.0.3-13070.i386 安裝 libxslt 就好了 yum install libxslt-devel

Memcached 啟動失敗

/usr/local/bin/memcached -d -u nobody -m 512 -p 11211 127.0.0.1 執行上面指令要啟動 memcached 時,出現了以下錯誤 /usr/local/bin/memcached: error while loading shared libraries: libevent-1.1a.so.1: cannot open shared object file: No such file or directory 查了一下現在系統中的 libevent 是 1.4 的版本 跟錯誤訊息中 1.1 差距有點大 最近有執行 yum update 沒去注意到更新了哪些程式 猜想應該是更新後才造成路徑的問題 所幸就重裝 memcached 吧! 先把原本的移除 cd /usr/local/src/memcached-1.4.5 make install clean 然後再安裝 ./configure make; make install 然後就可以正常啟動囉~ 參考資料: Install memcached on CentOS 5

PHP4 上安裝 freetds

Image
FreeTDS 是用來在 Unix-like 下連結 SQL SERVER 用的 先安裝 unixODBC-devel 套件 # yum install unixODBC-devel 再來編譯 FreeTDS # ./configure --prefix=/usr/local/freetds --with-tdsver=8.0 --with-unixodbc=/usr touch 這兩個檔案讓 php compile 過 # touch /usr/local/freetds/include/tds.h # touch /usr/local/freetds/lib/libtds.a 加入以下參數重新編譯 --with-unixODBC \ --with-mssql=/usr/local/freetds \ 編譯完重新啟動 apache 即可 可檢查 phpinfo() 中是否有 mssql 支援 為什麼要 tocuh 咧 可參考這邊 http://www.freetds.org/news.html 另外再補充一下 php 連結 SQL SERVER 如果遇到亂碼的話 請在 freetds.conf 設定(2010-07-27 修正) [ Somewhere ] host = 111.222.121.212 port = 1433 client charset = UTF-8 tds version = 8.0 如果 MySQL 亂碼請用 set names 'utf-8' 囉~

CentOS 在 single mode 中修改 fstab

之前裝機器分割硬碟磁區的時候 不小心把 swap 的 /tmp 打成 /tmpp 原本想說 /tmp 裡面都是暫存檔 應該直接去改 /etc/fstab 就好 結果又是一次教訓阿… 後來當然是再起不能 由於 /tmp 無法正常掛載 所以系統就自動進去 single mode 但進去修改 /etc/fstab 他會顯示檔案是 readonly 無法編輯 這時 remount 就可以解決 readonly 問題啦! mount -o remount,rw / 適用版本為 CentOS 5.3 final 參考資料: 【Linux】忘記 Root 密碼的解決方法 @ 有為青年生活札記 酷!學園

把 Linux 上的 x-windows 關掉

一開始灌機器的時候可能會沒有注意就把桌面(x-windows)裝進去 隨著往後 Server 的資源不夠時 這時候你或許會想到要關掉桌面 以節省 CPU & Memory 資源 直接去編輯 /etc/inittab 把下面這行 id: 5 :initdefault: 5 改成 3 重開(restart -n)即可! ㄧ以下是各參數的意義: # Default runlevel. The runlevels used by RHS are: #   0 - halt (Do NOT set initdefault to this) #   1 - Single user mode #   2 - Multiuser, without NFS (The same as 3, if you do not have networking) #   3 - Full multiuser mode #   4 - unused #   5 - X11 #   6 - reboot (Do NOT set initdefault to this) 此方法在 Fedora 8 & RHEL 4 & CentOS 5.2 下可正常設定!

SSH 自動登出

最近裝了 CentOS 5 版後 SSH 閒置一段時間後常常會自動被登出 把下面的設定值加入 /etc/ssh/sshd_config ClientAliveInterval 300 然後重開 ssh 就不會被那擾人的自動登出困擾著了~ # /etc/init.d/sshd restart Reference : 5.4 SSH Timeout help

如何繼續 SVN commit && 刪除特定目錄下的檔案

Image
由於之前使用的 SVN Server 被我搞掛了 在費盡千辛萬苦後… 終於在另外一台機器上建立起相同的環境 而 SVN 跟 Trac 也都恢復原先的資料庫 以後再來分享這一段~ 前幾天試過 SVN checkout 沒問題 昨天挫到…以為將尚未 SVN commit 的檔案搞丟了 還好我並沒有真的這麼做 -.- 今天一起到公司就趕緊把這段時間的檔案 commit 上 SVN 不過遇到了些問題 由於之前的 SVN Server 的 IP 跟現在備用 SVN Server IP 不同 所以如果將 SVN checkout 後的檔案 用之前開發但尚未 SVN commit 的檔案蓋過 會發生這樣的錯誤訊息: Error: Unrecognized URL scheme for '' 後來嘗試單一檔案 SVN commit 後才發現 原先的 SVN Server IP 跟現在的 SVN Server IP 不同 SVN 在識別檔案是否變更過的資訊都在紀錄在該層的 .svn 資料夾 (注意:該 .svn 資料夾為隱藏檔案) 所以需將要覆蓋的資料夾中的所有 .svn 資料夾刪除 要顯示隱藏檔案請到 Tools 的 Folder Options 中設定 如果你想在 Unix-Like 下刪除 .svn 副檔名的所有檔案 find /home/www/public_html -name "*.svn" | xargs rm -rf 後面加上 -rf 才能刪除資料夾喔! PS. 使用此指令前請先備份 參考來源: 樂咖黑電腦學習網 SEO Google Apps :: 刪除特定目錄下的特定檔案

限制 MySQL 僅接受 localhost 連接

在預設的情況下, MySQL 允許外面的連線 這邊指的不是 MySQL 本身帳號權限的 Host 設定 而是限定本身 MySQL 的連線能力 可用以下指令查出 MySQL 預設 port 3306 的連線: # netstat -an | grep 3306 tcp4 0 0 *.3306 *.* LISTEN 如果要設定 MySQL 本身僅接受 localhost 連線,則開啟 /etc/rc.conf: mysql_enable ="YES" mysql_args ="--bind-address=127.0.0.1" 然後在重新啟動 MySQL 即可: # /usr/local/etc/rc.d/mysql-server.sh restart 再執行第一個指令檢查設定是否成功: # netstat -an | grep 3306 tcp4 0 0 127.0.0.1.3306 *.* LISTEN 這邊順邊提供設定 FULL-TEXT (全文搜尋)預設值 4 的更改方式 (字元 4 以下則不搜尋) MySQL 版本須大於 4.0 設定才有用 如果你想將他設定為 2 以下才不搜尋 [mysqld] ft_min_word_len =2 [myisamchk] ft_min_word_len =2 相對的有最小也有最大 最大的長度限制是依版本限制的(version-dependent) 以我用的 MySQL 5.0.45 community (Win32) 來說 ft_max_word_len 為 84 參考資料: 01 - 限制 MySQL 只接受 localhost 連線 02 - FNP:資料庫 - MySQL server set-up 03 - 8.4.1. myisamchk General Options 2008-07-07 補充: 感謝小欣的測試,mysql_args 裡面少加一個參數 原來是 mysql_args ="-bind-address=127.0.0.1" 應該是 mysql_a...