2019年9月2日 星期一

centos7 openSSL 教學

網路中文文章:  https://wiki.net-chinese.com.tw/sites/wiki.net-chinese.taipei/files/public_files/application/SSL%E6%86%91%E8%AD%89%E7%B0%A1%E6%98%93%E6%95%99%E5%AD%B8(Linux%20Apache).pdf


1.安裝openssl
sudo yum -y install perl perl-devel gcc gcc-c++ openssl version 

2.產出key 打入密碼,操作完畢後即產生 PEM 格式的「私鑰」檔案,檔名為 server.key,請保存好這份檔案

 openssl genrsa -des3 -out server.key 2048

 3.產生 CSR 文件(Certificate Signing Request)

openssl req -new -key server.key -out certreq.txt

 產生填入資料參考網路中文範例 https://wiki.net-chinese.com.tw/sites/wiki.net-chinese.taipei/files/public_files/application/SSL%E6%86%91%E8%AD%89%E7%B0%A1%E6%98%93%E6%95%99%E5%AD%B8(Linux%20Apache).pdf


 4.Apache 安裝ssl憑證模組
yum -y install httpd mod_ssl

sudo systemctl enable httpd.service

systemctl start httpd.service 


5.拿到的SSL憑證放在 centos7的目錄下

mkdir -p /etc/ssl/private
chmod 777 /etc/ssl/private 


6.設定 sudo vi /etc/httpd/conf.d/ssl.conf

 <VirtualHost *:443>
 DocumentRoot /var/www/html
 ServerName www.example.com
 SSLEngine on
SSLCertificateFile /etc/ssl/private/certificate.crt
SSLCertificateKeyFile /etc/ssl/private/server.key
 </VirtualHost> 

調整文件名以匹配您的證書文件: SSLCertificateFile應該是您的證書文件(例如your_domain_name.crt) SSLCertificateKeyFile應該是您在創建CSR時生成的密鑰文件。

7.重啟伺服器

 systemctl restart httpd.service
 (重啟會可能會因為沒有輸入RSA密碼導致無法開啟網頁)

 systemctl status httpd.service


8.因為SSL 導致每次重啟httpd都要輸入密碼 ,使用自動輸入密碼功能
 (重啟會可能會因為沒有輸入RSA密碼導致無法開啟網頁)

vim /etc/httpd/conf.d/ssl.conf

把原來的

SSLPassPhraseDialog exec:/usr/libexec/httpd-ssl-pass-dialog

改成

SSLPassPhraseDialog exec:/usr/libexec/autosslkey.sh

然後下指令
vim /usr/libexec/autosslkey.sh

autosslkey.sh只要這様寫
#!/bin/bash
echo 'your pass phrase'

接著權限允許

chmod 777 autosslkey.sh


參考連結2

參考連結3




2019年8月30日 星期五

apache mod rewrite .htaccess

IT邦的說明:https://ithelp.ithome.com.tw/questions/10190295
modRewire說明:https://blog.hinablue.me/apache-note-about-some-rewrite-note-2011-05/
alias 說明:http://phorum.study-area.org/index.php?topic=21235.0

同一個IP不同目錄專案顯示改寫:

apache  centos 7

1.cmd 下開啟編輯設定檔案
sudo vi /etc/httpd/conf/httpd.conf

2.編輯檔案
Alias /shop55 "/var/www/html/shop55/public"

AllowOverride all
RewriteEngine On
#不顯示目錄結構
Options FollowSymLinks

Alias /white55 "/var/www/html/white55/public"

AllowOverride all
RewriteEngine On
#不顯示目錄結構
Options FollowSymLinks



3.在對應的laravel public資料夾底下設定 .htaccess


第一個 ..htaccess


Options -MultiViews

RewriteEngine On
# Redirect Trailing Slashes If Not A Folder...
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)/$ /$1 [L,R=301]
# Handle Front Controller...
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^ index.php [L]
# Handle Authorization Header
RewriteCond %{HTTP:Authorization} .
RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]
RewriteBase /shop55


第二個 .htaccess


Options -MultiViews

