wordpress架設網站筆記

1. 購買Linode虛擬主機

購買教學

1. 選擇每月5美元的方案即可,
2. 使用 ubuntu 16.04 LTS 鏡像
3. 每月 1TB 免費流量
4. 20GB 硬碟空間
5. 每月2美金,提供自動備份(每日和每周),手動備份(隨時可以)

2. 使用ssh帳號登入Linode主機

Linode主機預設帳號是root
密碼是創建虛擬主機時指定的

1. 從 Linode Dashboard 啟動虛擬機
2. ssh root@xxx.xxx.xxx.xxx  # xxx.xxx.xxx.xxx 是您的虛擬機ip

3. 安裝vim

維護雲端機器,一定要學會如何使用vim,只要學會如何編輯,存檔就可以了

鳥哥的linux私房菜

有時會因為ipv6的關係,造成apt-get卡住,所以前三條指令會暫時關閉ipv6

1. echo 1 > /proc/sys/net/ipv6/conf/all/disable_ipv6
2. echo 1 > /proc/sys/net/ipv6/conf/default/disable_ipv6
3. echo 1 > /proc/sys/net/ipv6/conf/lo/disable_ipv6
4. apt-get update
5. apt-get upgrade
6. apt-get install vim

3. 創建新使用者

Linode預設是root登入,十分容易受到攻擊
所以我們必須創建一個新的使用者,並且取消root登入
如果不在意被攻擊,那步驟 3~5 可以無視

1. useradd example -m -s /bin/bash                  # 新增登入帳號,範例: example
2. passwd example                                   # 設定登入密碼
3. 現在開始可以使用" ssh example@xxx.xxx.xxx.xxx "登入

4. 將使用者example加入sudolist

因為我們不使用root帳號登入,所以需要使用sudo來使用系統權限

1. chmod 755 /etc/sudoers
2. vim /etc/sudoers
3. 將" example ALL=(ALL:ALL) ALL " 加入最後一行
4. chmod 400 /etc/sudoers
5. 登出重新以example帳號登入

5. 取消root登入

1. sudo vim /etc/ssh/sshd_config
2. 找到這行   " PermitRootLogin yes "
3. 將它變更為 " PermitRootLogin no "
4. sudo service ssh reload
5. 從此後無法使用root登入

6. 安裝Mariadb

MySQL已被Oracle收購,即將由地球上消失,請無視它
MariaDB完全相容MySQL

1. sudo apt-get install mariadb-server
2. sudo mysql -uroot                    # 試登入, 鍵入" exit; " 即可離開

6. 更改Mariadb系統管理者密碼

下面密碼123456只是範例說明

1. sudo mysql -uroot #登入
2. use mysql;
3. update user set plugin='' where User='root';
4. update user set password=PASSWORD("123456") where User='root';
5. flush privileges;
6. exit;
7. sudo mysql -uroot -p123456 #試登入,確定上述步驟無誤

7. 為wordpress新增專屬資料庫

1. sudo mysql -uroot -p123456                                  # 登入
2. CREATE DATABASE wordpress;                                  # 增加資料庫wordpress
3. CREATE USER wordpressuser@localhost IDENTIFIED BY '123456'; # 只允許本地登入,帳號wordpressuser
4. GRANT ALL PRIVILEGES ON wordpress.* TO wordpressuser@localhost; #賦予所有操作權限
5. FLUSH PRIVILEGES;
6. exit;
7. sudo mysql -uwordpressuser -p123456                         #試登入,確定上述步驟無誤

8. 安裝nginx反向代理伺服器,及php套件

1. sudo apt-get install nginx
2. sudo apt-get install php-gd
3. sudo apt-get install php-ssh2
4. sudo apt-get install php-fpm
5. sudo apt-get install php-mysql
6. 此時您可以用PC的瀏覽器並鍵入 " http://xxx.xxx.xxx.xxx " 做測試,此時可以看見Welcome to nginx!

9. 下載wordpress套件

