Start wordpress

pull/142/head
Baohua Yang 2022-03-23 16:43:56 -07:00
parent 70f0a87901
commit 456d2aede7
8 changed files with 290 additions and 1 deletions

View File

@ -45,6 +45,9 @@ See [hyperledger_fabric](hyperledger_fabric) for more details.
## [kafka](kafka) ## [kafka](kafka)
Start a simple kafka service for testing. Start a simple kafka service for testing.
## [lnmp_wordpress](lnmp_wordress)
Deploy nginx, mysql, php + wordpress.
## [mongo_cluster](mongo_cluster) ## [mongo_cluster](mongo_cluster)
Start 3 mongo instance to make a replica set. Start 3 mongo instance to make a replica set.
@ -61,7 +64,7 @@ The web UI will listen on local 8081 port.
## [nginx_auth](nginx_auth) ## [nginx_auth](nginx_auth)
Use nginx as a proxy with authentication for backend application. Use nginx as a proxy with authentication for backend application.
## [packetbeat_ek](packetbeat_ek) ## [packetbeat_elk](packetbeat_elk)
Demo the packetbeat, elasticsearch and kibana. Demo the packetbeat, elasticsearch and kibana.
Some kibana [dashboard config](https://github.com/elastic/beats-dashboards) files are included. Some kibana [dashboard config](https://github.com/elastic/beats-dashboards) files are included.

View File

@ -0,0 +1,18 @@
# Wordpress
WORDPRESS_LOCAL_PATH=./wordpress_data
WORDPRESS_UPLOADS_CONFIG=./wordpress_config/uploads.ini
WORDPRESS_DB_NAME=wordpress
WORDPRESS_DB_USER=wordpress
WORDPRESS_DB_PASSWORD=dbpassword@123
# MySQL
MYSQL_LOCAL_PATH=./db_data
MYSQL_DATABASE=${WORDPRESS_DB_NAME}
MYSQL_USER=${WORDPRESS_DB_USER}
MYSQL_PASSWORD=${WORDPRESS_DB_PASSWORD}
MYSQL_ROOT_PASSWORD=rootpassword@123
# Nginx
NGINX_CONF=./nginx_conf/default.conf
NGINX_SSL_CERTS=./nginx_ssl
NGINX_LOGS=./nginx_logs/nginx

View File

@ -0,0 +1,41 @@
# LNMP+Wordpress
Deploy nginx, mysql, php + wordpress.
## Usage
1. Start the db container.
```bash
docker-compose --env-file ./.env up -d db
```
2. Start the nginx and wordpress container.
```bash
docker-compose --env-file ./.env up -d wordpress nginx
```
3. Access `https://localhost`
## Data path
* `wordpress_data`: data for wordpress.
* `wordpress_config`: config for wordpress.
* `db_data`: config for wordpress.
## Generate ssl certs
```bash
openssl req -x509 -outform pem -out server.pem -keyout privkey.pem \
-newkey rsa:4096 -nodes -sha256 -days 3650 \
-subj '/CN=localhost' -extensions EXT -config <( \
printf "[dn]\nCN=localhost\n[req]\ndistinguished_name = dn\n[EXT]\nsubjectAltName=DNS:localhost\nkeyUsage=digitalSignature\nextendedKeyUsage=serverAuth")
```
## Common wordpress configs
* permanent link;
* theme: astra;
* plugins: Contact Form 7, Updraft, Sucuri;

View File

@ -0,0 +1,70 @@
version: '3.1'
services:
wordpress: # wordpress
image: wordpress:5-fpm # fastcgi
container_name: wordpress
restart: always
env_file:
- .env
environment:
- WORDPRESS_DB_HOST=${WORDPRESS_DB_HOST:-db:3306}
- WORDPRESS_DB_NAME=${WORDPRESS_DB_NAME:-wordpress}
- WORDPRESS_DB_USER=${WORDPRESS_DB_USER:-wordpress}
- WORDPRESS_DB_PASSWORD=${WORDPRESS_DB_PASSWORD:-dbpassword@123}
ports:
- "8080:80"
volumes:
- ${WORDPRESS_LOCAL_PATH:-./wordpress_data}:/var/www/html
- ${WORDPRESS_UPLOADS_CONFIG:-./wordpress_config/uploads.ini}:/usr/local/etc/php/conf.d/uploads.ini
depends_on:
- db
db: # database
image: mysql:8
container_name: db
restart: always
env_file:
- .env
environment:
- MYSQL_DATABASE=${MYSQL_DATABASE:-wordpress}
- MYSQL_USER=${MYSQL_USER:-wordpress}
- MYSQL_PASSWORD=${MYSQL_PASSWORD:-dbpassword@123}
- MYSQL_ROOT_PASSWORD=${MYSQL_ROOT_PASSWORD:-rootpassword@123}
volumes:
- ${MYSQL_LOCAL_PATH:-./db_data}:/var/lib/mysql
command:
- '--default-authentication-plugin=mysql_native_password'
nginx:
# default ports 80, 443 - expose mapping as needed to host
image: nginx:1
container_name: nginx
restart: unless-stopped
env_file:
- .env
ports:
- "80:80" # http
- "443:443" # https
volumes:
- ${WORDPRESS_LOCAL_PATH:-./wordpress_data}:/var/www/html
- ${NGINX_CONF:-./nginx_conf/default.conf}:/etc/nginx/conf.d/default.conf
- ${NGINX_SSL_CERTS:-./nginx_ssl}:/etc/ssl:ro
- ${NGINX_LOGS:-./nginx_logs/nginx}:/var/log/nginx
depends_on:
- wordpress
- db
adminer: # lightweighted mysql manage tool, bypasses nginx
# default port 9000
image: adminer:4-fastcgi
container_name: adminer
restart: unless-stopped
depends_on:
- db
ports:
- "9000:9000"
volumes:
wordpress:
db:

View File

@ -0,0 +1,71 @@
# default.conf
# redirect to HTTPS
server {
listen 80;
listen [::]:80;
server_name $host;
location / {
# update port as needed for host mapped https
rewrite ^ https://$host:8443$request_uri? permanent;
}
}
server {
listen 443 ssl http2;
listen [::]:443 ssl http2;
server_name $host;
index index.php index.html index.htm;
root /var/www/html;
server_tokens off;
client_max_body_size 75M;
# update ssl files as required by your deployment
ssl_certificate /etc/ssl/server.pem;
ssl_certificate_key /etc/ssl/privkey.pem;
# logging
access_log /var/log/nginx/wordpress.access.log;
error_log /var/log/nginx/wordpress.error.log;
# some security headers ( optional )
add_header X-Frame-Options "SAMEORIGIN" always;
add_header X-XSS-Protection "1; mode=block" always;
add_header X-Content-Type-Options "nosniff" always;
add_header Referrer-Policy "no-referrer-when-downgrade" always;
add_header Content-Security-Policy "default-src * data: 'unsafe-eval' 'unsafe-inline'" always;
location / {
try_files $uri $uri/ /index.php$is_args$args;
}
location ~ \.php$ {
try_files $uri = 404;
fastcgi_split_path_info ^(.+\.php)(/.+)$;
fastcgi_pass wordpress:9000;
fastcgi_index index.php;
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_param PATH_INFO $fastcgi_path_info;
}
location ~ /\.ht {
deny all;
}
location = /favicon.ico {
log_not_found off; access_log off;
}
location = /favicon.svg {
log_not_found off; access_log off;
}
location = /robots.txt {
log_not_found off; access_log off; allow all;
}
location ~* \.(css|gif|ico|jpeg|jpg|js|png)$ {
expires max;
log_not_found off;
}
}

View File

@ -0,0 +1,52 @@
-----BEGIN PRIVATE KEY-----
MIIJQQIBADANBgkqhkiG9w0BAQEFAASCCSswggknAgEAAoICAQC51tn/S/Hz/Azp
d2Xm40mUIm5ISxRz2gU+hAnfpgUe2b8bOC5Ld6dqXWcycN5v/44Ps2B2ShyG5Ndh
9qpNmScZNxvgERQf5Dx/tBiCK7QOvmUF2ZyzTyRfNSR+Ck18FgEqCxu4tvnTpjwj
Ta2YfckbXP9iKRk1r0yH16Kz3brfgBFFZ3oAam6kf1WREpFhvVcEWRbiXynzJZuc
UG9oSA0brSejF/QgH6OAdlVfy2zkzretLPxHtBDHtwKkIingrUpMIMjswYlyKzb9
vGQy80d/FZHaz7PfIJJfgVyspAOUr/d6aBToz1Eclg6LKgJrJQKBkg1hI4aqZ7rw
94SW5Rztojhj1NA76Ek7qcZ4R2cttQSyZs3Q8DxSoTrPzZKa9dV84ti+ZamdPfe5
zX9hdC3xRq7PCAdjQOyJDNsjiz6ZEMctjPedj3uOP0ktly1dqavh901aCmrLuhDe
Ia2BFPkEHOSSztNQFO+TbsL6BG35SoIwqlQD8OQOUo6zEZ18Yau70I47qrcvurRs
FktibPNTIhq1AWglFbfWlz4zTRhxaWhzttwViirJ+1cra0JJZrXxoGttDX8lGYld
zz9Alzwwl+VI1JE+0OYu9eni9uMCv4rTQ0skRK5x/ATR7dEXxdVlQLyMPVN1xRKY
lTo8SCLdkJHP/+R5WV9VkX81Tq9z1QIDAQABAoICAG2YOB1nszuYxCCW6kB8f7Ld
jz4REPG1fGw+v/fl15U3Ao3R1vNokBGZHbfQek2AX04BEf0QfbxLjn1WU17J2BX1
uvmr+LtKBSemlOGHVntvavJFQDU6kg+XrnqqJsHr1CnwPRv0xGY93a9QKvUIESaS
9IT2CcjwJWjjES+TrpYJ16WffYJrQe6+rT6NvbDvUTbeNzGuv3WGEzve76SHATv2
JK74/F5Jakni/zwsIn7ZLdbx9aFvnom48tTK1PmMGInGt9dv11e+BoMiq9CkSeC3
Xrm0zbXjZo7uIjIp03bHQ2IrqVEWmhYKpG8LijuXqt+wuzUzF0K9Q7DBt66pVSII
RKImNa0fWxelicZwYUAmWarJWxun9ZslxISwtsqbzCdDG4tdibB+wQP8tT4yeYg6
tTviq2MSMzkuYGoH2/Yc6pA3R6Bu0kgZ38cSMPV9ITY4Y/QjhVnSFkwJAupKS4SH
8sQnsz9xNugYOKJYnUQV+W3InJqgiN0xONzYvSHSOvYWemVYiejArQ63IYy/Ze6K
jITV13/tbZcR5RK6+CwiiYFlRBgQwq/YqkAY1uV5x+dajLg1jcniwuM+v/cccn2U
eWrkbZRI5LDQMMC3WM/AaT88eDQXbSjPA1Ll0DcNhOEg3GcQrE8XDDNlGiVHYerj
vlTH+/yqUXpbYtNLVnPNAoIBAQDzLRqMnk0k1J1T4S8RJzAHKQOSXsY3pTxM96U8
TbFc5BBW7KOR0Am9XJRoIq6sLm2Im4u+GPoke8HsEzyVPf+wfK5CECZR00CXRTmy
byD/x6xfPY3TkPaLJLmhwtrFEuEfEfWHQqPl7scewNZPFZ9x5DKllbXQftSl/Eua
eIctoLWKLMu3cdmpdGjR6dwRzPTL1f9AXUfUDQve2zDubiSGxV32um8vnXQz+FK8
1OoQ+ReSMQu8flhkat7eJmkQRR2rjnRRz7Do4KgbxNi5lZ1+KvtQygksa55VhvP1
0QXjo/hkPscmS/3fQ9REjL3DAYEIOXad//DaG3Ywk/4UnrnfAoIBAQDDo7H4i8f7
PuS9z/UwZYs8ue1094Kd0m9c16CRQmZkFl7mZZtreRhMXjday7Zknh8X8VhyEbd6
oLlyM8erMAFXwVNpWQm1RupVKQGSW20uiIjo48eUxZ8cajzJa5khKBwsL88zDH7S
QxzZdXl4ecoacmWFO/mxcDPdUnOkdsbhmV9oSMItcfwX9FqlW2YQ1yz+ZdUnm8Qn
MgMBYRB6X3VRgddKVrJsT9mHXxs3Swoi3XPr50mHYkPD4NXtRGMbJZyp4ioH1Hyf
Nr/iE36Qgzgc/zgXp2FthsckxZ2htl5gQY5rM82nZ2GeqRF/0l2tGLWGQ4ixia2R
a3b05DQNj/DLAoIBAF0AGu88e3Rie+jgbge5XPzgCqWn6VbOsskczOzLKdHExxr3
VXcmgRMSnQ9WdEcVWn6sPj1tf/0D9545nSnWlDsC9AH/+yfACyvPJcnABnbL/nhO
KjeHcUK1wOjEhLZqCf6/947LRbNiJnT0ewGz207LXzNElkwutVTlsGRbRBeHJua5
Sw/VUtEj3BKrxaZpJBXwubX79sR6WNfaLFSDeySvxsfddThYl2Boz/u30ey71u/q
IfrstxFwbdu4BOZcCITb7lB7hcUKZkB4gAo51gmylnrHScrbPaqn+hVA42e0BgMQ
n0leNrF0V3IAAXLa2GY009CJWauQZRse/kUUjzECggEAOiOnfAluQMgMCiyG3P8Q
RderLZtwgZ5L4fdijEiDTTMouKdxbJrsEaXeJWlsprIm42KhuiRxtkuVUM76g3Ec
tQuK0j/XlrugX/ZztR7eb3m71hn68cdY5YTc067aLvRQiwEaPj10Yt/27tjuZFMt
MHbWnKWaKpUBlMAwBawWpmyB4efdbMv28td3KLTkvBR2FpQEqGSuAkfmhL5nuzYr
EzHW3QyusWl5Z7VnzSLLvFi7Xlu5ijY1lTx31q8AFM00pXfErdcDwfzvQSwx7JhS
UKu366+eUIJBJDhmA+zCVzCkNk+Kyjj61b/Ap4/Iruws5d2j/b7Aifq5u0UmAvHH
yQKCAQBPmZ+q1SJNBQOptxxv6xgQLiiXQX8CkqzhyyPtukXVjy5gDptC18cimTb6
bIOlcL/sL2H05P+ePdZZ6xdVbYvN60xgcKLEv3OG5Aqu/3VfJ5RozmFDtbmweAR/
u9+oqhmFAycAQoYoZ8pcFLYoaTUCwOR/jBTNZCjKxzgv3xlXS8KccZiZATdtgUHV
wDYHl0PM2tEbULB/UNdXpfPUlhskiGuWkc7wTfjUesDaQYPZ1eA7KN0fBwItsATK
VS7YsBc1rF/BEmhbpFXkYuN9phoBMQemr+2viF2e+1Y/8i92hhBPoVO5/N0OlmkK
NpVcbXWV1qtpYhHUegbi9RwI/lA3
-----END PRIVATE KEY-----

View File

@ -0,0 +1,29 @@
-----BEGIN CERTIFICATE-----
MIIE5TCCAs2gAwIBAgIJALi7L9AV9qyEMA0GCSqGSIb3DQEBCwUAMBQxEjAQBgNV
BAMMCWxvY2FsaG9zdDAeFw0yMjAzMjMyMjI0MTVaFw0zMjAzMjAyMjI0MTVaMBQx
EjAQBgNVBAMMCWxvY2FsaG9zdDCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoC
ggIBALnW2f9L8fP8DOl3ZebjSZQibkhLFHPaBT6ECd+mBR7Zvxs4Lkt3p2pdZzJw
3m//jg+zYHZKHIbk12H2qk2ZJxk3G+ARFB/kPH+0GIIrtA6+ZQXZnLNPJF81JH4K
TXwWASoLG7i2+dOmPCNNrZh9yRtc/2IpGTWvTIfXorPdut+AEUVnegBqbqR/VZES
kWG9VwRZFuJfKfMlm5xQb2hIDRutJ6MX9CAfo4B2VV/LbOTOt60s/Ee0EMe3AqQi
KeCtSkwgyOzBiXIrNv28ZDLzR38VkdrPs98gkl+BXKykA5Sv93poFOjPURyWDosq
AmslAoGSDWEjhqpnuvD3hJblHO2iOGPU0DvoSTupxnhHZy21BLJmzdDwPFKhOs/N
kpr11Xzi2L5lqZ0997nNf2F0LfFGrs8IB2NA7IkM2yOLPpkQxy2M952Pe44/SS2X
LV2pq+H3TVoKasu6EN4hrYEU+QQc5JLO01AU75NuwvoEbflKgjCqVAPw5A5SjrMR
nXxhq7vQjjuqty+6tGwWS2Js81MiGrUBaCUVt9aXPjNNGHFpaHO23BWKKsn7Vytr
QklmtfGga20NfyUZiV3PP0CXPDCX5UjUkT7Q5i716eL24wK/itNDSyRErnH8BNHt
0RfF1WVAvIw9U3XFEpiVOjxIIt2Qkc//5HlZX1WRfzVOr3PVAgMBAAGjOjA4MBQG
A1UdEQQNMAuCCWxvY2FsaG9zdDALBgNVHQ8EBAMCB4AwEwYDVR0lBAwwCgYIKwYB
BQUHAwEwDQYJKoZIhvcNAQELBQADggIBABWUIEnyXtYum8z91dUqkuZwjunO9Uct
82B19m7P40fehgX6MoO5FWSOumfhtRcdrEA8j82xsN9ZQ/huwjQBviIwvLe6Wobp
Ocqx6Q+w0dZ0Mnn0R7St58l9qASlIkCXk6HV/zN9lBZbGmNeaL3i7B5Co6jTEE+z
0jW/snkvU5N1KEFCygMzqzPQA5xZAMC/qtnuIEAr6KUgv9BVsZTiYuUWUPcja2So
J91hBk+RA+JXORYOWPYL2KMKRlKVcC0jumArCjszxwdnhbtRlCIKN/HIEwQoDm7B
VNpn2XjeiQ29FKdhPWD/JAEOwVEK1evwq/83ZLgFHrgictFEM1EaLCtEtWrYvpVF
PCMnp0/zy5CrI/WRjXNJsh5YkPbnW7WgTmQl0QwFhRrCQYH24QqB8CclwvZoQViv
A1FogOjYv0SFYL3C5JuOqU5KWH3r/V4Xl7QCPob4b5Wgglbh/YqjYrgHx0WdD4aV
d4tiY0vAEgrLviAGhzWt1A8uI34Iwwm3zO4lLIWx6yDCfnSwbHzto9cg2TDsClu+
b4oLWwkZMef7dXMwZ8fMs6d344uWX0+fGLFNomqA8t9xF54dkHe10InzxnJ3cl3O
JeiK63kCICv9oJoOZco+aUCJQFKG+WJ1bzVbqofFr66HARGTYqkV+340Als4TX8t
l9Pv6oLN6QpH
-----END CERTIFICATE-----

View File

@ -0,0 +1,5 @@
file_uploads = On
memory_limit = 256M
upload_max_filesize = 75M
post_max_size = 75M
max_execution_time = 600