1.Ubuntu
===
更新套件(ssh用完才處理)
---
```
sudo apt update
sudo apt list --upgradable #列出需要更新的是哪幾個套件
sudo apt upgrade (直接enter)
sudo apt install vim
```
其他設定
---
```
vim .bashrc
#修改history的行數
HISTSIZE=1000000
HISTFILESIZE=2000000
#一律使用vim
alias vi='vim'
```
2.Python
===
安裝 Python(先跳過,Ubuntu22,預設就應該是3.10)
---
```
#sudo apt install python3.10-venv #venv(先不用)
python3 --version #測試真的有安裝python
sudo apt-get install python3.10 #(無效)
ls /usr/bin/python*
#python3 -m venv base #安裝python通用環境(先不用)
```

安裝 pip
---
```
cd ~
mkdir Tools
cd Tools
wget https://bootstrap.pypa.io/get-pip.py
python3 get-pip.py
#如果看到:[ModuleNotFoundError: No module named 'distutils.cmd'],那代表Ubuntu版本可能裝錯喽!!
```

```
cd ~
vi ~/.bashrc
#在最後加上:
export PATH=$PATH:/home/eric325/.local/bin
```
```
source ~/.bashrc
```
安裝 Python套件
---
|大數據相關|後端相關|地理資訊|資料庫連線|圖像影像相關|其他|
|:--|:--|:--|:--|:--|:--|
| numpy | django |gdal|cx-Oracle|matplotlib|pytz|
| pandas | django-extensions ||SQLAlchemy|python3-tk|asyncio|
| polars | django-cors-headers||| opencv-python|bleak|
依實際需求安裝
```
pip3 install numpy
pip3 install matplotlib
pip3 install pytz
pip3 install asyncio
pip3 install bleak
pip3 install django
pip3 install django-extensions
pip3 install django-cors-headers
pip3 install pandas
pip3 install polars
pip3 install opencv-python
pip3 install SQLAlchemy
sudo apt-get install python3-tk
pip3 install cx-Oracle
```
安裝 gdal套件(linux)
---
```
sudo apt update
sudo apt install software-properties-common
sudo add-apt-repository ppa:ubuntugis/ppa
sudo apt-get update
sudo apt-get install gdal-bin
ogrinfo --version #查看版本
sudo apt-get install libgdal-dev
export CPLUS_INCLUDE_PATH=/usr/include/gdal
export C_INCLUDE_PATH=/usr/include/gdal
ogrinfo --version #查看版本
pip3 install GDAL==<GDAL VERSION FROM OGRINFO> #輸入版本
```
3.Postgres
===
安裝 Postgres
---
```
sudo apt install postgresql postgresql-contrib
sudo systemctl start postgresql.service
sudo systemctl enable postgresql.service
sudo apt install postgis #(先不要)
```
```
sudo -u postgres psql
CREATE DATABASE ericdb;
CREATE USER eric WITH PASSWORD 'abc123';
ALTER ROLE eric SET client_encoding TO 'utf8';
ALTER ROLE eric SET default_transaction_isolation TO 'read committed';
ALTER ROLE eric SET timezone TO 'UTC'; #(先不要)
GRANT ALL PRIVILEGES ON DATABASE ericdb TO eric;
\du
\l
\q
```
設定 Postgres
---
```
sudo vi /etc/postgresql/14/main/pg_ident.conf #(可以先不做)
```

```
sudo vi /etc/postgresql/14/main/pg_hba.conf
```


#舊

```
sudo systemctl start postgresql
sudo systemctl restart postgresql
sudo systemctl enable postgresql
#下載postgis
sudo apt install postgis
```
補充:重啟postgre的語法
```
sudo systemctl restart postgresql
```
進入 Postgres
---
```
SYSTEM_USERNAME 與 PG-USERNAME 不同時要輸入USER(-U)
psql ericdb -U eric
abc123
```
4.Apache
===
安裝 Apache
---
```
sudo apt install httpd httpd-devel#(這個不做,非Ubuntu,centOS)
[error內容]
E: Package 'httpd' has no installation candidate
E: Unable to locate package httpd-devel
sudo apt install apache2
sudo systemctl start apache2.service
sudo systemctl enable apache2.service
sudo vi /etc/apache2/sites-available/000-default.conf
```
```
#在"DocumentRoot /var/www/html"下面加上一行:
Options +FollowSymLinks
```
```
#這句重要:
cd ~
chmod +x ./
```
```
sudo apachectl restart
#這樣就可以直接做軟連結到/var/www/html/
mkdir /home/eric325/Public
cd /var/www/html
sudo ln -s /home/eric325/Public
#這樣就可以用http://ip/Public連上了
```
```
----------------------------------------
```
啟用防火牆並設定權限(舊,先不做)
---
```
sudo apt install ufw #如果沒有ufw的話先跑這行
sudo ufw allow 22 #ssh 要先開不然ssh會斷掉
sudo ufw allow http #若不希望開80prot可以不要開
sudo ufw allow https
# 下面這兩行好像預設就有
sudo ufw default deny incoming
sudo ufw default allow outgoing
sudo ufw enable #防火牆 啟動
sudo ufw status verbose #查看防火牆狀態
```
安裝 Apache(舊,先不做)
---
```
sudo apt update && sudo apt install apache2 #更新存儲庫(Repositories)和安裝 Apache
sudo ufw allow OpenSSH #設置防火牆
sudo ufw allow in "Apache Full"
sudo ufw enable #啟用防火牆
sudo ufw status #查看防火牆狀態
sudo service apache2 status #測試Apache狀態
```