您可以去中文官網下載
以下為了一貫性使用命令列下載

1. wget https://tw.wordpress.org/latest-zh_TW.tar.gz # 下載
2. tar -zxv -f latest-zh_TW.tar.gz                   # 解壓縮,此時目錄下會有一個wordpress目錄
3. sudo chown -R www-data.www-data wordpress         # 變更目錄所有權為 www-data.www-data
4. sudo chmod -R g+w wordpress                       # 所有www-data群組成員皆可存取此目錄
5. sudo usermod -g www-data example                  # 將使用者example加入此群組
6. 重新登入,取得新權限

10. 新增上傳資料夾

這個資料夾很重要,您上傳的檔案和下載的佈景主題未來都放這裡

1. mkdir wordpress/wp-content/uploads
2. sudo chown www-data.www-data wordpress/wp-content/uploads

11. 編輯wp-config.php

將資料庫連線帳號和密碼告知wordpress
將上傳檔案和佈景主題位置告知wordpress

1. cd wordpress ; cp wp-config-sample.php wp-config.php
2. vim wp-config.php
3. 找到這三行
   define('DB_NAME', 'database_name_here');
   define('DB_USER', 'username_here');
   define('DB_PASSWORD', 'password_here');
4. 改成我們步驟7所建立的資料庫和帳密
   define('DB_NAME', 'wordpress');
   define('DB_USER', 'wordpressuser');
   define('DB_PASSWORD', '123456');
5. 並將這兩行放到檔案末端
   define('UPLOADS', 'wp-content/uploads');
   define('FS_METHOD', 'direct');

12. php設定

編輯php.ini
範例為 /etc/php/7.0/fpm/php.ini

格式為 /etc/php/版本號/fpm/php.ini
若版本變更,請碼農們隨機應變

upload_max_filesize

增加上傳檔案大小,須配合代理伺服器nginx設定

cgi.fix_pathinfo

安全性設定,不可以執行cgi

此步驟可跳過日後再說

1. sudo vim /etc/php/7.0/fpm/php.ini
2. 找到這行 " upload_max_filesize = 2M "
3. 改成    " upload_max_filesize = 5M "
4. 找到這行 " ;cgi.fix_pathinfo=1 "
5. 改成    " cgi.fix_pathinfo=0 "

13. 設定nginx代理伺服器

更換php版本請注意這行” fastcgi_pass unix:/run/php/php7.0-fpm.sock; “
/run/php/php7.0-fpm.sock 會有所變動

你可以使用下列命令來調查新的 unix socket name address
netstat -xl | grep php

上傳檔案大小改這行” client_max_body_size 5M; “ 這裡是第一關, php.ini是第二關

1. sudo vim /etc/nginx/sites-available/default
2. 找到
   server {
           很多內容
   }
3. 換成
    server {

        listen 80;
        server_name _;

            root /home/example/wordpress;
            index index.php index.html index.htm;

        client_body_in_file_only clean;
            client_body_buffer_size 32K;
            client_max_body_size 5M;
            sendfile on;
            send_timeout 300s;


            location / {
                    # try_files $uri $uri/ =404;
                    try_files $uri $uri/ /index.php?q=$uri&$args;
            }

            error_page 404 /404.html;

            error_page 500 502 503 504 /50x.html;
            location = /50x.html {
                    root /usr/share/nginx/html;
            }

            location ~ \.php$ {
            include snippets/fastcgi-php.conf;
                    fastcgi_pass unix:/run/php/php7.0-fpm.sock;
            }
    }

14. 重啟服務

1. sudo service nginx restart
2. sudo systemctl restart php7.0-fpm
3. 使用瀏覽器鍵入 " http://xxx.xxx.xxx.xxx " 來做第一次設定
4. 後台網址為" http://xxx.xxx.xxx.xxx/admin " # 帳密是您做第一次設定時決定的

15. 當您申請domain name後

請記得到wordpress後台
設定 -> 一般
將WordPress 位址(URL)
網站位址(URL)
改成你的domain name