RewriteEngine On
# Redirect Trailing Slashes If Not A Folder...
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)/$ /$1 [L,R=301]
# Handle Front Controller...
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^ index.php [L]
# Handle Authorization Header
RewriteCond %{HTTP:Authorization} .
RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]
RewriteBase /white55



重新啟動:
sudo systemctl restart httpd.service


另外一種設定方法

1.cmd 下開啟編輯設定檔案
sudo vi /etc/httpd/conf/httpd.conf

<VirtualHost *:80> DocumentRoot /var/www/html/white55/public ServerName white55.xxxxx.tw</VirtualHost><VirtualHost *:80> DocumentRoot /var/www/html/shop55/public ServerName shop55.xxxxx.tw</VirtualHost>


然後在DNS代管設定,填入A 紀錄  主機名稱別名:shop55   IP:對應IP,等待生效。

就可以使用

shop55.xxxxxx.tw
white55.xxxxx.tw

進入。

2019年8月26日 星期一

Laravel log / storage could not be opened: failed to open stream

參考:https://sjkou.net/2016/07/30/how-to-install-laravel5-on-centos7/

除了資料夾權限是設定成 chmod 777 的指令之外:

chmod -R 777 storage

導致此問題發生的原因還有  SELinux


SELinux導致

觀察主機目前是否有啟動 selinux (CentOS 預設是有啟動 selinux)
getenforce 


暫時性的關掉或開啟 selinux
setenforce 0

開啟
setenforce 1

以下步驟請都做:

(一)
因為有使用 selinux 而你新增了一些檔案或目錄到「網頁目錄 /var/www/html」,明明檔案就存在,卻無法正常從瀏覽器觀看,這不是 file permission chmod 的問題,是 selinux 檔案 http 存取權限的問題,你只需要用 使用SELinux允許使用此命令寫入文件

在對應資料夾下使用此指令
sudo chcon -R -t httpd_sys_rw_content_t 我的專案名稱/storage



(二)
對網站加入 apache 所有權,在 Laravel 網站的根目錄下執行:
sudo chown -R apache:apache *  
<-FTP上傳檔案可能會有使用者權限問題  
(三)
CentOS 對內部檔案的權限管理非常嚴謹,當其他使用者在看網頁時,CentOS 內其實是有一名叫做 apache 的使用者在瀏覽您的網頁目錄,雖然如此但 apache 也不是什麼檔案都能看,僅能觀看httpd 相關權限的檔案而已,在還沒修改網站權限時你可以透過 ls -Z 來取得目前的權限。
但是 httpd_sys_content_t 僅是瀏覽的權限而已,依據 laravel 的安裝說明bootstrap/cache 及 storage 這兩個資料夾必須要有寫入的權限,所以需再做以下修改:

sudo chcon -Rv -t httpd_sys_rw_content_t 網站/storage 
sudo chcon -Rv -t httpd_sys_rw_content_t 網站/bootstrap/cache 
sudo chmod -R 777 網站/storage 
sudo chmod -R 777 網站/bootstrap/cache


2019年8月23日 星期五

gcp centos7 laravel

說明:https://www.brilliantcode.net/170/centos-7-install-apache-httpd/


第一次設定root帳號需要打入密碼

sudo passwd root

安裝 EPEL

rpm -Uvh https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm

rpm -Uvh https://mirror.webtatic.com/yum/el7/webtatic-release.rpm

1.安裝Apache and http模組

sudo yum install httpd mod_ssl openssl

啟動Apache,並且設定為開機自動啟動

sudo systemctl start httpd
sudo systemctl enable httpd


確認Apache執行權限
sudo vim /etc/httpd/conf/httpd.conf

更改
User apache
Group apache
(因為會有FTP檔案上傳問題,可以改成自己的user )

設定或修改Apache目錄

sudo vim /etc/httpd/conf/httpd.conf

顯示:
DocumentRoot "/var/www/html"



讓Apache可以支援.htaccess,請加入AllowOverride All


<directory "/var/www/html">
    AllowOverride All
</Directory>


存檔離開
:wq

重啟APACHE
sudo systemctl start httpd

Selinux 安全性說明
https://www.brilliantcode.net/145/centos-7-check-selinux-status-enabled-or-not/

暫時停止SELinux
sudo setenforce 0

