# 更新yum yum update -y
新入的JD雲服務器,發現防火牆默認是關閉的。javascript
# 查看防火牆狀態 systemctl status firewalld # 啓動 systemctl start firewalld # 中止 systemctl disable firewalld # 禁用 systemctl stop firewalld # 開機時啓用 systemctl enable firewalld.service # 開機時禁用 systemctl disable firewalld.service # 查看全部打開的端口 firewall-cmd --zone=public --list-ports # 放開一個端口 firewall-cmd --zone=public --add-port=80/tcp --permanent # 關閉一個端口 firewall-cmd --zone= public --remove-port=80/tcp --permanent # 重載規則 firewall-cmd --reload
wget -qO- https://raw.githubusercontent.com/nvm-sh/nvm/v0.34.0/install.sh | bash # 激活nvm source ~/.nvm/nvm.sh # 安裝node nvm install node # 切換到該版本 nvm use node
使用 nvm 管理 node 版本css
# 安裝某版本 好比 4.2.2 nvm install 4.2.2 # 列出遠程服務器上全部可用版本 nvm ls-remote # 在不一樣版本間切換 nvm use 4.2.2 #安裝最新版 Node nvm install node #切換到最新版 nvm use node #列出已安裝實例 nvm ls #安裝最新不穩定版本 nvm install unstable
# 新環境須要gcc gcc-c++ yum install -y gcc gcc-c++ make # 下載 openssl 以支持 ssl 功能 # http://www.openssl.org/ wget https://www.openssl.org/source/openssl-1.1.1.tar.gz # 下載 zlib 支持 gzip # http://www.zlib.net/ wget http://www.zlib.net/zlib-1.2.11.tar.gz # 下載 pcre 支持 rewrite # http://www.pcre.org/ wget https://ftp.pcre.org/pub/pcre/pcre-8.43.tar.gz # 下載 nginx # http://nginx.org/en/download.html wget http://nginx.org/download/nginx-1.16.0.tar.gz # 解壓 tar zxvf openssl-1.1.1.tar.gz tar zxvf zlib-1.2.11.tar.gz tar zxvf pcre-8.43.tar.gz tar zxvf nginx-1.16.0.tar.gz # 安裝PCRE庫 cd /usr/local/pcre-8.43 ./configure make && make install # 安裝SSL庫 cd /usr/local/openssl-1.1.1 ./config make && make install # 安裝zlib庫 cd /usr/local/zlib-1.2.11 ./configure make && make install # 將nginx目錄重命名 mv nginx-1.16.0 nginx; cd nginx/ # 安裝nginx ./configure --user=nobody --group=nobody --prefix=/usr/local/nginx --with-http_stub_status_module --with-http_gzip_static_module --with-http_realip_module --with-http_sub_module --with-http_ssl_module --with-pcre=/usr/local/pcre-8.43 --with-zlib=/usr/local/zlib-1.2.11 --with-openssl=/usr/local/openssl-1.1.1 make && make install # 配置開機啓動 cd /lib/systemd/system vim nginx.service [Unit] Description=nginx After=network.target [Service] Type=forking ExecStart=/usr/local/nginx/sbin/nginx ExecReload=/usr/local/nginx/sbin/nginx reload ExecStop=/usr/local/nginx/sbin/nginx quit PrivateTmp=true [Install] WantedBy=multi-user.target # 保存退出 systemctl enable nginx.service # 經常使用命令 systemctl start nginx.service # 啓動,也可使用sbin/nginx啓動 systemctl stop nginx.service # 結束nginx systemctl restart nginx.service # 重啓,可以使用sbin/nginx -s reload # 配置文件 vim /usr/local/nginx/conf/nginx.conf # 啓動服務 # 啓動 /usr/local/nginx/sbin/nginx # 重啓 /usr/local/nginx/sbin/nginx -s reload # 中止 /usr/local/nginx/sbin/nginx -s quit /usr/local/nginx/sbin/nginx -s stop # 查看運行狀態 ps -ef|grep nginx
修改配置文件html
user root; worker_processes 1; #error_log logs/error.log; #error_log logs/error.log notice; #error_log logs/error.log info; #pid logs/nginx.pid; events { worker_connections 1024; } http { include mime.types; default_type application/octet-stream; #log_format main '$remote_addr - $remote_user [$time_local] "$request" ' # '$status $body_bytes_sent "$http_referer" ' # '"$http_user_agent" "$http_x_forwarded_for"'; access_log off; sendfile on; #tcp_nopush on; #keepalive_timeout 0; keepalive_timeout 65; # 開啓gzip gzip on; gzip_buffers 32 4k; gzip_comp_level 4; gzip_min_length 400; gzip_types text/plain application/xml application/javascript; gzip_vary on; server { listen 80; server_name www.abc.com; #charset koi8-r; #access_log logs/host.access.log main; location / { root /home/www/civ; index index.html index.htm; try_files $uri $uri/ /index.html?$query_string; } #error_page 404 /404.html; # redirect server error pages to the static page /50x.html # error_page 500 502 503 504 /50x.html; location = /50x.html { root html; } } # ssl server { listen 443; server_name test.abc.com; ssl on; ssl_certificate /etc/ssl/server.crt; ssl_certificate_key /etc/ssl/server.key; ssl_session_timeout 5m; ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4; ssl_protocols TLSv1 TLSv1.1 TLSv1.2; ssl_prefer_server_ciphers on; location / { root /home/www/test; index index.html; } } # 80 sub site server { listen 80; server_name sub.abc.com; location / { root /home/www/sub; index index.html; try_files $uri $uri/ /index.html?$query_string; } } # proxy go-service server { listen 80; server_name api.abc.com; charset utf-8; access_log /home/www/go/src/api.abc.com.access.log; location /(css|js|fonts|img)/ { access_log off; expires 1d; root "/home/www/go/src/static"; try_files $uri @backend; } location / { try_files /_not_exists_ @backend; } location @backend { proxy_set_header X-Forwarded-For $remote_addr; proxy_set_header Host $http_host; proxy_pass http://127.0.0.1:8080; } } }
報錯:java
# 1. 若是啓動遇到下面的錯誤 [root@JD nginx]# /usr/local/nginx/sbin/nginx nginx: [alert] could not open error log file: open() "/usr/local/nginx/logs/error.log" failed (2: No such file or directory) 2019/07/30 16:00:41 [emerg] 8243#0: open() "/usr/local/nginx/logs/access.log" failed (2: No such file or directory) # 多是沒有logs目錄致使 # 在nginx目錄下新建一個logs文件夾就能夠了 mkdir logs
yum install docker # 啓動 Docker 的守護進程 service docker start # 系統啓動時運行 chkconfig docker on # 查看當前正在運行的容器 docker ps -a # 建立容器 docker create # 建立容器並啓動 docker run # 退出容器 ctrl+d # 啓動容器 docker start # 中止容器 docker stop
# 安裝 vsftpd 和 ftp yum install -y vsftpd yum install ftp # 爲了在服務器測試ftp鏈接 # 啓動ftp service vsftpd start # 設置開機啓動 systemctl enable vsftpd.service # 查看vsftpd服務是否已開啓 ps -e|grep vsftpd # 查看vsftpd監聽端口 netstat -ntpl | grep vsftpd # 開啓防火牆 # 能夠經過服務器安全組設置入站規則開啓21端口 # 放開21端口 firewall-cmd --zone=public --add-port=21/tcp --permanent # 永久開放 ftp 服務 firewall-cmd --add-service=ftp --permanent # 關閉ftp服務 firewall-cmd --remove-service=ftp --permanent # 重啓ftp服務 service vsftpd restart # 或者 systemctl restart vsftpd # vsftpd 的配置目錄爲 /etc/vsftpd vi /etc/vsftpd/vsftpd.conf anonymous_enable=NO # 禁止匿名登錄 pam_service_name=vsftpd userlist_enable=NO allow_writeable_chroot=YES # 建立用戶 useradd -s /sbin/nologin -d /usr/local/web jehorn passwd jehorn # 給文件夾增長讀寫權限 chmod o+w /usr/local/web/ # 或者 chmod 775 /usr/local/web/ chmod 777 /usr/local/web/ # 若是須要從新設置用戶主目錄 usermod -d /usr/local/web/ jehorn # 刪除用戶 userdel -rf jehorn # 變動用戶屬性 usermod -s /sbin/nologin jehorn (/bin/bash:能夠登陸shell,/bin/false:禁止登陸shell ) # 本地測試ftp服務 ftp localhost # 輸入用戶名 密碼 # 若是出現如下提示表示配置成功 230 Login successful. Remote system type is UNIX. Using binary mode to transfer files.
ftp客戶端鏈接:
這裏使用xftp6示例:
注意這裏不使用被動模式,被動模式須要配置隨機端口,這裏再也不贅述。node
# 拉取鏡像 docker pull fauria/vsftpd # 建立vsftpd的container docker run -d -p 21:21 -p 20:20 -p 21100-21110:21100-21110 -v /usr/local/web:/home/vsftpd -e FTP_USER=root -e FTP_PASS=123456-e PASV_ADDRESS=123.456.789.0 -e PASV_MIN_PORT=21100 -e PASV_MAX_PORT=21110 --name vsftpd --restart=always fauria/vsftpd # -p進行端口綁定映射 # -v進行文件目錄的映射 FTP_UESR 和FTP_PASS若是設定了會在container裏面的 # /etc/vsftpd/virtual_users.txt # PASV_MIN_PORT和PASV_MAX_PORT映射的是被動模式下端口使用範圍 # PASV_ADDRESS指的的宿主機地址 # 添加用戶 # 進入當前實例 docker exec -i -t vsftpd bash # 新建用戶文件夾 mkdir /home/vsftpd/jehorn # 可能會存在沒有權限問題 chown -R ftp:ftp /home/vsftpd # 編輯配置文件寫入用戶跟密碼 vi /etc/vsftpd/virtual_users.txt # 把登陸的驗證信息寫入數據庫 /usr/bin/db_load -T -t hash -f /etc/vsftpd/virtual_users.txt /etc/vsftpd/virtual_users.db # 重啓 docker restart vsftpd
# 如下命令還將在系統防火牆中打開HTTP和SSH訪問。 sudo yum install -y curl policycoreutils-python openssh-server sudo systemctl enable sshd sudo systemctl start sshd sudo firewall-cmd --permanent --add-service=http sudo systemctl reload firewalld # 安裝Postfix以發送通知電子郵件 sudo yum install postfix sudo systemctl enable postfix sudo systemctl start postfix # 添加GitLab包存儲庫 # curl https://packages.gitlab.com/install/repositories/gitlab/gitlab-ee/script.rpm.sh | sudo bash # 安裝GitLab包。將https://gitlab.example.com更改成您要訪問GitLab實例的URL。 # sudo EXTERNAL_URL="https://gitlab.example.com" yum install -y gitlab-ee # 因爲官方給出的下載地址實在太慢 # 使用 https://mirrors.tuna.tsinghua.edu.cn/gitlab-ce/yum/el7/ 下載 wget https://mirrors.tuna.tsinghua.edu.cn/gitlab-ce/yum/el7/gitlab-ce-12.1.3-ce.0.el7.x86_64.rpm rpm -ivh gitlab-ce-12.1.3-ce.0.el7.x86_64.rpm # 修改配置 vim /etc/gitlab/gitlab.rb # 修改url external_url 'http://gitlab.example.com/' # :1015 # nginx['redirect_http_to_https'] =true # nginx['ssl_certificate'] = "/etc/gitlab/ssl/server.crt" # nginx['ssl_certificate_key'] = "/etc/gitlab/ssl/server.key" # 因爲服務器一般已經開啓了單獨了nginx服務 # 因此須要禁用gitlab內置nginx # 禁用內置NG nginx['enable'] = false # 指定NG的用戶名 web_server['external_users'] = ['nginx'] # 添加NG地址到信任列表,我這裏就是本機地址 gitlab_rails['trusted_proxies'] = ['127.0.0.1'] # 配置監聽網絡:tcp gitlab_workhorse['listen_network'] = "tcp" # 配置GitLab的地址和端口 gitlab_workhorse['listen_addr'] = "127.0.0.1:8020" # 到這裏執行 gitlab-ctl reconfigure 可能會拋出錯誤,提示 用戶nginx不存在 # There was an error running gitlab-ctl reconfigure: # account[Webserver user and group] (gitlab::web-server line 27) had an error: Mixlib::ShellOut::ShellCommandFailed: group[Webserver user and group] (/opt/gitlab/embedded/cookbooks/cache/cookbooks/package/resources/account.rb line 38) had an error: Mixlib::ShellOut::ShellCommandFailed: Expected process to exit with [0], but received '3' # ---- Begin output of ["gpasswd", "-a", "nginx", "gitlab-www"] ---- # STDOUT: # STDERR: gpasswd: user 'nginx' does not exist # ---- End output of ["gpasswd", "-a", "nginx", "gitlab-www"] ---- # Ran ["gpasswd", "-a", "nginx", "gitlab-www"] returned 3 # 能夠新增一個用戶 adduser nginx # 而後將nginx.conf的user改成nginx後重啓服務便可 # 應用配置 gitlab-ctl reconfigure # 修改外部nginx配置 server { listen 443; server_name gitlab.example.com; ssl on; ssl_certificate /etc/ssl/gitlab-cert19080152759628cbb70f4f.crt; ssl_certificate_key /etc/ssl/gitlab-cert19080152759628cbb70f4f.key; ssl_session_timeout 5m; ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4; ssl_protocols TLSv1 TLSv1.1 TLSv1.2; ssl_prefer_server_ciphers on; location / { proxy_pass http://127.0.0.1:8020; } } # 重啓nginx服務 /usr/local/nginx/sbin/nginx -s reload
而後從瀏覽器打開 https://gitlab.example.com/,會提示你輸入密碼,輸入完成後使用root+剛纔輸入的密碼登陸便可。python
gitlab經常使用命令:linux
gitlab-ctl start # 啓動全部 gitlab 組件; gitlab-ctl stop # 中止全部 gitlab 組件; gitlab-ctl restart # 重啓全部 gitlab 組件; gitlab-ctl status # 查看服務狀態; gitlab-ctl reconfigure # 啓動服務; vim /etc/gitlab/gitlab.rb # 修改默認的配置文件; gitlab-rake gitlab:check SANITIZE=true --trace # 檢查gitlab; gitlab-ctl tail # 查看日誌;
配置 gitlab 郵箱 postfix:
查看各類郵箱配置能夠參考 https://docs.gitlab.com/omnibus/settings/smtp.html#example-configurationsnginx
# 查看 postfix 狀態 systemctl status postfix # 這是設置outlook郵箱的示例 vim /etc/gitlab/gitlab.rb gitlab_rails['smtp_enable'] = true gitlab_rails['smtp_address'] = "smtp.office365.com" gitlab_rails['smtp_port'] = 587 gitlab_rails['smtp_user_name'] = "root@outlook.com" gitlab_rails['smtp_password'] = "12345six" gitlab_rails['smtp_domain'] = "outlook.com" gitlab_rails['smtp_authentication'] = "login" gitlab_rails['smtp_enable_starttls_auto'] = true gitlab_rails['smtp_openssl_verify_mode'] = 'peer' gitlab_rails['gitlab_email_from'] = 'jehornguu@outlook.com' gitlab_rails['gitlab_email_display_name'] = 'Jehorn Git' gitlab_rails['gitlab_email_reply_to'] = 'jehornguu@outlook.com' # 重啓配置 gitlab-ctl reconfigure # 測試郵件服務 gitlab-rails console Notify.test_email('example@163.com', '郵件標題_test', '郵件正文_test').deliver_now # 出現如下表示成功 # irb(main):002:0> Notify.test_email('example@163.com', '_test', '_test').deliver_now Notify#test_email: processed outbound mail in 0.7ms Sent mail to example@163.com (1263.8ms) Date: Thu, 01 Aug 2019 16:30:12 +0800 From: Jehorn Git <example@outlook.com> Reply-To: Jehorn Git <example@outlook.com> To: example@163.com Message-ID: <5d42a31478d32_30e3ff7990cf9b011813@JD.mail> Subject: _test Mime-Version: 1.0 Content-Type: text/html; charset=UTF-8 Content-Transfer-Encoding: 7bit Auto-Submitted: auto-generated X-Auto-Response-Suppress: All <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" "http://www.w3.org/TR/REC-html40/loose.dtd"> <html><body><p>_test</p></body></html> => #<Mail::Message:70332342294800, Multipart: false, Headers: <Date: Thu, 01 Aug 2019 16:30:12 +0800>, <From: Jehorn Git <example@outlook.com>>, <Reply-To: Jehorn Git <example@outlook.com>>, <To: example@163.com>, <Message-ID: <5d42a31478d32_30e3ff7990cf9b011813@JD.mail>>, <Subject: _test>, <Mime-Version: 1.0>, <Content-Type: text/html; charset=UTF-8>, <Content-Transfer-Encoding: 7bit>, <Auto-Submitted: auto-generated>, <X-Auto-Response-Suppress: All>>
**若是郵件發送失敗,看一下是否是郵箱沒有開啓POP、smtp服務。*
**遇到了登陸422的問題,且尚無解決辦法。*c++
# 查詢gitlab鏡像 docker search gitlab # 咱們選擇穩定版 docker pull gitlab/gitlab-ce # 運行鏡像 docker run -d -p 8020:443 -p 8021:80 -p 222:22 -p 587:587 --name gitlab --restart always -v /home/gitlab/config:/etc/gitlab -v /home/gitlab/logs:/var/log/gitlab -v /home/gitlab/data:/var/opt/gitlab gitlab/gitlab-ce # -d:後臺運行 # -p:將容器內部端口向外映射 # --name:命名容器名稱 # -v:將容器內數據文件夾或者日誌、配置等文件夾掛載到宿主機指定目錄 # gitlab.rb文件內容默認全是註釋 vim /home/gitlab/config/gitlab.rb # 配置http協議所使用的訪問地址,不加端口號默認爲80 external_url 'https://git.example.com' # 配置ssh協議所使用的訪問地址和端口 gitlab_rails['gitlab_ssh_host'] = 'https://git.example.com' gitlab_rails['gitlab_shell_ssh_port'] = 222 # 此端口是run時22端口映射的222端口:wq #保存配置文件並退出 # 重啓gitlab docker restart gitlab # 因爲我是統一一個nginx管理 # 因此在nginx配置代理 server { listen 443; server_name gitlab.example.com; ssl on; ssl_certificate /etc/ssl/gitlab-cert19080152759628cbb70f4f.crt; ssl_certificate_key /etc/ssl/gitlab-cert19080152759628cbb70f4f.key; ssl_session_timeout 5m; ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4; ssl_protocols TLSv1 TLSv1.1 TLSv1.2; ssl_prefer_server_ciphers on; location / { proxy_pass http://127.0.0.1:8021; } } # 重啓nginx服務 /usr/local/nginx/sbin/nginx -s reload # 配置郵箱參見5.1 # 配置郵箱後須要進入bash應用配置 docker exec -it gitlab bash gitlab-ctl reconfigure gitlab-rails console # console調試 # 注意配置完成後重啓docker gitlab exit docker restart gitlab
若是出現如下錯誤:git
Error response from daemon: Cannot restart container gitlab: driver failed programming external connectivity on endpoint gitlab (5b2b1b646aea89819e84926057431d119eabd25a0bfe49247b468bde14103367): (iptables failed: iptables --wait -t nat -A DOCKER -p tcp -d 0/0 --dport 8021 -j DNAT --to-destination 172.17.0.2:80 ! -i docker0: iptables: No chain/target/match by that name.
基本能夠經過重啓docker解決.
systemctl restart docker
查看日誌:
docker logs -f -t --tail=10 f41c6a557eb6
**跑起來之後內存大概常駐40%(8G物理內存)。*
未完待續 最後更新 2019-8-4 03:41:37