```
sudo apt install net-tools #下載net-tools
sudo netstat -ntulp #查看Apache
```

確認 Apache(舊,先不做)
---
輸入ip

建立軟連結(舊,先不做)
---
```
sudo vi /etca
#在"DocumentRoot /var/www/html"下面加上一行:
Options +FollowSymLinks
建立頁面
mkdir /home/$USER/Public
sudo ln -s /home/$USER/Public /var/www/html/ #建立軟連結
#如果建錯可以unlink資料夾 sudo unlink /var/www/Public
```
5.SSL
===
安裝 SSL
---
選擇裝置後按照網頁說明操作
certbot網頁:
https://certbot.eff.org/instructions?ws=nginx&os=ubuntufocal
6.Django
===
安裝 Django
---
```
cd ~
#建立專案
django-admin startproject hoonedb
cd hoonedb/
#建立app
django-admin startapp hoonedata
```
設定 Django
---
```
vi hoonedb/settings.py
#修改以下:
ALLOWED_HOSTS = ['104.154.185.193 ','localhost','bot.hoone.com.tw'] #第一欄放自己IP
INSTALLED_APPS = [
...
'django_extensions',
'django.contrib.gis',
'hoonedata',
'corsheaders',
]
MIDDLEWARE = [
...
...
'corsheaders.middleware.CorsMiddleware',#要加在CommonMiddleware前面
...
]
CORS_ORIGIN_ALLOW_ALL = True #加這行
TEMPLATES = [
{
...
'DIRS': [BASE_DIR / 'templates'],
...
}
]
DATABASES = {
'default': {
# 'ENGINE': 'django.db.backends.sqlite3',
# 'NAME': BASE_DIR / 'db.sqlite3',
'ENGINE': 'django.contrib.gis.db.backends.postgis',
'NAME': 'ericdb',
'USER': 'eric',
'PASSWORD': 'abc123',
'HOST':'',
'PORT':'',
}
}
LANGUAGE_CODE = 'zh-Hant'
TIME_ZONE='Asia/Taipei'
USE_TZ = False
STATIC_ROOT='/home/eric325/hoonedb/static/' #加這行
STATIC_URL = '/static/'
DEFAULT_AUTO_FIELD = 'django.db.models.BigAutoField' #加這行
SESSION_COOKIE_AGE=31536000 #加這行
MEDIA_URL = '/media/' #加這行
MEDIA_ROOT ='/home/eric325/hoonedb/media/' #加這行
SECURE_CROSS_ORIGIN_OPENER_POLICY=None #加這行(new)
```
連接 Django+Apache+wsgi
---
設定檔
```
sudo vi /etc/apache2/site-available/hoone.conf
```
```
Alias /static/ /home/eric325/hoonedb/static/
Alias /media/ /home/eric325/hoonedb/media/
<Directory /home/eric325/hoonedb/static>
Require all granted
</Directory>
<Directory /home/eric325/hoonedb/hoonedb>
<Files wsgi.py>
Require all granted
</Files>
</Directory>
<Directory /home/eric325/hoonedb/media>
Require all granted
</Directory>
#WSGIDaemonProcess hoonedb python-path=/home/eric325/hoonedb:/home/eric325/.local/lib/python3/lib/python3.7/site-packages user=eric325
WSGIDaemonProcess hoonedb python-path=/home/eric325/hoonedb:/home/eric325/.local/lib/python3.10/site-packages user=eric325
WSGIProcessGroup localhost
WSGIScriptAlias /hoone /home/eric325/hoonedb/hoonedb/wsgi.py process-group=hoonedb
```
設定檔
```
cd /etc/apache2/sites-available/
sudo vim 000-default.conf
```


```
sudo apt install apache2 libapache2-mod-wsgi-py3
sudo a2ensite hoone.conf
```
admin畫面設置
---
確認honedb/honedb/下的setting.py,STATIC_ROOT路徑正確後
```
python manage.py collectstatic
```
會在honedb/下建一個static資料夾,如果沒有建立static,那admin會沒有style。
經確認style還是跑掉了,
路徑應該為:http://bot.hoone.com.tw/static/admin/js/theme.js
結果admin(get)的路徑為:http://bot.hoone.com.tw/hoone/static/admin/js/theme.js
要在setting.py再加上
```
CSRF_TRUSTED_ORIGINS=['http://bot.hoone.com.tw']
```

get的路徑才正確
創建superuser(暫緩)
---
```
pip install django-extensions
pip install django-cors-headers
pip install psycopg2
python3 manage.py createsuperuser
(eric/hoone@7710)
```