暫時啟動SELinux
sudo setenforce 1

sudo vim /etc/selinux/config

永久停止SELinux:將第6行改為SELINUX=disable
永久啟用SELinux:將第6行改為SELINUX=enable

開啟防火牆,讓 web (port:80, 443) 流量可以穿過 firewall

sudo firewall-cmd --permanent --zone=public --add-service=http
sudo firewall-cmd --permanent --zone=public --add-service=https
sudo firewall-cmd --reload

重啟Apache服務
sudo systemctl restart httpd.service

2. install mysqld

sudo yum -y install mariadb-server

安全性服務+設定密碼
mysql_secure_installation

3.PHP 安裝 7.2

yum -y install mod_php72w php72w-cli php72w-common php72w-gd php72w-imap php72w-ldap php72w-mbstring php72w-mysql php72w-pdo php72w-pear php72w-xml php72w-xmlrpc

重啟
systemctl restart httpd.service

4.安裝 Composer

複製安裝文件 PHP 檔案
執行安裝 composer

php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');"

 php composer-setup.php

完成以後,我們要放到全域環境,這樣才能讓任何專案無須從新安裝 composer。記得 Composer 限制不可在最高權限 root 中執行。

mv composer.phar /usr/local/bin/composer

5.安裝 phpMyAdmin

.用 composer 下載 (建議,因為版本最新,解決許多問題)

chmod 777 /var/www/html  <-- 提供寫入權限給 composer 建立路徑

cd /var/www/html
composer create-project phpmyadmin/phpmyadmin

cp -i /var/www/html/phpmyadmin/config.sample.inc.php /var/www/html/phpmyadmin/config.inc.php

GCP登入方式

http://zxcvbnm2749.blogspot.com/2018/07/ssh-ftp-google-cloud.html

6.git安裝

sudo rpm -U https://centos7.iuscommunity.org/ius-release.rpm sudo yum install git2u
sudo yum install git2u

7.權限問題


在對應資料夾下使用此指令
chcon -R -t httpd_sys_rw_content_t 我的專案名稱/storage


CentOS 對內部檔案的權限管理非常嚴謹,當其他使用者在看網頁時,CentOS 內其實是有一名叫做 apache 的使用者在瀏覽您的網頁目錄,雖然如此但 apache 也不是什麼檔案都能看,僅能觀看httpd 相關權限的檔案而已,在還沒修改網站權限時你可以透過 ls -Z 來取得目前的權限。


但是 httpd_sys_content_t 僅是瀏覽的權限而已,依據 laravel 的安裝說明bootstrap/cache 及 storage 這兩個資料夾必須要有寫入的權限,所以需再做以下修改:




1
2
3
4
$ chcon -Rv -t httpd_sys_rw_content_t blog/storage
$ chcon -Rv -t httpd_sys_rw_content_t blog/bootstrap/cache
$ sudo chmod -R 777 blog/storage
$ sudo chmod -R 777 blog/bootstrap/cache


2019年3月11日 星期一

google cloud debian 安裝mariadb

參考文章:
https://www.howtoing.com/how-to-install-mariadb-on-debian-9
https://blog.gtwang.org/linux/mysql-create-database-add-user-table-tutorial/

1.sudo apt install mariadb-server

2.sudo mysql_secure_installation

3.GRANT ALL ON *.* TO 'admin'@'localhost' IDENTIFIED BY 'password' WITH GRANT OPTION;

4.mysql -u admin -p 

輸入密碼

# 新增資料庫

CREATE DATABASE `my_db`;


# 新增使用者,設定密碼

CREATE USER 'my_user'@'localhost' IDENTIFIED BY 'my_password';

# 設定使用者權限

GRANT ALL PRIVILEGES ON my_db.* TO 'my_user'@'localhost';



2018年8月29日 星期三

laravel voyager 教學

說明:https://github.com/the-control-group/voyager

中文化這邊有:https://laravel-china.org/topics/4720/i-also-translated-laravels-background-extension-voyager


1.首先安裝laravel 5.5

composer create-project laravel/laravel 5.5

composer update

2.安裝voyager

composer require tcg/voyager

3.設定env
APP_URL=http://localhost:8000
DB_DATABASE=xxxx
DB_USERNAME=xxxx
DB_PASSWORD=xxxx

4.執行voyager install migrate

php artisan voyager:install

PS:如果出現錯誤可以到config/databases 調整mysql

'mysql' => [
    'driver' => 'mysql',
    'host' => env('DB_HOST', '127.0.0.1'),
    'port' => env('DB_PORT', '3306'),
    'database' => env('DB_DATABASE', 'forge'),
    'username' => env('DB_USERNAME', 'forge'),
    'password' => env('DB_PASSWORD', ''),
    'unix_socket' => env('DB_SOCKET', ''),
    'charset' => 'utf8',
    'collation' => 'utf8_unicode_ci',
    'prefix' => '',
    'strict' => true,
    'engine' => null,
],


3.創建admin

php artisan voyager:admin your@email.com --create


5.網址打入 localhost:8000/admin 使用剛剛輸入的密碼登入


6.設定可以使用google analytics功能

說明:https://www.youtube.com/watch?v=Qw5HQiZIehg

在setting頁面->admin->

Google Analytics Client ID (used for admin dashboard) setting('admin.google_analytics_client_id')

填入https://console.developers.google.com/apis/dashboard
設定的 oauth 憑證的client_id。

設定完畢即可以在disable登入gmail帳號,並看到相關數據資料。




2018年8月19日 星期日

Vmware player架設centos & ftp


root/root 帳密

每次重啟都需要開啟網路服務:

service  network restart

or

systemctl status network

1.網路配置 https://blog.csdn.net/qq_33182045/article/details/55669031
2.cd /etc/sysconfig/network-scripts/ 看ifcfg-enpXXX 檔案
3.vi 此檔案
4.確定ONBOOT=yes
5.vi存檔方法ese按出後,打入wq存檔。
6.shutdown -r
7.切換su 輸入帳密
8.輸入指令安裝圖形介面
$sudo  yum groupinstall "GNOME Desktop" "Graphical Administration Tools"

9.startx 進入圖型介面


10.ctrl + alt +F1 進入圖形介面
11.ctrl+alt+F5

在VMware Player中,并不像VMware Station中提供网络编辑功能,因此如果想使用port forward功能,则需要进行手动配置。
例如在Windows操作系统中,找到vmware nat的配置文件:
C:\Documents and Settings\All Users\Application Data\VMware\vmnetnat.conf


---------------------------------------
12.安裝EPEL
yum -y install epel-release

13.安裝 VIM
yum -y install vim


14.安裝 LAMP (Linux + Apache + MySQL / MariaDB + PHP / Python / Perl)
sudo yum -y install httpd php-mysql mysql-server php70w php70w-mysql

yum -y install mysql

yum -y install mariadb-server

ls -a /usr/lib/systemd/system/mariadb.*



enable 會在作業系統啟動時,自動啟動服務
systemctl enable  mariadb

start, stop, restart 等參數操作服務,不會有訊息
systemctl start  mariadb

用 status 檢查服務狀態
systemctl status  mariadb

----------------------------------------------------------


15.開啟防火牆,讓 web (port:80, 443) 流量可以穿過 firewall
sudo firewall-cmd --permanent --zone=public --add-service=http
sudo firewall-cmd --permanent --zone=public --add-service=https
sudo firewall-cmd --reload

16.開啟防火牆,讓外部可以連接 MySQL (port:3306) 流量可以穿過 firewall
查看目前支援的 service
firewall-cmd --get-services
開啟 Mysql 3306
sudo firewall-cmd --permanent --zone=public --add-service=mysql


17.啟動 httpd 與 mysql
sudo systemctl start httpd
sudo systemctl enable httpd
sudo systemctl start mysqld
sudo systemctl enable mysqld

重啟
service httpd restart
systemctl start httpd.service

18.mysql指令
剛安裝好 MariaDB 時,建議執行一次 mysql_secure_installation 這個安全性設定工具:

sudo mysql_secure_installation

mysql -V 看版本

mysql -u root -p    第一次進來root 沒有密碼 不需要打


------------------------------------------
21.安裝PHP


安装第三方仓库
sudo yum install https://centos7.iuscommunity.org/ius-release.rpm
搜索新版 PHP

yum search php70u
安装新版 PHP
sudo yum install php70u-common php70u-fpm php70u-cli php70u-gd php70u-mysqlnd php70u-pdo php70u-mcrypt php70u-mbstring php70u-json php70u-opcache php70u-xml -y



如果apache打開不了php編譯,可以直接使用yum命令来安装apache的mod_php模块:

yum install mod_php70w

如果没有这个安装包,可以尝试着添加一下源:

rpm -Uvh https://mirror.webtatic.com/yum/el7/epel-release.rpm
rpm -Uvh https://mirror.webtatic.com/yum/el7/webtatic-release.rpm


提醒一下安裝完畢應該會有檔案在
/etc/httpd/conf.modules.d/10-php.conf


安裝php7 mbstring
yum install php70w-mbstring



-----------------------------------------------------------------------

19.安裝phpmyadmin  記得phpmyadmin原生不支持7  需要用composer安裝

https://jsnwork.kiiuo.com/archives/2118/centos-7-%E5%AE%89%E8%A3%9D-apachephp-7mysqlphpmyadminftpssh/



不得已才用yum
yum install phpmyadmin


19-1.看設定檔案
sudo vi /etc/httpd/conf.d/phpMyAdmin.conf

19-2.  錯誤 Apache Error: No matching DirectoryIndex (index.html) found [SOLVED]
vim /etc/httpd/conf/httpd.conf
Change:

<IfModule dir_module>
DirectoryIndex index.html
</IfModule>

to:

<IfModule dir_module>
DirectoryIndex index.html index.php
</IfModule>

Be sure to restart Apache:

systemctl restart httpd


如果安裝phpmyadmin出現錯誤
Error: php70u-json conflicts with php-common-5.4.16-45.el7.x8664
Error: php70u-common conflicts with php-common-5.4.16-45.el7.x86_64
使用指令
yum install --skip-broken php-soap

yum install phpMyAdmin php70u-{json,tidy,process,cli,bcmath}


錯誤LOG位置
/var/log/httpd/
-----------------------------------------------------------------------

20.Linux指令

20-1.圖型介面檔案download等資料夾在 root底下
cd /root

20-2.看ip
ip addr show


21.防火牆
21-1.看狀態
service firewalld status

21-2.關閉
service firewalld stop

★★ httpd 403 forbidden 錯誤
這個問題是因為有使用 selinux 而你新增了一些檔案或目錄到「網頁目錄 /var/www/html」,明明檔案就存在,卻無法正常從瀏覽器觀看,這不是 file permission chmod 的問題,是 selinux 檔案 http 存取權限的問題,你只需要用

sudo restorecon -R -v /var/www/html/new_folder

就OK了!


檢查 SELinux 的狀態

# getenforce

暫時關閉 SELinux
# setenforce 0

--------------------------------------------------------------------------------
FTP連入設定 
https://www.jianshu.com/p/72015bc37c74
http://www.netqna.com/2014/04/centos-64-vsftpd-ftp-server.html

步驟 1:安裝 FTP 服務器
1、 安裝 vsftpd 服務器很直接,只要在終端運行下面的命令。

yum install vsftpd
2、 安裝完成後,服務先是被禁用的,因此我們需要手動啟動,並設置在下次啟動時自動啟用:

systemctl start vsftpd
systemctl enable vsftpd
3、 接下來,為了允許從外部系統訪問 FTP 服務,我們需要打開 FTP 守護進程監聽的 21 端口:

firewall-cmd --permanent --add-port=21/tcp
firewall-cmd --permanent --add-service=ftp
firewall-cmd --reload


4.啟動vsftp服務
service vsftpd start
用FileZilla即可以正常連入


-停止 Firewalld

systemctl stop firewalld

-Check the Status of Firewalld

systemctl status firewalld

-重啟
systemctl start firewalld


使用root登入:

移除ftpusers 裡面的帳號
vim /etc/vsftpd/ftpusers
找到root 前面加上#號註解


移除user_list裡面的帳號
vim /etc/vsftpd/user_list
找到root 前面加上#號註解

-重啟VSFTPd
systemctl restart vsftpd.service
--------------------------------------------------------------------------------